인덱스 바이너리

마지막 업데이트: 2022년 2월 3일 | 0개 댓글
  • 네이버 블로그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 트위터 공유하기
  • 카카오스토리 공유하기

글로벌 보조 인덱스 관리

이 단원에서는 Amazon DynamoDB에서 글로벌 보조 인덱스를 생성, 수정 및 삭제하는 방법을 설명합니다.

주제

글로벌 보조 인덱스를 사용하는 테이블 생성

하나 이상의 글로벌 보조 인덱스를 사용하는 테이블을 생성하려면 CreateTable 작업에 GlobalSecondaryIndexes 파라미터를 추가하면 됩니다. 쿼리 인덱스 바이너리 유연성을 극대화하도록 테이블당 최대 20개의 글로벌 보조 인덱스(기본 할당량)를 생성할 수 있습니다.

보조 파티션 키의 역할을 할 속성 한 가지를 지정해야 합니다. 선택 사항으로 인덱스 정렬 키에 또 하나의 속성을 지정할 수 있습니다. 그렇다고 두 가지 키 속성 중 하나가 테이블의 키 속성과 반드시 같을 필요는 없습니다. 예를 들어 GameScores 테이블(DynamoDB에서 글로벌 보조 인덱스 사용 참조)에서는 TopScore 와 TopScoreDateTime 둘 다 키 속성이 아닙니다. 파티션 키가 TopScore 이고 정렬 키가 TopScoreDateTime 인 글로벌 보조 인덱스를 생성할 수 있습니다. 이러한 인덱스는 최고 점수와 경기 시간 사이의 상관관계 여부를 판단할 때 사용됩니다.

각 인덱스 키 속성은 String , Number 또는 Binary 형식의 스칼라여야 합니다. (문서 또는 집합일 수 없습니다.) 모든 데이터 형식의 속성을 글로벌 보조 인덱스로 프로젝션할 수 있습니다. 여기에는 스칼라, 문서, 집합이 포함됩니다. 데이터 형식에 대한 전체 목록은 데이터 유형 단원을 참조하세요.

프로비저닝된 모드를 사용할 경우 인덱스의 ProvisionedThroughput 설정값은 ReadCapacityUnits 와 WriteCapacityUnits 로 구성하여 입력해야 합니다. 여기에서 프로비저닝 처리량 설정 값은 테이블의 설정 값과 다르지만 동작 방식은 비슷합니다. 자세한 정보는 글로벌 보조 인덱스에서 프로비저닝된 처리량 고려 사항을 참조하십시오.

글로벌 보조 인덱스는 기본 테이블에서 읽기/쓰기 용량 모드를 상속합니다. 자세한 정보는 읽기/쓰기 용량 모드 변경 시 고려 사항을 참조하십시오.

채우기 작업과 진행 중인 쓰기 작업은 글로벌 보조 인덱스 내의 쓰기 처리량을 공유합니다. 새 GSI를 생성할 때 파티션 키를 선택하면 새 인덱스의 파티션 키 값에서 균일하지 않거나 좁은 데이터 또는 트래픽 분산이 생성되는지 확인하는 것이 중요할 수 있습니다. 이 경우 채우기 및 쓰기 작업이 동시에 발생하고 쓰기가 기본 테이블로 제한될 수 있습니다. 이 서비스는 이 시나리오의 잠재력을 최소화하는 조치를 취하지만 인덱스 파티션 키, 선택한 프로젝션 또는 인덱스 기본 키의 희소성과 관련하여 고객 데이터의 형태를 파악하지 못합니다.

새 글로벌 보조 인덱스에서 파티션 키 값의 데이터 또는 분포가 좁거나 왜곡되어 있다고 의심되는 경우 운영상 중요한 테이블에 새 인덱스를 추가하기 전에 다음을 고려하세요.

애플리케이션에서 최소 양의 트래픽을 유도하고 있을 때 인덱스를 추가하는 것이 가장 안전할 수 있습니다.

기본 테이블 및 인덱스에서 CloudWatch Contributor Insights를 활성화하는 것이 좋습니다. 이렇게 하면 트래픽 분포에 대한 중요한 정보를 얻을 수 있습니다.

프로비저닝된 용량 모드 기본 테이블 및 인덱스의 경우 새 인덱스의 프로비저닝된 쓰기 용량을 기본 테이블의 두 배 이상으로 설정합니다. 프로세스 전체에 WriteThrottleEvents , ThrottledRequests , OnlineIndexPercentageProgress , OnlineIndexConsumedWriteCapacity 및 OnlineIndexThrottleEvents CloudWatch 지표를 감시합니다. 진행 중인 작업을 크게 제한하지 않고 채우기를 적절한 시간에 완료하려면 프로비저닝된 쓰기 용량을 필요에 따라 조정합니다.

쓰기 제한으로 인해 작업에 영향을 받고 새 GSI에서 프로비저닝된 쓰기 용량을 늘려도 문제가 해결되지 않는 경우 인덱스 생성을 취소할 수 있어야 합니다.

테이블에 있는 글로벌 보조 인덱스에 대한 설명

테이블에 속한 모든 글로벌 보조 인덱스의 상태를 확인하려면 DescribeTable 작업을 사용합니다. 응답에서 GlobalSecondaryIndexes 부분은 현재 각 인덱스 상태( IndexStatus )와 함께 테이블에 속한 모든 인덱스를 나타냅니다.

글로벌 보조 인덱스의 IndexStatus 는 다음 중 하나입니다.

CREATING - 현재 인덱스를 생성 중이며, 아직 사용할 수 없습니다.

ACTIVE - 현재 인덱스가 사용 인덱스 바이너리 대기 상태이며, 애플리케이션이 인덱스에 대한 Query 작업을 실행할 수 있습니다.

UPDATING - 인덱스의 프로비저닝된 처리량 설정을 변경 중입니다.

DELETING - 현재 인덱스를 삭제하고 있으며 더 이상 사용할 수 없습니다.

DynamoDB가 글로벌 보조 인덱스 빌드를 마치면 인덱스 상태는 CREATING 에서 ACTIVE 로 바뀝니다.

기존 테이블에 글로벌 보조 인덱스 추가

글로벌 보조 인덱스를 기존 테이블에 추가하려면 UpdateTable 작업에 GlobalSecondaryIndexUpdates 파라미터를 사용합니다. 이때 입력해야 하는 정보는 다음과 같습니다.

인덱스 이름. 인덱스 이름은 모든 테이블 인덱스 중에서 식별할 수 있도록 고유해야 합니다.

인덱스의 키 스키마. 인덱스 파티션 키로 한 가지 속성을 반드시 지정해야 하며, 인덱스 정렬 키는 옵션으로 다른 속성을 지정할 수 있습니다. 그렇다고 두 가지 키 속성 중 하나가 테이블의 키 속성과 반드시 같을 필요는 없습니다. 각 스키마 속성의 데이터 형식은 스칼라( String , Number 또는 Binary )가 되어야 합니다.

테이블에서 인덱스로 가져올 속성:

KEYS_ONLY - 인덱스의 각 항목은 테이블 파티션 키 및 정렬 키 값, 그리고 인덱스 키 값으로만 구성됩니다.

INCLUDE - KEYS_ONLY 에서 설명한 속성 외에도 지정하는 키가 아닌 다른 속성이 보조 인덱스에 포함됩니다.

ALL - 인덱스에 소스 테이블의 모든 속성이 포함됩니다.

인덱스의 할당 처리량 설정 값( ReadCapacityUnits 와 WriteCapacityUnits 로 구성). 이러한 프로비저닝된 처리량 설정은 테이블의 설정과 별개입니다.

UpdateTable 작업당 글로벌 보조 인덱스를 1개만 생성할 수 있습니다.

인덱스 생성 단계

새로운 글로벌 보조 인덱스를 기존 테이블에 추가하는 경우 인덱스 빌드 중에도 테이블을 계속 사용할 수 있습니다. 하지만 쿼리 작업 중에는 상태가 CREATING 에서 ACTIVE 로 바뀔 때까지 새로운 인덱스를 사용할 수 없습니다.

글로벌 보조 인덱스 생성에는 Application Auto Scaling이 사용되지 않습니다. MIN Application Auto Scaling 용량을 늘려도 글로벌 보조 인덱스의 생성 시간이 단축되지는 않습니다.

내부적으로 DynamoDB는 다음 두 단계로 인덱스를 빌드합니다.

DynamoDB가 인덱스 빌드에 필요한 컴퓨팅 및 스토리지 리소스를 할당합니다.

리소스 할당 단계에서는 IndexStatus 속성이 CREATING 이고, Backfilling 속성이 false입니다. DescribeTable 작업으로 테이블과 테이블에 속한 모든 보조 인덱스의 상태를 가져옵니다.

인덱스가 리소스 할당 단계에 있는 동안에는 인덱스를 삭제하거나 상위 테이블을 삭제할 수 없습니다. 또한 인덱스 또는 테이블의 프로비저닝된 처리량을 수정할 수 없습니다. 테이블에 다른 인덱스를 추가하거나 삭제할 수 없습니다. 그러나 이와 같은 다른 인덱스의 프로비저닝된 처리양을 수정할 수는 있습니다.

채우기 작업(Backfilling)

테이블의 각 항목에 대해 DynamoDB는 프로젝션( KEYS_ONLY , INCLUDE 또는 ALL )에 따라 인덱스에 쓸 속성 집합을 결정합니다. 그런 다음 결정된 속성을 인덱스에 기록합니다. DynamoDB가 채우기(backfill) 단계에 들어서면 테이블에서 추가, 삭제 또는 업데이트되는 항목을 추적합니다. 그리고, 이러한 항목들의 속성이 인덱스에서도 추가, 삭제 또는 업데이트됩니다.

채우기 단계에서는 IndexStatus 속성이 CREATING 으로 설정되어 있고 Backfilling 속성은 true입니다. DescribeTable 작업으로 테이블과 테이블에 속한 모든 보조 인덱스의 상태를 가져옵니다.

인덱스 채우기 중에는 상위 테이블을 삭제할 수 없습니다. 단, 인덱스를 삭제하거나 테이블과 테이블에 속한 글로벌 보조 인덱스의 프로비저닝된 처리량을 변경하는 것은 가능합니다.

채우기 단계에서 불일치 항목이 있을 경우 쓰기 작업이 성공하는 경우도 있고 거부될 수도 있습니다. 채우기 단계가 끝나면 새 인덱스의 키 스키마를 위반하는 모든 항목에 대한 쓰기 작업은 거부됩니다. 따라서 채우기 단계 이후에는 위반 감지기 도구를 실행하여 발생했을 수도 있는 키 위반을 찾아내 해결하는 것이 좋습니다. 자세한 정보는 인덱스 키 위반 검색 및 수정을 참조하십시오.

리소스 할당 및 채우기 단계가 진행 중일 때 인덱스는 CREATING 상태입니다. 이 단계에서 DynamoDB는 테이블에서 읽기 작업을 수행합니다. 글로벌 보조 인덱스를 채우기 위한 기본 테이블의 읽기 작업에는 요금이 부과되지 않습니다. 그러나 새로 생성된 글로벌 보조 인덱스를 채우기 위한 쓰기 작업에는 요금이 청구됩니다.

인덱스 빌드를 마치면 상태가 ACTIVE 로 바뀝니다. 인덱스가 ACTIVE 상태가 되기 전에는 Query 또는 Scan 작업을 할 수 없습니다.

경우에 따라 인덱스 키 위반으로 인해 DynamoDB가 테이블의 데이터를 인덱스에 쓰지 못할 수도 있습니다. 이러한 상황은 다음과 같은 경우에 발생할 수 있습니다.

속성 값의 데이터 형식이 인덱스 키 스키마 데이터 형식의 데이터 형식과 일치하지 않습니다.

속성 크기가 인덱스 키 속성의 최대 길이를 초과합니다.

인덱스 키 속성에 빈 문자열 또는 빈 이진 속성 값이 있습니다.

인덱스 키 위반이 발생해도 글로벌 보조 인덱스 생성은 방해를 받지 않습니다. 그러나 인덱스가 ACTIVE 상태가 되면 인덱스에는 위반 키가 존재하지 않습니다.

DynamoDB는 이러한 문제를 찾아 해결하기 위한 독립형 도구를 제공합니다. 자세한 정보는 인덱스 키 위반 검색 및 수정을 참조하십시오.

큰 테이블에 글로벌 보조 인덱스 추가

글로벌 보조 인덱스 빌드에 소요되는 시간은 다음과 같은 몇 가지 요인에 따라 달라집니다.

인덱스에 추가할 수 있는 테이블 항목 수

인덱스 빌드 중 메인 테이블에 대한 쓰기 작업

아주 큰 테이블에 글로벌 보조 인덱스를 추가할 때는 생성 프로세스가 완료되는 데 인덱스 바이너리 인덱스 바이너리 오래 걸릴 수 있습니다. 이때 진행 상황을 모니터링하여 인덱스의 쓰기 용량이 충분한지 확인하려면 다음 Amazon CloudWatch 지표를 참조하세요.

DynamoDB와 관련된 CloudWatch 지표에 대한 자세한 내용은 DynamoDB 지표 단원을 참조하세요.

인덱스에 프로비저닝된 쓰기 처리량 설정 값이 낮을 수록 인덱스 빌드에 걸리는 시간이 길어집니다. 따라서 새로운 글로벌 보조 인덱스의 빌드 시간을 단축하려면 프로비저닝된 쓰기 용량을 일시적으로 높여야 합니다.

일반적으로 인덱스에 할당된 쓰기 용량은 테이블에 할당된 쓰기 용량에 비해 1.5배로 높여 설정하는 것이 좋습니다. 이는 많은 사용 사례에 유용하지만, 실제 요건은 더 높거나 낮을 수도 있습니다.

인덱스 채움 단계에서는 DynamoDB가 내부 시스템 용량을 사용하여 테이블에서 읽어옵니다. 이는 인덱스 생성에 미치는 영향을 최소화하는 동시에 테이블의 읽기 용량이 고갈되는 것을 방지하기 위해서입니다.

하지만 수신되는 쓰기 작업 볼륨이 인덱스에 할당된 쓰기 용량을 초과할 수는 있습니다. 이는 인덱스에 대한 쓰기 작업이 몰려들면서 인덱스 생성 시간이 늘어나는 병목 현상 시나리오입니다. 따라서 인덱스 빌드 중에는 인덱스의 Amazon CloudWatch 지표를 모니터링하면서 소비되는 쓰기 용량이 프로비저닝된 용량을 초과하지 않는지 살펴보는 것이 바람직합니다. 병목 현상 시나리오에서는 인덱스에 할당된 쓰기 용량을 늘려서 채움 단계에서 쓰기 작업이 몰리는 것을 방지해야 합니다.

인덱스 생성을 마치면 정상적인 애플리케이션 사용량을 반영하여 할당된 쓰기 용량을 설정해야 합니다.

글로벌 보조 인덱스 삭제

글로벌 보조 인덱스가 더 이상 필요하지 않으면 UpdateTable 작업으로 삭제할 수 있습니다.

UpdateTable 작업당 글로벌 보조 인덱스를 하나만 삭제할 수 있습니다.

글로벌 보조 인덱스 삭제 중에도 상위 테이블의 읽기 또는 쓰기 작업에 미치는 영향은 전혀 없습니다. 삭제가 진행되는 동안에도 다른 인덱스의 할당 처리량은 변경 가능합니다.

DeleteTable 작업을 사용하여 테이블을 삭제할 때는 해당 테이블의 글로벌 보조 인덱스가 모두 삭제됩니다.

글로벌 보조 인덱스의 삭제 작업에 대해서는 계정에 요금이 부과되지 않습니다.

생성 중 글로벌 보조 인덱스 수정

인덱스 빌드 중에도 DescribeTable 작업을 사용하여 현재 진행 중인 단계를 확인할 수 있습니다. 인덱스의 설명에 포함되는 부울 속성인 Backfilling 은 DynamoDB가 현재 테이블의 항목과 함께 인덱스를 로드하고 있는지 여부를 나타냅니다. Backfilling 이 true이면 리소스 할당 단계가 끝나고 인덱스 채움 단계가 시작된 것을 의미합니다.

채움 단계가 진행 중일 때는 인덱스의 할당 처리량 파라미터를 업데이트할 수 있습니다. 이러한 파라미터 업데이트의 목적은 인덱스의 빌드 속도를 높이는 데 있습니다. 즉, 인덱스 빌드 중 인덱스의 쓰기 용량을 늘렸다가 빌드가 완료되면 용량을 줄입니다. 인덱스의 할당 인덱스 바이너리 처리량 설정 값을 변경하려면 UpdateTable 작업을 사용합니다. 그러면 인덱스 상태가 UPDATING 으로 바뀌고, Backfilling 은 인덱스를 사용할 준비가 될 때까지 true를 유지합니다.

채우기 단계 중에는 생성되고 있는 인덱스를 삭제할 수 있습니다. 이 단계에서는 테이블에(서) 다른 인덱스를 추가하거나 삭제할 수 없습니다.

인덱스가 CreateTable 작업의 일환으로 생성된 경우에는 Backfilling 속성이 DescribeTable 출력에 표시되지 않습니다. 자세한 정보는 인덱스 생성 단계을 참조하십시오.

KR100581826B1 - 이동통신 단말기의 소프트웨어 인덱스 및 애트리뷰트 매핑장치 - Google Patents

Publication number KR100581826B1 KR100581826B1 인덱스 바이너리 KR1020030087707A KR20030087707A KR100581826B1 KR 100581826 B1 KR100581826 B1 KR 100581826B1 KR 1020030087707 A KR1020030087707 A KR 1020030087707A KR 20030087707 A KR20030087707 A KR 20030087707A KR 100581826 B1 KR100581826 B1 KR 100581826B1 Authority KR South Korea Prior art keywords mapping software attribute mobile communication communication terminal Prior art date 2003-12-04 Application number KR1020030087707A Other languages English ( en ) Other versions KR20050054346A ( ko Inventor 한정희 Original Assignee 주식회사 팬택앤큐리텔 Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.) 2003-12-04 Filing date 2003-12-04 Publication date 2006-05-26 2003-12-04 Application filed by 주식회사 팬택앤큐리텔 filed Critical 주식회사 팬택앤큐리텔 2003-12-04 Priority to KR1020030087707A priority Critical patent/KR100581826B1/ko 2005-06-10 Publication of KR20050054346A publication Critical patent/KR20050054346A/ko 2006-05-26 Application granted granted Critical 2006-05-26 Publication of KR100581826B1 publication Critical patent/KR100581826B1/ko

Links

  • Espacenet
  • Global Dossier
  • Discuss
  • 238000010295 mobile communication Methods 0.000 title claims abstract description 51
  • 238000000034 method Methods 0.000 claims abstract description 18
  • 230000000875 corresponding Effects 0.000 claims description 7
  • 230000005540 biological transmission Effects 0.000 claims description 3
  • 230000004048 modification Effects 0.000 description 3
  • 238000006243 chemical reaction Methods 0.000 description 2
  • 238000004891 communication Methods 0.000 description 2
  • 238000006011 modification reaction Methods 0.000 description 2
  • 238000004040 coloring Methods 0.000 description 1
  • 238000010586 diagram Methods 0.000 description 1
  • 238000005516 engineering process Methods 0.000 description 1
  • 229920001690 polydopamine Polymers 0.000 description 1

Images

Classifications

    • H — ELECTRICITY
    • H04 — ELECTRIC COMMUNICATION TECHNIQUE
    • H04B — TRANSMISSION
    • H04B1/00 — Details of transmission systems, not covered by a single one of groups H04B3/00 - H04B13/00; Details of transmission systems not characterised by the medium used for transmission
    • H04B1/38 — Transceivers, i.e. devices in which transmitter and receiver form a structural unit and in which at least one part is used for functions of transmitting and receiving
    • H04B1/40 — Circuits

    Abstract

    본 발명은 이동통신 단말기에 포함되는 바이너리 소프트웨어마다 가지고 있는 인덱스 값인 NV(Non Volatile) 값 또는 각 소프트웨어 특성 정보를 가지고 있는 애트리뷰트 데이터를 상호 매핑시켜 줄 수 있도록 한 이동통신 단말기의 소프트웨어 인덱스 및 애트리뷰트 매핑 장치에 관한 것이다.

    본 발명에 의한 이동통신 단말기의 소프트웨어 인덱스 및 애트리뷰트 매핑 장치에 따르면, 소스 및 타겟 바이너리 소프트웨어에 대해 인덱스 값인 NV 값을 상호 매핑시켜 줌으로써, 개발자 입장에서 소프트웨어 수정이나 디버깅을 수작업으로 수행하지 않고도 단말기 기종이나 버전에 상관없이 자동으로 수정 또는 디버깅하고자 하는 NV 값들을 찾아 처리할 수 있게 되고, 이에 따라 사람의 실수와 시간적 손실을 줄일 수 있으며, 나아가 이동통신 단말기의 유지 보수시에 오류난 값들을 정확히 찾아 복원시킬 수 있게 된다.

    또한, 본 발명은 각 이동통신 단말기의 바이너리 소프트웨어에 대한 특수한 관계들을 정의한 애트리뷰트 데이터를 상호 매핑시켜 줌으로써, 개발자의 개발 효율을 향상시킬 수 있게 되고, 나아가 단말기 사용자에 대한 지속적이고 신뢰성있는 소프트웨어 업그레이드뿐 아니라 이기종 및 다른 버전의 소프트웨어간 업그레이드나 전환이 용이해 진다.

    Package binary

    패키지 바이너리는 숫자와 바이트 시퀀스 간의 간단한 변환과 varint의 인코딩 및 디코딩을 구현합니다.

    고정 크기 값을 읽고 쓰면 숫자가 변환됩니다. 고정 크기 값은 고정 크기 산술 유형 (bool, int8, uint8, int16, float32, complex64, . )이거나 고정 크기 값만 포함하는 배열 또는 구조체입니다.

    varint 함수는 가변 길이 인코딩을 사용하여 단일 정수 값을 인코딩 및 디코딩합니다. 값이 작을수록 더 적은 바이트가 필요합니다. 사양은 https://developers.google.com/protocol-buffers/docs/encoding을 참조 하십시오 .

    이 패키지는 효율성보다 단순성을 선호합니다. 특히 대규모 데이터 구조의 경우 고성능 직렬화가 필요한 클라이언트는 인코딩 / gob 패키지 또는 프로토콜 버퍼와 같은 고급 솔루션을 고려해야합니다.

    Index

    Examples

    Package files

    Constants

    MaxVarintLenN은 varint 인코딩 된 N 비트 정수의 최대 길이입니다.

    Variables

    BigEndian은 ByteOrder의 빅 엔디안 구현입니다.

    LittleEndian은 ByteOrder의 리틀 엔디안 구현입니다.

    func PutUvarint

    PutUvarint는 uint64를 buf로 인코딩하고 쓴 바이트 수를 반환합니다. 버퍼가 너무 작 으면 PutUvarint가 패닉 상태가됩니다.

    Example

    func PutVarint

    PutVarint는 int64를 buf로 인코딩하고 쓴 바이트 수를 반환합니다. 버퍼가 너무 작 으면 PutVarint가 패닉 상태가됩니다.

    Example

    func Read

    읽기는 r에서 데이터로 구조화 된 이진 데이터를 읽습니다. 데이터는 고정 크기 값 또는 고정 크기 값 조각에 대한 포인터 여야합니다. r에서 읽은 바이트는 지정된 바이트 순서를 사용하여 디코딩되어 데이터의 연속 필드에 기록됩니다. 부울 값을 디코딩 할 때 0 바이트는 false로 디코딩되고 0이 아닌 다른 바이트는 true로 디코딩됩니다. 구조체를 읽을 때 공백 (_) 필드 이름을 가진 필드의 필드 데이터는 건너 뜁니다. 즉, 빈 필드 이름이 패딩에 사용될 수 있습니다. 구조체를 읽을 때 모든 비 공백 필드를 내보내거나 읽기 패닉 상태 일 수 있습니다.

    읽은 바이트가없는 경우에만 오류가 EOF입니다. 일부 바이트 만 읽은 후 EOF가 발생하면 Read는 ErrUnexpectedEOF를 반환합니다.

    Overview of the Binary Log

    바이너리 로그는 데이터베이스에 대한 모든 변경 사항(데이터 변경 및 구조 변경)의 기록과 각 구문이 실행되는데 걸린 시간을 기록합니다. 바이너리 로그 파일 세트와 인덱스로 구성됩니다.

    즉, CREATE, ALTER, INSERT, UPDATE 와 DELETE문은 기록되지만, 데이터에 영향을 주지 않는 SELECT 와 SHOW 같은 구문은 기록되지 않습니다.만약 이러한 구문들을 기록하고 싶다면(성능 저하를 감수하고) general query log를 사용하세요.

    아무런 행도 반환하지 않는 UPDATE문이나 DELETE문의 경우처럼, 영향을 끼칠 가능성은 있었지만 실제로 끼치지는 않은 경우에도 여전히 바이너리 로그에 기록됩니다. (이는 기본 statement-based 형식에 적용됩니다. row-based 형식에는 적용되지 않습니다. Binary Log Formats을 참조하세요.)

    바이너리 로그는 로그 내용을 바탕으로 replication에서 하나 이상의 프라이머리에서 하나 이상의 레플리카로 데이터를 전송하기 위해 사용됩니다. 또한 백업을 지원하기 위해서도 사용됩니다.

    바이너리 로그가 활성화된 MariaDB 서버는 약간 더 느리게 동작합니다.

    바이너리 로그는 비밀번호 등의 민감한 정보를 포함할 수 있으므로 보호하는 것이 중요합니다.

    바이너리 로그는 일반 텍스트가 아닌 바이너리 형식으로 저장되므로 일반 텍스트 편집기로는 볼 수 없습니다. 그러나 MariaDB에는 바이너리 로그를 일반 텍스트로 처리해주는 mysqlbinlog와 같은 명령줄 도구가 포함되어 있습니다.

    Comments

    Content reproduced on this site is the property of its respective owners, and this content is not reviewed in advance by MariaDB. The views, information and opinions expressed by this content do not necessarily represent those of MariaDB or any other party.

    Binary Search Tree 22 Binary Tree Binary Search

    m-way Search Tree (2/3) 인덱스 개념과 종류 예제 (3 인덱스 바이너리 -way search tree) 100 140 Internal Nodes 30 ^ 10 ^ 25 20 ^ 60 40 ^ 55 110 120 50 70 90 170 150 160 180 200 220 Leaf Nodes 키 값 Ki는 실제로 (Ki, Ai)를 의미하며, 여기서 Ai는 데이터 레코드의 주소를 의미함 Page 14 Database by Yang-Sae Moon

    B-트리 (1/2) 인덱스 개념과 종류 Bayer & Mc. Creight가 제안 R. Bayer and C.

    B-트리 (1/2) 인덱스 개념과 종류 Bayer & Mc. Creight가 제안 R. Bayer and C. Mc. Creight, “Organization and Maintenance of Large Ordered Indexes, ” Acta Informatica 1, pp. 173 -189, 1972. B-tree? : balanced m-way search tree • m-way search tree의 균형을 유지하기 위하여 효율적인 검색/삽입/삭제 알고리즘을 제공 • B+-tree와 함께 가장 많이 사용되는 인덱스 방법 Page 16 Database by Yang-Sae Moon

    B-트리의 노드 구조 (2/2) 인덱스 개념과 종류 B-트리의 예 (3 -way) a 69 root

    B-트리의 노드 구조 (2/2) 인덱스 개념과 종류 B-트리의 예 (3 -way) a 69 root node ^ b 19 d 26 ^ j k 15 43 e 16 7 c 18 l 20 128 f 40 60 m 30 36 g n 42 o 50 58 h 100 ^ p 62 65 r 110 120 130 Page 19 internal nodes i 132 ^ q 70 138 145 ^ s t 136 ^ u 140 v 150 leaf nodes Database by Yang-Sae Moon

    B-트리에서 삽입의 예 (4/4) 인덱스 개념과 종류 반복된 삽입에 따라서 한 레벨이 증가된 B-트리

    B-트리에서 삽입의 예 (4/4) 인덱스 개념과 종류 반복된 삽입에 따라서 한 레벨이 증가된 B-트리 ao · 69 · a’ 43 · · b’ 19 d · j 7 · · e 16 · k 15 33 · 18 · e’ 26 l 20 · m 22 30 · m’ 36 · · 58 n 41 o 42 50 · · f’ 54 · c f 40 128 · · o’’ 57 o’ 59 g 60 · · p 62 Page 24 70 120 · 100 · 75 110 h 123 · r 138 · g’ q 65 c’ · · · i 132 · 145 · · r’ r’’ s t u v 122 124 130 136 140 150 Database by Yang-Sae Moon

    B-트리에서 삭제의 예 (2/3) 인덱스 개념과 종류 b b e l 20 · 26

    B-트리에서 삭제의 예 (2/3) 인덱스 개념과 종류 b b e l 20 · 26 · 40 · m 30 36 e n 42 l 26 · 30 · 40 · m 36 n 42 노드 l에서 키 값 20의 삭제 Page 27 Database by Yang-Sae Moon

    B-트리에서 삭제의 예 (3/3) a b j 15 · 19 · 43 · f

    B-트리에서 삭제의 예 (3/3) a b j 15 · 19 · 43 · f e d · 30 · 40 · · 16 · k 18 l 26 m 36 · 30 · · e d · 40 · · 19 · 16 18 d jk 43 f l m n 26 36 인덱스 바이너리 42 a b n 42 a b jk 인덱스 개념과 종류 · · 19 · 43 · e · 30 · 40 · 16 18 l 26 m 36 f n 42 노드 j에서 키 값 15의 삭제 Page 28 Database by Yang-Sae Moon

    B+-Tree Index Files A B+-tree is a rooted tree that takes the form of

    B+-Tree Index Files A B+-tree is a rooted tree that takes the form of a balanced tree in which every path from the root to a leaf is of the same length. root node internal node leaf node data block (records) Indexing and Hashing (Database System Concepts) • If the root is an internal node, it has at least 2 children. • If the root is a leaf, it can have between 0 and (n-1) values. Each node has between n/2 and n children. Each node has between (n-1)/2 and n-1 values. The block stores records. 32

    B+-Tree Node Structure Typical node of a B+-tree P 1 K 1 P 2

    B+-Tree Node Structure Typical node of a B+-tree P 1 K 1 P 2 Pn-1 Kn-1 Pn Ki are the search key values. Pi are pointers. § In case of internal nodes (non-leaf nodes), they point children nodes. § In case of leaf nodes, they point records. The search keys in a node are ordered K 1 < K 2 < K 3 <. . < Kn-1 Indexing and Hashing (Database System Concepts) 33

    Leaf Nodes in B+-Trees Properties of a leaf node: For i = 1, 2,

    Internal Nodes in B+-Trees Internal nodes form a multi-level sparse index on the leaf

    Internal Nodes in B+-Trees Internal nodes form a multi-level sparse index on the leaf nodes. For an internal node with m pointers: P 1 K 1 P 2 … Ki-1 Pi Ki … Km-1 Pm … X X < K 1 Ki-1 X < Ki X Km-1 Indexing and Hashing (Database System Concepts) 35

    Example of a B+-Tree (1/2) B+-tree for account file (n = 3) Perryridge Redwood

    Example of a B+-Tree (1/2) B+-tree for account file (n = 3) Perryridge Redwood Mianus Brighton Downtown Mianus Perryridge Perryridge Redwood Round Hill Indexing and Hashing (Database System Concepts) Redwood 217 101 110 215 102 201 218 222 305 Green Johnson Peterson Smith Hayes Williams Lyle Lindsay Turner Round Hill 750 500 600 700 400 900 700 350 36

    Example of a B+-Tree (2/2) B+-tree for account file (n = 5) Perryridge Brighton

    Example of a B+-Tree (2/2) B+-tree for account file (n = 5) Perryridge Brighton Downtown Mianus Perryridge Redwood Round Hill Leaf nodes must have between 2 and 4 values ( (n-1)/2 and n-1, with n = 5). Internal nodes other than root must have between 3 and 5 children ( n/2 and n, with n = 5). Indexing and Hashing (Database System Concepts) 37

    Observations about B+-Trees Searches can be conducted efficiently since the B+-tree contains a relatively

    Observations about B+-Trees Searches can be conducted efficiently since the B+-tree contains a relatively small number of levels. Set of leaf nodes forms a simple relation having the search key as an attribute. Indexing and Hashing (Database System Concepts) 38

    B-tree Index: Revisited (1/2) Similar to B+-tree, but B-tree allows search key values to

    B-tree Index: Revisited (1/2) Similar to B+-tree, but B-tree allows search key values to appear only once; eliminates redundant storage of search keys. Search keys in internal nodes appear nowhere else in the B-tree; an internal node includes an additional pointer field for each search key. Downtown Brighton Clearview Redwood Mianus Brighton Clearview Downtown Mianus Perryridge Redwood Round Hill Indexing and Hashing (Database System Concepts) Perryridge 217 225 101 110 215 102 201 222 305 Round Hill Green George Johnson Peterson Smith Hayes Williams Lindsay Turner 750 850 500 600 700 400 900 700 350 39

    B-tree Index: Revisited (2/2) Advantages of B-tree indexes Disadvantages of B-tree indexes l May

    B-tree Index: Revisited (2/2) Advantages of B-tree indexes Disadvantages of B-tree indexes l May use less tree nodes than a corresponding B+-tree. l Only small fraction of all search key values are found early. l Sometimes possible to find search key value before reaching leaf node. l Since fan-out of internal nodes is reduced, depth is higher than B+-tree. . l Insertion and deletion more complicated than in B+-trees. l Implementation is harder than B+-trees. The advantages of B-tress are marginal for large indexes. The structural simplicity of a B+-tree is practically preferred. Indexing and Hashing (Database System Concepts) 40

    k-d 트리 예제 인덱스 개념과 종류 b (2, 7) (10, 10) : x a

    k-d 트리 예제 인덱스 개념과 종류 b (2, 7) (10, 10) : x a (5, 4) c (9, 5) j b : y f c d (3, 1) j (4, 8) e (7, 2) g f (8, 7) : x a h g (1, 4) h (4, 3) i (8, 2) : y e i d (0, 0) Page 44 Database by Yang-Sae Moon

    R-트리 (3/6) 인덱스 개념과 종류 MBR 구성의 예 y r 12 r 13 r

    R-트리 (3/6) 인덱스 개념과 종류 MBR 구성의 예 y r 12 r 13 r 14 r 2 r 10 r 6 r 4 r 9 r 5 r 7 r 8 r 11 r 3 x Page 51 Database by Yang-Sae Moon

    R-트리 (4/6) 인덱스 개념과 종류 R-트리에 의한 공간 분할의 예 R 1 R 3

    R-트리 (4/6) 인덱스 개념과 종류 R-트리에 의한 공간 분할의 예 R 1 R 3 r 1 R 2 r 13 R 5 r 12 r 14 r 2 r 10 r 6 r 4 R 6 r 5 r 7 r 8 Page 52 r 11 r 9 r 3 R 7 Database by Yang-Sae Moon

    R-트리 (5/6) 인덱스 개념과 종류 R-트리 노드 구성 • 내부 노드 = <(mbr 1,

    R-트리 (5/6) 인덱스 개념과 종류 R-트리 노드 구성 • 내부 노드 = <(mbr 1, pointer 1), (mbr 2, pointer 2), …>• 단말 노드 = <(mbr 1, object 1), (mbr 2, object 2), …>노드 a R 1 R 2 노드 b 노드 c R 3 R 4 노드 d r 13 r 14 R 5 R 6 R 7 노드 e 노드 f r 4 r 2 r 10 r 12 r 6 Page 53 노드 g r 5 r 7 노드 h r 8 r 3 r 9 r 11 Database by Yang-Sae Moon


0 개 댓글

답장을 남겨주세요