자동 테이블: 당신의 관리자 구분 설정 도구

배경.

Sharding는 Apache ShardingSphere의 핵심 기능입니다.기존 분할 워크플로우(데이터 마이그레이션 없음)는 다음과 같습니다.

이러한 작업 흐름에서 당신은 절분 전략, 실제 표 이름과 데이터 원본을 명확하게 이해해야 합니다.그리고 이 정보에 따라 절분 규칙을 제정한다.
표 분포 결과 중 하나는 8개의 섹션 데이터베이스일 수 있으며 데이터베이스마다 4개의 표를 포함한다.

문제.


테이블의 분포를 100% 확정할 때만 정확한 actualDataNodes 규칙을 작성할 수 있습니다.그렇지 않으면, 너는 잘못 쓸 수도 있다.이 경우 올바른 구분 규칙은 다음과 같습니다.
tables:
t_order:
actualDataNodes: ds_${0..7}.t_order_${0..3}
databaseStrategy:
standard:
shardingColumn: order_id
shardingAlgorithmName: database_inline
tableStrategy:
standard:
shardingColumn: order_id
shardingAlgorithmName: table_inline
shardingAlgorithms:
database_inline:
type: INLINE
props:
algorithm-expression: ds_${order_id % 8}
table_inline:
type: INLINE
props:
algorithm-expression: t_order_${order_id % 4}
ShardingSphere에는 실제로 매우 사용자 친화적인 구성 규칙이 있습니다.그러나 사용자는 다음과 같은 어려움을 겪을 수 있습니다.
  • 절분 전략이나 규칙을 이해하지 못함; *
  • 절분 규칙과 실제 표의 분포가 일치하지 않는다.
  • 잘못된 구성 표현식입니다.
  • 우리는 항상 사용자 문제에 관심을 갖는다.예를 들어, 한 사용자가 다음과 같은 문제를 발견했습니다.

    당신은 왜 자동 충전이 필요합니까


    Apache ShardingSphere 버전 5.0.0AutoTable이 출시되었으며 슬라이스 구성을 쉽게 수행할 수 있습니다.
    글씨체로 보면 AutoTable는 자동 표절분을 의미한다.AutoTable를 사용할 때는 슬라이스 수와 데이터 원본만 지정하면 됩니다.AutoTable로 인해 실제 테이블 분포를 걱정할 필요가 없습니다.올바른 구성 형식은 다음과 같습니다.
    autoTables:
    t_order:
    # Specify your datasources
    actualDataSources: ds_${0..7}
    shardingStrategy:
    standard:
    shardingColumn: order_id
    shardingAlgorithmName: mod
    shardingAlgorithms:
    mod:
    type: MOD
    props:
    # Specify your sharding-count
    sharding-count: 32
    
    자동 조정 가능으로 ShardingSphere는 논리표t_order에 8개의 데이터 원본을 식별할 수 있고 32개의 섹션 테이블이 필요하다. 그리고 분포 결과를 자동으로 계산한다. 8개의 섹션 데이터베이스*4개의 섹션 테이블이다.결과는 완전히 같다.

    AutoTable&DistSQL


    현재, 당신은 AutoTable에 대해 더 많이 알고 있습니다.그러나 AutoTable를 DistSQL과 결합하면 탄젠트 구성을 크게 단순화할 수 있으므로 더욱 인상적인 결과를 얻을 수 있습니다.DistSQL 구성 규칙은 기존 방식과 달리 즉시 작동하므로 다시 시작할 필요가 없습니다.그 밖에 하나의 규칙의 변화는 영원히 다른 규칙에 영향을 미치지 않을 것이다.
    DistSQL은 섹션 테이블 규칙을 관리하는 세 가지 표현식을 지원합니다:create,alter,drop.
    # Create a sharding table rule
    CREATE SHARDING TABLE RULE t_order (
    RESOURCES(resource_0,resource_1),
    SHARDING_COLUMN=order_id,TYPE(NAME=hash_mod,PROPERTIES("sharding-count"=4))
    );
    # Ater a sharding table rule
    ALTER SHARDING TABLE RULE t_order (
    RESOURCES(resource_0,resource_1),
    SHARDING_COLUMN=order_id,TYPE(NAME=hash_mod,PROPERTIES("sharding-count"=10))
    );
    # Drop a sharding table rule
    DROP SHARDING TABLE RULE t_order;
    
    참고: 규칙 변경은 이전 데이터에 영향을 줄 수 있습니다.이 문제를 해결하기 위해서, 우리는 ShardingSphere 축소를 제공하여, 데이터를 이동할 수 있고, 분포식 데이터를 관리하는 데 더욱 편리함을 제공합니다.우리는 머지않아 Sharding Sphere 축소에 대한 더 많은 정보를 공유할 수 있어서 매우 기쁘다.

    FAQ


    ShardingSphere JDBC에서 AutoTable를 사용할 수 있습니까?
    네, 할 수 있어요.
    ShardingSphere JDBC와 ShardingSphere 에이전트는 모두 자동 테이블을 지원합니다.또한 에이전트에서 DistSQL을 사용하여 다양한 액세스 요구 사항을 충족하도록 동적으로 구성할 수 있습니다.
    AutoTable는 어떤 탄젠트 알고리즘을 지원합니까?
    AutoTable는 모든 자동 슬라이스 분할 알고리즘을 지원합니다.
  • MOD: 모듈러 알고리즘
  • HASH MOD: 해시 모드 분할 알고리즘
  • 부피 범위: 부피의 범위 구분 알고리즘
  • 기반
  • 경계 범위: 경계 범위 구분 알고리즘 기반
  • 자동 간격: 자동 간격 분할 알고리즘
  • 자세한 내용은 Apache ShardingSphere 문서 "자동 분할 알고리즘"을 참조하십시오.
    내장 알고리즘 외에도 필요할 때 맞춤형 분할 알고리즘을 만들 수 있도록 SPI 확장을 개발할 수 있습니다.
    나는 이미 YAML을 사용한 적이 있다.지금 자동시계를 사용할 수 있습니까?
    우리는 네가 이렇게 하는 것을 건의하지 않는다.
    만약 이러한 전환이 표의 분포 결과를 기대에 부합할 수 있다고 확신한다면, 한번 시도해 보십시오.그렇지 않으면 이렇게 하지 마세요.
    그러나 새 테이블을 작성하려면 AutoTable을 시작합니다.
    자동 충전의 가장 좋은 방안은 무엇입니까?
    AutoTable의 목표는 당신이 배치를 나누는 관리인이 되는 것입니다.네가 해야 할 일은 조각이 얼마나 필요한지 알려주는 것이다. 그러면 실제 시계의 위치와 계수를 기억하는 번거로움을 줄일 수 있다.
    자동 테이블을 사용하려면 먼저 규칙을 설정한 다음 CREATE TABLE로 테이블을 만드는 것이 좋습니다.낡은 습관은 고치기 어렵지만, 먼저 표를 만들고, 그 다음에 규칙을 설정하는 낡은 습관을 바꾸십시오.현재ShardingSphere는 중간부품이 아닌 분포식 데이터베이스 접근점과 같다.
    내 데이터 원본 이름이 연속되지 않거나 데이터 원본 이름이 너무 많습니다.자동시계를 사용할 수 있습니까?
    네, 할 수 있어요.데이터 원본을 지정할 때, 그것들의 이름은 연속할 필요가 없다.이 문제를 해결하려면 열거 표현식과 내연 표현식을 동시에 사용할 수 있습니다.
    CREATE SHARDING TABLE RULE t_order (
    RESOURCES('resource_${0..9}',resource_12,resource_15,"resource_$->{17..19}"),
    ...
    );
    
    AutoTable과 이전 방법을 모두 사용할 수 있습니까?
    네, 할 수 있어요.
    자세한 내용은 https://github.com/apache/shardingsphere/blob/master/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/resources/config/config-sharding.yaml
    우리도 다른 지역사회 구성원들이 우리가 더 많은 문제를 발견하고 지역사회를 개선하는 것을 돕는 것을 환영한다.

    ShardingSphere 커뮤니티:


    ShardingSphere Github:https://github.com/apache/shardingsphere
    ShardingSphere 트위터: https://twitter.com/ShardingSphere
    ShardingSphere 이완 채널: apacheshardingsphere.slack.com
    투고자 가이드: https://shardingsphere.apache.org/community/en/contribute/

    작자


    저장 성
    SphereEx 중간부품 개발 엔지니어 겸 Apache Sharding Sphere 기여자.

    좋은 웹페이지 즐겨찾기