높은 디스크로드로 인해 PostgreSQL DB를 파쇄하고 싶습니다. 첫째, 우리는 django-sharding library에서 보았지만 : 300~400기가바이트 테이블에 대한 노력은PostgresXL을 사용하여 기존 postgresql 데이터베이스 분쇄
- 매우 많은 우리의 백엔드에 다시 작성
- 64 비트 기본 키에 모든 테이블을 마이그레이션입니다 포스트 그레스 특정 알고리즘
- 생성 식별자 샤드에서 샤드로 데이터를 이동할 수 없습니다. 그 이상으로 우리는 오래된 ID를 가진 큰 데이터베이스를 가지고있다. 모든 것을 업데이트하는 것도 큰 문제입니다.
- 특수 테이블을 사용하여 ID를 생성하면 데이터를 삽입 할 때마다 기본 데이터베이스에 대한 특수 SELECT 쿼리가 수행됩니다. 우리는 쓰기 부하가 높기 때문에 좋지 않습니다.
이 모든 것을 고려하여 Postgres 데이터베이스 샤딩 솔루션을 살펴보기로 결정했습니다. Citus와 PostgresXL이라는 두 가지 기회를 발견했습니다. Citus는 우리에게 너무 많은 데이터 형식을 변경시키고 동시에 많은 백엔드를 다시 작성하게하므로 PostgresXL을보다 투명한 솔루션으로 시도하려고합니다. 그러나 문서를 읽으면 몇 가지 사항을 이해할 수 없으며 권장할만한 가치가 있습니다.
- Citus 및 PostgresXL을 제외한 다른 샤딩 해결 방법이 있습니까? 마이그레이션에 대한 데이터베이스에서 많이 변경하지 않는 것이 좋습니다. PostgresXL에 대한
- 몇 가지 질문 :
- 나는 그것이 포스트 그레스 확장 아니에요 올바르게 이해합니까, 그것은 독립 포크입니까? 따라서 모든 부분을 소스에서 구축하고 데이터를 어떤 방식으로 옮기는 것이 좋을까요?
- Postgres와 PostgresXL 버전은 어떻게 호환됩니까? PostgreSQL 9.4가 있습니다. 나는 PostgresXL에서 그런 버전을 보지 못한다 (9.2 또는 9.5 중앙 없음?). 그렇다면 예를 들어 마이그레이션 용 스트리밍 복제를 사용할 수 있습니까?
- 예/아니요 인 경우 데이터를 마이그레이션하는 가장 좋은 솔루션은 무엇입니까? 과도한 글쓰기가있는 2Tb 데이터베이스가 있다면 오랜 시간 동안 멈추지 않고 어떻게 든 마이그레이션 할 수 있습니까?
감사합니다.