sql >> Databáze >  >> RDS >> Mysql

Potřebuji aktualizovat databázi aplikace pro jednoho uživatele, aby bylo povoleno více uživatelů, jak upravit schéma databáze?

Více klientů; jedna hostovaná aplikace. Popisujete databázi s více nájemci.

Když vytváříte databázi pro více tenantů, musíte zvážit

  • dotazování
  • náklady
  • izolace a ochrana dat
  • údržbu a
  • Obnova po havárii.

Řešení pro více tenantů se pohybují od jedné databáze na tenanta (nic nesdílí) až po jeden řádek na tenanta (sdíleno vše).

„Sdílené nic“, „samostatná databáze“ nebo jedna databáze na klienta

  • Nejdražší na klienta. (Velký počet klientů znamená velký počet serverů.)
  • Nejvyšší stupeň izolace dat.
  • Obnova po havárii pro jednoho tenanta je jednoduchá a přímočará.
  • Údržba je teoretická těžší, protože změny je třeba provádět v každé databázi. Ale vaše dbms může snadno podporovat spouštění uložených procedur v každé databázi. (SQL Server má nezdokumentovanou systémovou uloženou proceduru, například sp_msforeachdb. Pravděpodobně si můžete napsat svou vlastní.) „Sdílené nic“ je také nejsnáze přizpůsobitelné, ale také to vyvolává další problémy s údržbou.
  • Nejnižší počet řádků na tabulku. Rychlost dotazování je téměř optimální.

„Sdíleno vše“ nebo „sdílené schéma“ nebo „jedna databáze na planetě“

  • Nejnižší náklady na nájemníka.
  • Nejnižší stupeň izolace dat. Každá tabulka má sloupec, který identifikuje, kterému tenantovi řádek patří. Vzhledem k tomu, že řádky tenantů jsou v každé tabulce smíšené, je relativně jednoduché náhodně vystavit data jiných tenantů.
  • Obnova po havárii pro jednoho nájemce je poměrně komplikovaná; musíte obnovit jednotlivé řádky v mnoha tabulkách.
  • Strukturální údržba je jednodušší, protože stoly sdílejí všichni nájemci. Zvyšuje to však komunikační zátěž, protože musíte komunikovat a koordinovat každou změnu s každým nájemcem. Není snadno přizpůsobitelný.
  • Nejvyšší počet řádků na tabulku. Rychlé dotazování je těžší, ale záleží na tom, kolik tenantů a kolik řádků. Můžete se snadno převrátit na území VLDB.

Mezi „sdíleno nic“ a „sdíleno vše“ je „sdílené schéma“.

"Sdílené schéma"

  • Nájemci sdílejí databázi, ale každý má své vlastní pojmenované schéma. Cena spadá mezi „nesdílel nic“ a „sdílel vše“; velké systémy obvykle potřebují méně serverů než „sdíleno nic“, více serverů než „sdíleno vše“.
  • Mnohem lepší izolace než „sdílet vše“. Ani ne tak velká izolace, jako „nesdílené nic“. (Můžete UDĚLIT a ZRUŠIT oprávnění ke schématům.)
  • Obnova po havárii pro jednoho tenanta vyžaduje obnovení jednoho z mnoha schémat. To je buď relativně snadné, nebo poměrně těžké, v závislosti na vašich dbms.
  • Údržba je jednodušší než „nic nesdílet“; není tak snadné jako „sdílet vše“. Je relativně jednoduché napsat uloženou proceduru, která se spustí v každém schématu v databázi. Je snazší sdílet společné tabulky mezi nájemníky než se „sdíleným nic“.
  • Obvykle více aktivních tenantů na server než „nesdílí nic“, což znamená, že sdílejí (degradují) více zdrojů. Ale ne tak špatné jako "sdílel vše".

Microsoft má dobrý článek o architektury pro více nájemců s více podrobnostmi. (Odkaz je pouze na jednu stránku vícestránkového dokumentu.)




  1. Jak najít nečíselné hodnoty ve sloupci v MySQL

  2. Jak omezit přístup k databázi v PostgreSQL

  3. Proč se odhadovaný počet řádků ve výsledcích phpmyadmin velmi liší?

  4. Použití automatizace k urychlení testů vydání na PostgreSQL