Přepínáni hlavní databáze

19 views
Skip to first unread message

Vladimír Macek

unread,
Nov 7, 2021, 6:46:37 AM11/7/21
to djan...@googlegroups.com
Ahoj,

prosím o praktické zkušenosti.

Jde o Django apku, kterou chcete poskytovat více zákazníkům, každý budou
mít svojí doménu. Zákazníků může být hodně a chci relativně jednoduché
zakládání. Apka poběží jedna, víceprocesově jednovláknově.

Zvažuju to tak, že svoje data bude mít každý zákazník v extra Postgresu. Má
to výhodu, že zákazníci jsou datově bezpečně izolovaní, Postgres může běžet
i u nich, můžou si kdykoli db odnést bez vypreparovávání (exportu) jako v
klasickém multi-tenantu.

Možnosti přepínání vidím per request, a to buď přepínání celé `default`
databáze NEBO Django db routing. Při změně schématu by se musely zmigrovat
všechny db.

Vidím v tom výhody, ale rád bych se vyhnul slepým uličkám. :-)

Pokud jste tou cestou šli, tak kde jste narazili a jak jste to vyřešili?
Nebo jste přepínání db/routing per client opustili?

Díky,

Vláďa
tel. 608 978 164


Pavel Cisar

unread,
Nov 8, 2021, 8:14:02 AM11/8/21
to djan...@googlegroups.com
Ahoj,
osobne kdyz uz mam pro kazdeho jinou db, tak bych rozjel vic instanci aplikace s jinou konfiguraci prostredi (db). Prijde mi to lepsi nez delat nejaky db routing peklo podle requestu.

Mej se

Pavel


ne 7. 11. 2021 v 12:46 odesílatel Vladimír Macek <ma...@sandbox.cz> napsal:
--
--
E-mailová skupina djan...@googlegroups.com
Správa: http://groups.google.cz/group/django-cs
---
Tuto zprávu jste obdrželi, protože jste přihlášeni k odběru skupiny django-cs ve Skupinách Google.
Chcete-li zrušit odběr skupiny a přestat dostávat e‑maily ze skupiny, zašlete e-mail na adresu django-cs+...@googlegroups.com.
Chcete-li zobrazit tuto diskusi na webu, navštivte https://groups.google.com/d/msgid/django-cs/728c3708-d6b4-9d72-4c36-1951bc5271dc%40sandbox.cz.

Martin Kubát

unread,
Nov 8, 2021, 8:41:20 AM11/8/21
to djan...@googlegroups.com
Zdravím,
jak píše Pavel. Více db - více instancí django appky.
Ono krom db routing pekla se může stát to, že některé věci mohou být v rámci aplikace perzistentní a pak stačí aby se jedno nastavení propsalo na dalšího klienta (singletony, ...).
Navíc je výhoda, že se může aplikace upravit dle potřeb zákazníka. A zároveň je to pochopitelně nevýhoda, protože pak hrozí, že se bude kód aplikace forkovat a forkovat, ...
Výhodou může být i to, že se jedna instance posílí (hw), protože bude zákazník více vytěžovat,...

M

po 8. 11. 2021 v 14:14 odesílatel Pavel Cisar <cisar...@gmail.com> napsal:

Stanislav Vasko

unread,
Nov 8, 2021, 8:43:37 AM11/8/21
to djan...@googlegroups.com
Řeším něco podobného a vlastně jsem to dodnes nevyřešil. Ale abych si to zjednodušil, mám vlastně 1 projekt, z něj linkuji klíčové adresáře do podprojektů a ty pak běží samostatně. Takže soubory, jádro, aplikace apod. existuje jen jednou a každý projekt má vlastní DB, vlastní konfig a třeba vlastní images/client kvůli logu apod. drobnostem.

To co popisuješ jsem také promýšlel, ale asi bych se uvýjimkoval a neustále myslet na to co kdo má jiného, to bych se zbláznil. Takže až dojde na odbočky, asi si udělám přepínače v settings a ty budu číst v nových verzí aplikace a zda to bude přepínač ad klient či verze, to ukáže čas. Osobně se ale domnívám, že to také není ideální, ale dostatečně jednoduché a tudíž udržitelné. Snad :)

Měj se, Standa
Reply all
Reply to author
Forward
0 new messages