Django ve Postgresql ayrı şemaları kullanarak Hiyerarşik çok kiracı mimarisi

oy
3

Bir Django uygulaması istemcileri ve bu istemciler bağlı birden fazla kullanıcısı olan var ve hiyerarşik çoklu kiracı mimarisi sistem geçişlerini istiyorum.

Hiyerarşik Bölüm

Müşteriler yinelemeli diğer istemcileri içerebilir. Örneğin, istemci bir içermektedir Müşteri B ve Müşteri C . Bir kullanıcı ise istemci bir sistem günlükleri, kullanıcı görür Müşteri B ve Müşteri Cı 'in verileri. Kullanıcı varsa Müşteri B sisteminde günlükleri, kullanıcı sadece göreceksiniz Müşteri B 'nin verileri.

Çok Kiracı Bölüm

Ayrı şemalar tüm müşterilerin veri depolamak istiyor. Ama müşterilerine alakalı olmayan bazı veriler, bu yüzden kamu Şemada bu verileri depolamak istiyorum.

Ben araştırırken Django ile Yapı Çoklu Kiracı Uygulamaları , ben bu bölümü gördüm:

def set_tenant_schema_for_request(request):
    schema = tenant_schema_from_request(request)
    with connection.cursor() as cursor:
        cursor.execute(fSET search_path to {schema})

Ancak, ben aynı anda birden çok şema ulaşmalıdır, yukarıda belirttiğimiz bu benim hiyerarşik örnek uygulamak. Bunu ya benim mimariyi kurmak için başka yollar vardır miyim?

Oluştur 08/11/2018 saat 11:29
kaynak kullanıcı
Diğer dillerde...                            


1 cevaplar

oy
1

Sen PostgreSQL arama yolunda birden çok şema listeleyebilirsiniz. Aynı tablo birkaç şemalar görünürse arama yolundaki ilk şema yalnızca satırlar döndürülür. Farklı şemaları tablolardan satır birleştiren bir otomatik var. Yani bu istemez muhtemelen bu.

Her sorgu farklı şemalar tablolardan veri seçer böylece uygulamayı rearchitect sonra da hep birlikte bu sonuçlar katılmak için sendika cümleleri kullanabilirsiniz. O iken ediyorum doğru sonuçlar sağlamak, sorguları bu şekilde planladığımız büyük ölçüde uygulamayı zorlaştırır ve ayrıca iyi bir plan değil yapar olacağı açık olmalıdır.

Aynı anda birkaç müşterilerinden gelen verileri görmek için yeteneği istiyorsanız, izole şemaları ile çok kiracı mimarisi gitmek doğru yol değildir. alternatifler ortadan olması, sadece bir yaklaşım kalır düşünüyorum. Aynı tablolarda farklı müşterilerinden gelen satırlarla paylaşılan şema çok kullanıcılı olma kullanmak zorunda.

Paylaşılan bir şema olması farklı müşterilerinden gelen verilerin daha az ayrılık var demektir, ama o kadar gerekli şey budur durumlarda aynı anda birden fazla müşteri verilerini göstermek için basit bir yol sağlar. uygulanmasına Normal yaklaşım giriş yapmış olan kullanıcının döndürülür görebilir olman veri sağlamak için sorgu nerede maddelerine de şartlar eklemektir.

Eğer düşünebilirsiniz başka olasılık veritabanı içinde satır düzeyinde güvenliği kullanmak olacaktır. O yaklaşımla her istemci kişilere uygulanabilecek olan yalnızca satır erişimi kısıtlayan bir politikaya kendi Postgres kullanıcı hesabına sahip olacaktır. Yani artıları ve eksileri vardır veritabanı katmanı uygulama katmanından doğru güvenliğini temin etmek için sorumluluk iter. Bir yararı güvenlik uygulamasının veri erişim parçaları boyunca karşıt olarak, yalnızca bir kez veritabanına uygulanması gerekir olmasıdır. Olası bir dezavantajı veritabanı yapmak için daha fazla iş olabileceğidir.

https://www.postgresql.org/docs/11/ddl-rowsecurity.html

Cevap 09/11/2018 saat 03:32
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more