SAP Commerce(Hybris) 면접 문답 - 섹션 1 - 데이터 모델.

6200 단어 hybrisinterview

언제 배치표를 사용해야 합니까?


배치표가 없는 모든 항목은genericitems표에 저장됩니다.이것은genericitems표를 매우 크게 만든다.이것은 데이터베이스 작업의 효율을 저하시켜 성능 문제를 야기한다.
추상적인 항목 유형을 제외한 확장된 일반 항목의 모든 항목 유형에 대한 정의가 필요합니다.

배치표를 사용할 수 없을 때?


프로젝트 유형이 초유형에서 배치를 계승했을 때기술적으로는 가능하지만, 초유형은 새로운 테이블이 있는 UNION 자구가 필요하기 때문에 성능 문제가 발생할 수 있습니다.

당신은 어떤 배치 유형 코드를 사용할 수 있습니까?


<itemtype code="UrlPolicy">
    <deployment table="UrlPolicy" typecode="18703"/>
    <attributes>
        <attribute qualifier="symbolsToReplaceRegex" type="java.lang.String">
            <persistence type="property"/>
            <modifiers read="true" write="true"/>
            <description>Some attribute</description>
        </attribute>
        ....
    </attributes>
</itemtype>
나중에 문제가 발생하지 않으려면 10000 이상의 유형 코드를 사용하십시오.Hybris 플랫폼은 0에서 10000까지의 유형 코드를 사용하기 때문입니다.

배치표는 어떤 유형의 관계를 필요로 합니까?


만약 다대다 관계가 배치표가 없다면, 그 데이터는 링크표에 저장되고, 다른 배치표가 없는 다대다 관계의 모든 데이터에 저장된다.물론 심각한 성능 문제가 발생할 수 있습니다.

하나의 부울 속성은 몇 개의 값을 저장할 수 있습니까?너는 그것에 대해 정의를 내려야 합니까?


부울 속성은 진실, 가짜, 빈 세 개의 값을 저장할 수 있다.따라서 NullPointerException 문제를 피하려면 Boolean 속성에 대한 기본값을 정의해야 합니다.
// Potential NPE
if (product.isSpecial()){
    someService.doSomething();
}

항목 유형의 이름과 속성에 대한 요구는 무엇입니까?


항목 유형 이름은 대문자로 시작해야 합니다.
항목 유형 속성은 소문자로 시작해야 합니다.
한정자 이름은 소문자로 시작해야 한다.
GeneratedUserQuery (예:GeneratedUserQuery) 를 사용해서 항목 형식 이름을 시작하지 마십시오. 이것은 Hybris 추상 클래스를 위한 것입니다.

우리는 기수가class='many'이고 속성ordered=true인 관계를 사용해야 합니까? 아니면 나쁜 방법입니까?


데이터베이스에서 읽기와 쓰기를 할 때, 기수가 '많은' 관계의 어느 쪽에서 '진짜' 로 정렬하는 옵션은 성능에 중대한 영향을 미칠 수 있다.Hybris는 무질서한 조회보다 훨씬 복잡하고 원가가 높은 항목에 대해 정의된 순서를 제공하는 복잡한 조회를 구축합니다.

기수가'many'인 관계에 대해 어떤 종류의 집합을 사용하는 것을 권장합니까?


기수가 'many' 인 관계의 어느 쪽이collection type='set '을 사용해야 합니다. 이 중 항목은 이 관계에 여러 번 나타날 수 없습니다.

CatalogVersion 속성은 디렉토리를 지원하는 유형에 고유해야 합니까?


그래.CatalogVersion 속성은 디렉토리 동기화에 대한 고유한 키의 일부이기 때문입니다.그렇지 않으면, 너는 금요일 저녁에 디버깅을 할 것이다.

우리는 유형의 유일한 속성을 위해 데이터베이스 인덱스를 정의해야 합니까?이것은 우리가 중복을 피하는 데 도움을 줄 수 있습니까?


유일한 데이터베이스는 중복이 없다는 것을 보장할 수 있다.서비스 층의 유일한 속성 검증은 데이터베이스에 중복 기록이 없다는 것을 완전히 보장할 수 없다.
따라서 이 유형의 유일한 속성에 대한 데이터베이스 인덱스를 정의해야 합니다.

한 쌍의 다중 관계의'다방면'에서 디렉터리 감지 유형을 사용하는 것은 어떤 잘못입니까?


동기화하는 동안 문제가 발생할 수 있습니다.디렉터리 감지 형식에 대한 인용이 단계 버전에서 온라인 버전으로 옮겨집니다.단계 버전에는 더 이상 참조가 없습니다.

언제 우리는 모든 유형에 대해 유일한 속성을 필요로 합니까?


자꾸 이래요.모든 유형에는 고유한 속성이 있어야 합니다.이렇게 하면 중복을 방지하고 IMPEX를 통해 가져오기/내보내기를 수행할 수 있습니다.

우리는 언제 최적화되지 않은 속성을 사용해야 합니까?


여태껏Option dontOptimize = "true"는 이 형식의 데이터를 배치된propertytable 속성에 의해 정의된 보조 테이블에 저장할 수 있습니다.propertytable가 정의되지 않으면props표에 저장할 수 있습니다.hybris는 복잡하고 비싼 검색어를 구축하여 그것을 처리합니다.

우리는 언제 새로운 하위 유형을 만들어야 합니까? 언제 없습니까?


다음과 같은 경우 기존 유형을 확장해야 합니다.
  • 모든 인스턴스에 새 속성 추가 필요
    우리는 다음과 같은 상황에서 새로운 하위 유형을 만들어야 한다.
  • 특정 인스턴스
  • 에 새 속성 추가 필요
  • 기존 속성을 재선언해야 합니다(예: 강제 변경 옵션).
  • 우리는 불필요한 색인을 어떻게 처리해야 합니까?


    우리는 불필요한 색인을 삭제해야 한다.색인은 유연한 검색에서 사용하는 속성에만 존재해야 합니다.Hybris는 대량의 데이터베이스 인덱스를 만들었는데 많은 항목이 이 인덱스를 사용하지 않았기 때문에 이 인덱스는 데이터베이스에 대한 쓰기 속도를 늦출 수 있다.

    프로젝트에서 집합을 얼마나 자주 사용해야 합니까?xml?


    집합 유형은 차단 문제를 초래할 수 있기 때문에 우리는 관계를 사용해야 한다.

    우리는 속성 정의를 변경할 수 있습니까?


    물론 가능하지만 속성 한정자를 수정하면 시스템 업데이트에 심각한 결과를 초래할 수 있습니다.
    위/아래 맞춤법을 변경하면 생성된 Getter/setter의 서명이 변경되므로 API가 호환되지 않습니다.
    맞춤법의 변경은 항목에서 속성을 삭제하는 것과 같습니다.xml, 다른 이름으로 새 것을 정의합니다.생성된 API는 이전 데이터에 더 이상 액세스할 수 없습니다.
    유형의 변화.만약 데이터베이스가 형식 변경을 지원하지 않는다면 속성 형식을 변경하면 데이터베이스 구조를 변경하지 않습니다.그러나 결과 API가 변경되어 호환되지 않으며 런타임 시 예외가 발생할 가능성이 높습니다.
    재선언 모드에서 속성 유형을 수정하면 유형 계층이 호환되지 않는 경우 오류가 발생할 수 있습니다(예: 속성 유형이 String에서 Long으로 변경됨).
    columntype (지속성 형식의 하위 태그) 가 데이터베이스 단계에서 호환된다면, 이 형식을 수정하는 데 성공할 것입니다. 그렇지 않으면 아무런 영향도 주지 않습니다.
    속성 수정자를 수정하면 읽기 및 쓰기 플래그가 코드 생성에 영향을 미쳐 API가 호환되지 않을 수 있습니다.
    모든 다른 수정기가 수정하면 서로 다른 행위를 초래할 수 있으며, 이러한 행위도 심각할 수 있으므로 반드시 상세한 검사를 해야 한다.예를 들어 고유 플래그를 추가하면 데이터가 일치하지 않을 수 있습니다.

    우리는 배치 코드나 테이블 이름을 바꿀 수 있습니까?


    배치 코드를 변경하면 치명적인 결과를 가져올 수 있다.테이블 이름을 바꾸면 새 테이블이 생기고 오래된 데이터에 대한 접근이 사라집니다.배치 태그에 지정된 유형 코드가 데이터베이스에 있는 프로젝트 PK의 일부를 구성하기 때문이다.유형 코드가 정확한 데이터베이스 테이블을 직접 가리키기 때문에 PK를 통해 항목을 빠르게 찾을 수 있습니다.테이블의 유형 코드를 변경하면 테이블의 모든 이전 항목이 더 이상 발견되지 않고 테이블과 함께 손실됩니다.

    형식 설명을 변경할 수 있습니까?


    기존 itemtype 태그의 값을 수정하면 두 버전 간의 API가 호환되지 않기 때문에 형식 설명을 변경할 수 없습니다.이것은 후방 호환성을 파괴하여 업그레이드를 더욱 어렵게 한다.

    우리는 어떻게 대형impex 수입의 성능을 높입니까?


    예를 들어, 참조 유형의 검색 값에 따라 데이터베이스 인덱스를 정의하여 IMPEX 가져오기에서 사용할 수 있습니다.
    따라와my tech blogtelegram

    좋은 웹페이지 즐겨찾기