Aracılığıyla paylaş


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

Önemli

PostgreSQL için Azure Cosmos DB artık yeni projeler için desteklenmemektedir. Bu hizmeti yeni projeler için kullanmayın. Bunun yerine, şu iki hizmetlerden birini kullanın:

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 işçi düğümlerine gönderebilirsiniz. Sorguların aşağı itilmesi, düğümler arasındaki verilerin ağ üzerinden karıştırılmasını önler. JOIN'ler, gruplamalar, toplamalar, filtreler ve LIMIT'ler gibi işlemler etkili bir şekilde gerçekleştirilebilir.

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 user_id tarafından parçalandığından, aynı kullanıcı kimliği için ilişkili satırlar aynı çalışan düğümünde birlikte 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 user_id üzerine dağıtılmıştı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.