Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Imported Korean translation from sag76
Sv translation
languageen

ClustrixDB maintains multiple copies of each slice of data to provide fault-tolerance, high-availability, and balanced reads called replicas. There are at least two physical replicas of each logical slice, stored on separate nodes. While writes are applied to all replicas simultaneously, one replica is designated as the "ranked replica" and is used for reads. This helps to keep the distribution of reads even across the cluster. The rebalancer rerank process continuously assesses cluster load balance for reads, and as necessary, may re-designate the ranked replica of a given slice to keep load even.

The following rules determine replica placement within the cluster:

  • Each slice is replicated two or more times. 

  • Replicas are distributed across the cluster for redundancy and to balance reads, writes, and disk usage.

  • No two replicas for the same slice will exist on the same node.

  • ClustrixDB will make new replicas while the database remains online, without suspending or blocking writes to the slice.

Specifying the Number of Replicas

The number of replicas is configurable by representation. For example, a user may require three replicas for the base representation of a table and only two replicas for the other representations of that table.

When creating a table, you can explicitly specify the number of replicas. If no value is specified, the value of the global default_replicas is used (default = 2).

Warning

For most workloads, the default of 2 replicas is optimal for balancing fault tolerance with performance. Setting REPLICAS = 1 will remove fault tolerance and is not recommended.

To configure the number of replicas for a specific representation at table creation:

CREATE TABLE tbl_name col_names [REPLICAS = n]

Once a table has been created, you can use an ALTER statement to modify the number of replicas:

ALTER TABLE tbl_name col_names [REPLICAS = n]

This will automatically copy your sliced data to multiple nodes until the desired number of replicas are created.

Note

Configuring additional replicas is not sufficient to ensure availability in the event of multiple simultaneous node failures. For more information on configuring your cluster for multi-node failures, see MAX_FAILURES.

Anchor
ALLNODES
ALLNODES
ALLNODES

To optimize performance, REPLICAS = ALLNODES can be used in lieu of a number to indicate that every node should maintain a full copy of a table. A complete copy of the table is maintained on every node, so writes to the table are far more expensive. By using ALLNODES, ClustrixDB is able to utilize the local copy of the table to better optimize queries. Changing small tables with very few writes to ALLNODES will reduce the need to broadcast to other nodes in the cluster to get table data. This especially helps when small tables are joined with larger tables.

ALLNODES is best used for tables that meet the following criteria:

  • Relatively small (Table Size < 10MiB)

  • Written to infrequently (Write Frequency < 1K)

  • Read from frequently (Read Frequency > 1M)

  • Used frequently in joins to other, larger tables (e.g. metadata, lookup tables)

ALLNODES should not be used for:

  • Tables that take frequent writes

  • Partitioned tables

  • In conjunction with LAZY PROTECT

REPLICAS = ALLNODES Syntax
CREATE TABLE tbl_name (col_names) [REPLICAS = ALLNODES]
ALTER  TABLE tbl_name             [REPLICAS = ALLNODES]

LAZY PROTECT

You can delay replica creation by using the LAZY PROTECT option of ALTER TABLE. When used, one replica will initially be restored to your system and additional replicas will be created in the background by the Rebalancer while other processing continues on your cluster.

For large tables, LAZY PROTECT could result in longer re-protection time, but it will have less overall impact on your cluster's performance. As before, defaulted number of replicas will be created if no specific value is supplied.

LAZY PROTECT Syntax
ALTER TABLE tbl_name  [LAZY PROTECT]    [REPLICAS = n]

While LAZY PROTECT is in progress, there may be warnings in the logs such as ALERT PROTECTION_LOST. This indicates that until all replicas have been created, the system could suffer data loss in the event of a node failure. The warnings will persist until the reprotect process is complete.

Tip

LAZY PROTECT can be particularly helpful to optimize performance during bulk data loads:

  1. Create tables with REPLICAS = 1 (and no secondary indexes)

  2. Perform the data import

  3. Create secondary indexes

  4. ALTER TABLE tbl_name LAZY PROTECT REPLICAS = n

To track the progress of a LAZY PROTECT operation, see Managing the Rebalancer.

 

Sv translation
languageko

ClustrixDB는 내결함성, 고가용성 및 균형 잡힌 읽기를 제공하기 위해 복제본이라는 각 데이터 슬라이스의 여러 복사본을 유지 관리합니다. 논리적 슬라이스는 별도의 노드에 저장된 물리적 복제본이 두 개 이상 있습니다. 쓰기가 모든 복제본에 동시에 적용되는 동안 하나의 복제본은 "순위가 매겨진 복제본(ranked replica)"으로 지정되고 읽기에 사용됩니다. 이렇게 하면 클러스터 전체에서 읽기의 분산을 균일하게 유지하는 데 도움이 됩니다. Rebalancer rerank 프로세스는 읽기에 대한 클러스터 로드 밸런스를 지속적으로 평가하고 필요에 따라 지정된 슬라이스의 "ranked replica"를 다시 지정하여 로드를 균일하게 유지할 수 있습니다.

다음 규칙은 클러스터 내의 복제본 배치를 결정합니다.

  • 각 슬라이스는 두 번 이상 복제됩니다.

  • 복제본은 중복성 및 읽기, 쓰기 및 디스크 사용 간의 균형을 유지하기 위해 클러스터에 분산됩니다.

  • 동일한 슬라이스에 대해 두 개의 복제본이 동일한 노드에 존재하지 않습니다.

  • ClustrixDB는 슬라이스에 대한 쓰기를 일시 중단하거나 차단하지 않고 데이터베이스가 온라인 상태를 유지하는 동안 새로운 복제본을 만듭니다.

복제본 수 지정

복제본 수는 representation 별로 설정할 수 있습니다. 예를 들어, 사용자는 한 테이블의 base representation에 대해서는 3개의 복제본이 필요하고 해당 테이블의 다른 representation에 대해서는 2개의 복제본만 필요할 수 있습니다.

테이블을 생성할 때 명시적으로 복제본 수를 지정할 수 있습니다. 값을 지정하지 않으면 전역 변수 default_replicas 값이 사용됩니다 (기본값 = 2).

Warning

대부분의 워크로드에서 기본값인 2개의 복제본은 내결함성과 성능의 균형을 유지하는 데 최적입니다. REPLICAS = 1로 설정하면 내결함성이 제거되고 읽기 균형이 저하되므로 사용하지 않아야 합니다.

테이블 생성 시 특정 representation에 대한 복제본의 수를 설정하려면 다음을 수행하십시오.

CREATE TABLE tbl_name col_names [REPLICAS = n]

테이블이 생성된 후에는 ALTER문을 사용하여 복제본 수를 수정할 수 있습니다.

ALTER TABLE tbl_name col_names [REPLICAS = n]

이렇게 하면 원하는 복제본 수가 만들어질 때까지 슬라이스 데이터가 여러 노드에 자동으로 복사됩니다.

Note

추가 복제본을 구성하는 것만으로는 동시 멀티 노드 장애가 발생할 때 가용성을 보장하기에 충분하지 않습니다. 멀티 노드 장애에 대해 클러스터를 구성하는 자세한 내용은 MAX_FAILURES를 참조하십시오.

Anchor
ALLNODES
ALLNODES
ALLNODES

읽기 성능을 최적화하기 위해 숫자 대신 REPLICAS = ALLNODES를 사용하여 모든 노드가 테이블의 전체 복사본을 유지하도록 명시할 수 있습니다. 모든 노드에서 테이블의 동일한 복사본이 유지되므로 테이블에 대한 쓰기는 더 오래 걸립니다. ALLNODES를 사용함으로써 ClustrixDB는 더 나은 쿼리 최적화를 위해 로컬 복사본을 활용할 수 있습니다. 쓰기가 거의 없는 작은 테이블을 ALLNODES로 변경하면 테이블 데이터를 가져오기 위해 클러스터의 다른 노드로 브로드 캐스팅할 필요가 줄어듭니다. 이것은 특히 작은 테이블이 큰 테이블과 결합할 때 도움이 됩니다.

ALLNODES는 다음 기준을 충족시키는 테이블에 가장 적합합니다.

  • 상대적으로 작은 크기 (테이블 크기 < 10MiB)

  • 쓰기가 적음 (쓰기 빈도 < 1K)

  • 읽기 빈도가 높음 (읽기 빈도 > 1M)

  • 다른 큰 테이블(예: metadata, lookup tables)과의 조인에 자주 사용됨

ALLNODES는 다음 용도로 사용하면 안 됩니다.

  • 쓰기가 많은 테이블

  • 파티션된 테이블

  • LAZY PROTECT와 함께 사용할 때

REPLICAS = ALLNODES Syntax
CREATE TABLE tbl_name (col_names) [REPLICAS = ALLNODES]
ALTER  TABLE tbl_name             [REPLICAS = ALLNODES]

LAZY PROTECT

ALTER TABLELAZY PROTECT 옵션을 사용하여 복제본 생성을 지연시킬 수 있습니다. 이 옵션이 사용되면 하나의 복제본이 처음에 시스템에 복원되고 다른 처리가 클러스터에서 계속 진행되는 동안 추가 복제본은 Rebalancer에 의해 백그라운드에서 생성됩니다.

대형 테이블의 경우 LAZY PROTECT로 인해 재보호 시간이 길어지지만, 클러스터 성능에 전반적인 영향이 적습니다. 복제본 개수를 지정하지 않으면 이전과 마찬가지로 기본값으로 복제본이 만들어 집니다.

LAZY PROTECT 구문
ALTER TABLE tbl_name  [LAZY PROTECT]    [REPLICAS = n]

LAZY PROTECT가 진행되는 동안 ALERT PROTECTION_LOST와 같은 경고가 로그에 남을 수 있습니다. 이는 모든 복제본이 생성될 때까지 노드 장애가 발생하는 경우 시스템이 데이터 손실을 입을 수 있음을 나타냅니다. 경고는 재보호 프로세스가 완료될 때까지 지속됩니다.

Tip

LAZY PROTECT는 대량 데이터 로드 중에 성능을 최적화하는 데 특히 유용할 수 있습니다.

  1. REPLICAS = 1로 테이블 생성 (2차 인덱스 없이)

  2. 데이터 가져오기 수행

  3. 2차 인덱스 생성

  4. ALTER TABLE tbl_name LAZY PROTECT REPLICAS = n

LAZY PROTECT 작업의 진행 상황을 추적하려면 Rebalancer 관리를 참조하십시오.