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
- Finansal dünyada, güvenlik eğilimlerini analiz eden bir uygulama büyük olasılıkla kullanır
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:
users
ve events
tablolarının her ikisi de tarafından user_id
parç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.
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_id
dağıtılır. - Küçük/boyut tablolarını (
device_types
,countries
ve '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.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin