인덱스(Index)
인덱스는 데이터베이스 테이블에서 데이터 검색 속도를 높이기 위해 데이터베이스에서 사용하는 데이터 구조 입니다. Outsystems의 경우 엔터티에서 인덱스를 사용할 수 있습니다.
인덱스가 데이터 검색 속도를 높일 수 있지만 그에 따른 비용이 들 수 있습니다. 저장 공간을 차지하는 것 외에도 데이터가 변경될 때마다 인덱스도 기존 데이터와 일치하도록 변경해야 합니다. 예를 들어 삽입 또는 업데이트가 있습니다.
특정 속성에 집합에 대한 인덱스를 정의하면 해당 속성을 기반으로 데이터를 선택할 때 데이터 검색속도가 빨라집니다.
참조 속성이 좋은 예이며 이러한 인덱스가 자동으로 생성되는 이유입니다.
자체 사용자 지정인덱스도 만들 수 있습니다.
인덱스를 너무 많이 추가하면 실제로 성능 문제가 발생할 수 있지만 올바른 인덱스를 생성하면 성능이 향상될 수 있습니다.
인덱스를 만드는 또다른 이유는 데이터의 중복을 피하기 위해서입니다.
고유 인덱스의 예시로는 특정 주문에 대한 제품 인스턴스가 하나만 존재한다는 것입니다.
즉, 주문 ID 미 제품ID 세트는 엔터티에서 고유합니다. 이러면 동일한 제품을 여러 번 주문하는 것을 방지할 수 있습니다. 동일한 제품을 여러번 주문하려면 수량 속성이 정의되어야합니다.
인덱스는 관계의 고유성에 도움이 될 수 있지만 삭제 규칙이라는 것이 존재합니다.
다른 엔터티에 대한 참조인 특성에는 삭제 규칙 속성이 있습니다. 이 속성은 참조된 엔터티에서 레코드를 삭제할 때 적용되므로 매우 중요할 수 있습니다.
삭제 규칙 내에는 3가지 선택사항이 존재합니다.
- Protect(보호) : 즉, 삭제를 허용하지 않습니다.
- Delete(삭제) : 삭제를 선택하면 계단식으로 참조하는 모든 레코드가 삭제됩니다. 고객을 삭제하면 모든 주문도 삭제해야 합니다
- Ignore : 참조 무결성을 보장하지 않기 때문에 아무 작업도 수행하지 않는 Ignore라는 선택항목도 있습니다. 고객이 삭제되면 Ignore는 주문을 보호하지 않지만 삭제하지도 않습니다.
인덱스 생성방법
- 같은 제품의 주문이 2번 들어가는 경우를 방지하기 위해 인덱스를 만들어야 하는 상황
해당 엔터티를 클릭하고 우측 하단에 Indexs and more을 클릭합니다.
새 인덱스를 생성하려면 new 버튼을 클릭하고 이름을 설정하기만 하면 됩니다.
이름은 다음과 같이 만들어주었습니다. UniqueProductPerOrder
이 인덱스는 고유하기 때문에 고유 속성을 Yes로 해줍니다.
이제 인덱스에 속성을 추가해야 합니다.
주문 ID와 제품 ID를 추가하면 인덱스 만들기는 끝입니다.
외래키 삭제
- 고객에 연결된 여러가지 주문들이 있는데 고객을 삭제하려고 하면 주문과 고객 간의 참조로 인해 에러가 발생
먼저 Order 엔터티에서 RequestedBy속성의 Delete Rule가 Protect로 되어 있음을 확인 이는 주문이 있는 고객을 삭제할 수 없음을 의미 따라서 Protect를 Delete로 변경하면 고객이 삭제될때 주문도 삭제된다.
'로우코드(Lowcode) > outsystems' 카테고리의 다른 글
outsystems - Block Events (0) | 2023.05.12 |
---|---|
outsystems-Blocks (0) | 2023.05.12 |
outsystems- 식별자(Identifier), 참조, 관계 (0) | 2023.05.09 |
outsystems - How to Use the List and ListItem (0) | 2023.05.05 |
outsystems - How To Fetch Data in an Aggregate and filter Data and SORT Data and Test Values (0) | 2023.05.04 |