Aracılığıyla paylaş


PostgreSQL için Azure Cosmos DB'de tablo oluşturma ve dağıtma

ŞUNLAR IÇIN GEÇERLIDIR: PostgreSQL için Azure Cosmos DB (PostgreSQL'e citus veritabanı uzantısıyla desteklenir)

Bu örnekte, GitHub açık kaynak katkıda bulunanlarından kaydedilen olayları depolamak ve sorgulamak için PostgreSQL için Azure Cosmos DB dağıtılmış tablolarını kullanacağız.

Önkoşullar

Bu hızlı başlangıcı izlemek için önce şunları yapmanız gerekir:

  1. Azure portalında bir küme oluşturun.
  2. SQL komutlarını çalıştırmak için psql ile kümeye bağlanın.

Tablo oluştur

psql aracılığıyla bağlandıktan sonra tablomuzu oluşturalım. Aşağıdaki komutları kopyalayıp psql terminal penceresine yapıştırın ve çalıştırmak için Enter tuşuna basın:

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);

içinde github_eventsGIN dizinine payload dikkat edin. Dizin, JSONB sütununda hızlı sorgulamaya izin verir. Citus bir PostgreSQL uzantısı olduğundan PostgreSQL için Azure Cosmos DB, yarı yapılandırılmış verileri depolamak için JSONB veri türü gibi gelişmiş PostgreSQL özelliklerini destekler.

Tabloları dağıtma

create_distributed_table() , PostgreSQL için Azure Cosmos DB'nin tabloları dağıtmak ve kaynakları birden çok makine arasında kullanmak için sağladığı sihirli işlevdir. İşlev, tabloları parçalara ayırarak daha yüksek depolama ve işlem performansı için düğümlere yayılabilir.

Not

Gerçek uygulamalarda, iş yükünüz 64 sanal çekirdek, 256 GB RAM ve 2 TB depolama alanına sığdığında tek düğümlü bir küme kullanabilirsiniz. Bu durumda, tabloları dağıtmak isteğe bağlıdır. Daha sonra, create_distributed_table_concurrently kullanarak tabloları gerektiği gibi dağıtabilirsiniz.

Şimdi tabloları dağıtalım:

SELECT create_distributed_table('github_users', 'user_id');
SELECT create_distributed_table('github_events', 'user_id');

Önemli

PostgreSQL için Azure Cosmos DB performans özelliklerinden yararlanmak için tabloları dağıtmak veya şema tabanlı parçalama kullanmak gerekir. Tabloları veya şemaları dağıtmazsanız çalışan düğümleri verileriyle ilgili sorguları çalıştırmaya yardımcı olamaz.

Dağıtılmış tablolara veri yükleme

Tabloları örnek verilerle doldurmaya hazırız. Bu hızlı başlangıçta GitHub API'sinden daha önce yakalanan bir veri kümesini kullanacağız.

Verileri doğrudan Azure Blob Depolama'daki bir genel kapsayıcıdan yüklemek için pg_azure_storage uzantısını kullanacağız. İlk olarak uzantıyı veritabanımızda oluşturmamız gerekir:

SELECT * FROM create_extension('azure_storage');

Veritabanının örnek CSV dosyalarını getirmesini ve veritabanı tablolarına yüklemesini sağlamak için aşağıdaki komutları çalıştırın.

-- download users and store in table

COPY github_users FROM 'https://pgquickstart.blob.core.windows.net/github/users.csv.gz';

-- download events and store in table

COPY github_events FROM 'https://pgquickstart.blob.core.windows.net/github/events.csv.gz';

Uzantının copy komutuna sağlanan URL'lerin Azure Blob Depolama olduğunu, işaret ettiğimiz dosyaların gzip sıkıştırıldığını ve bizim için otomatik olarak işlendiğini fark ettiğini fark edin.

Görünümle citus_tables , boyutları da dahil olmak üzere dağıtılmış tablolarımızın ayrıntılarını gözden geçirebiliriz:

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)

Sonraki adımlar

Şimdi tabloları dağıttık ve bunları verilerle yükledik. Şimdi dağıtılmış tablolarda sorgu çalıştırmayı deneyelim.