Aracılığıyla paylaş


PostgreSQL için Azure Cosmos DB'de gerçek zamanlı analiz uygulamalarını modelleme

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

Büyük tabloları parça anahtarıyla birlikte birleştirme

Gerçek zamanlı operasyonel analiz uygulamasının parça anahtarını seçmek için şu yönergeleri izleyin:

  • Büyük tablolarda ortak olan bir sütun seçin
  • Verilerde doğal bir boyut olan bir sütun veya uygulamanın merkezi bir parçasını seçin. Bazı örnekler:
    • Finansal dünyada, güvenlik eğilimlerini analiz eden bir uygulama büyük olasılıkla kullanır security_id.
    • Web sitesi kullanım ölçümlerini analiz etmek istediğiniz bir kullanıcı analizi iş yükünde user_id iyi bir dağıtım sütunu olabilir

Büyük tabloları birlikte konumlandırarak SQL sorgularını paralel olarak çalışan düğümlerine gönderebilirsiniz. Sorguların aşağı itilmesi, düğümler arasındaki verilerin ağ üzerinden karıştırılmasını önler. JOIN'ler, toplamalar, toplamalar, filtreler, LIMIT'ler gibi işlemler verimli bir şekilde yürütülebilir.

Birlikte bulunan tablolarda paralel dağıtılmış sorguları görselleştirmek için şu diyagramı göz önünde bulundurun:

Çalışan düğümleri içinde gerçekleşen birleştirmelerin diyagramı.

users ve events tablolarının her ikisi de tarafından user_idparçalandığından, aynı kullanıcı kimliği için ilişkili satırlar aynı çalışan düğümünde bir araya yerleştirilir. SQL JOIN'leri çalışanlar arasında bilgi çekmeden gerçekleşebilir.

Gerçek zamanlı uygulamalar için en uygun veri modeli

Şimdi kullanıcı web sitesi ziyaretlerini ve ölçümlerini analiz eden bir uygulama örneğiyle devam edelim. İki "olgu" tablosu (kullanıcılar ve olaylar) ve diğer küçük "boyut" tabloları vardır.

Kullanıcılar, olaylar ve çeşitli tabloların diyagramı.

PostgreSQL için Azure Cosmos DB'de dağıtılmış tabloların süper gücünü uygulamak için aşağıdaki adımları izleyin:

  • Büyük olgu tablolarını ortak bir sütuna dağıtma. Bizim örneğimizde kullanıcılar ve olaylar üzerinde user_iddağıtılır.
  • Küçük/boyut tablolarını (device_types, countriesve 'event_types) başvuru tabloları olarak işaretleyin.
  • Dağıtım sütununu dağıtılmış tablolarda birincil, benzersiz ve yabancı anahtar kısıtlamalarına eklediğinizden emin olun. Sütun dahil olmak için anahtarların bileşik hale getirilmesi gerekebilir. Başvuru tabloları için anahtarları güncelleştirmeye ihtiyaç vardır.
  • Büyük dağıtılmış tabloları birleştirirken parça anahtarını kullanarak birleştirmeyi unutmayın.
-- Distribute the fact tables

SELECT create_distributed_table('users', 'user_id');
SELECT create_distributed_table('products', 'user_id', colocate_with => 'users');

-- Turn dimension tables into reference tables, with synchronized copies
-- maintained on every worker node

SELECT create_reference_table('countries');
-- similarly for device_types and event_types...

Sonraki adımlar

Şimdi ölçeklenebilir uygulamalar için veri modellemeyi incelemeyi tamamladık. Sonraki adım, veritabanını seçtiğiniz programlama diliyle bağlamak ve sorgulamaktır.