지난 포스트에 이어, Azure Cosmos DB for PostgreSQL에 대해 간략히만 정리합니다.
Microsoft Ignite 2022에서 발표된 내용을 조금씩 정리 중입니다.
지난 포스트: Citus PostgreSQL extension - 분산데이터베이스
Azure Cosmos DB for PostgreSQL is a managed service for PostgreSQL extended with the Citus open source superpower of distributed tables. This superpower enables you to build highly scalable relational apps. You can start building apps on a single node cluster, the same way you would with PostgreSQL. As your app's scalability and performance requirements grow, you can seamlessly scale to multiple nodes by transparently distributing your tables.
소개
이전 포스트에서 소개한 Citus를 활용하는 분산 테이블을 제공하는 PostgreSQL이 통합됨.
지난번, Azure Data Explorer에 이어 PostgreSQL도 cosmosDB로 들어옴. 이름처럼 cosmos가 되고 있는 듯.
코드 리뷰
테이블 생성
CREATE TABLE github_users ( user_id bigint, url text, login text, avatar_url text, gravatar_id text, display_login text ); CREATE TABLE github_events ( event_id bigint, event_type text, event_public boolean, repo_id bigint, payload jsonb, repo jsonb, user_id bigint, org jsonb, created_at timestamp ); CREATE INDEX event_type_index ON github_events (event_type); CREATE INDEX payload_index ON github_events USING GIN (payload jsonb_path_ops);
분산테이블 구성
SELECT create_distributed_table('github_users', 'user_id'); SELECT create_distributed_table('github_events', 'user_id');
테이터를 분산테이블로 로드
-- download users and store in table \COPY github_users FROM PROGRAM 'curl https://examples.citusdata.com/users.csv' WITH (FORMAT CSV) -- download events and store in table \COPY github_events FROM PROGRAM 'curl https://examples.citusdata.com/events.csv' WITH (FORMAT CSV)
blob storage 등으로부터 데이터를 로드 가능.
데이터 조회
SELECT * FROM citus_tables; 결과 table_name | citus_table_type | distribution_column | colocation_id | table_size | shard_count | table_owner | access_method ---------------+------------------+---------------------+---------------+------------+-------------+-------------+--------------- github_events | distributed | user_id | 1 | 388 MB | 32 | citus | heap github_users | distributed | user_id | 1 | 39 MB | 32 | citus | heap (2 rows)
SQL의 분산분할뷰 느낌도 나지만, 훨씬 수월하다.
Cloud Service에 managed로 들어오니 관리 부담이 줄어, 기존 PostgreSQL을 사용하던 기업고객에게 여러 가치 제공이 가능할 듯.
참고링크:
https://learn.microsoft.com/en-us/azure/cosmos-db/postgresql/introduction