sql >> Databasteknik >  >> RDS >> Mysql

Hur skapar man en databas med flera hyresgäster med delade tabellstrukturer?

Men det finns givetvis vissa företag som fruktar att deras data kan komma att äventyras, så vi utvärderar andra lösningar.

Detta är olyckligt, eftersom kunder ibland lider av en missuppfattning att endast fysisk isolering kan erbjuda tillräcklig säkerhet.

Det finns en intressant MSDN-artikel med titeln Multi-Tenant Data Architecture , som du kanske vill kontrollera. Så här tog författarna upp missuppfattningen om det delade förhållningssättet:

En vanlig missuppfattning är att endast fysisk isolering kan ge en lämplig nivå av säkerhet. Faktum är att data som lagras med en delad tillvägagångssätt också kan ge stark datasäkerhet, men kräver användning av mer sofistikerade designmönster.

När det gäller tekniska och affärsmässiga överväganden gör artikeln en kort analys av var ett visst tillvägagångssätt kan vara mer lämpligt än ett annat:

Antalet, karaktären och behoven hos de hyresgäster som du förväntar dig ska tjäna alla påverkar ditt beslut om dataarkitektur på olika sätt. Vissa av följande frågor kan påverka dig mot ett mer isolerat tillvägagångssätt, medan andra kan påverka dig mot en mer delad inställning.

  • Hur många potentiella hyresgäster förväntar du dig att rikta in dig på? Du kanske inte är i närheten av att kunna uppskatta framtida användning med auktoritet, men tänk i termer av storleksordningar:bygger du en ansökan för hundratals hyresgäster? Tusentals? Tiotusentals? Mer? Ju större du förväntar dig att din hyresgästbas ska vara, desto mer sannolikt kommer du att vilja överväga ett mer gemensamt tillvägagångssätt.

  • Hur mycket lagringsutrymme förväntar du dig att den genomsnittliga hyresgästens data kommer att uppta? Om du förväntar dig att några eller alla hyresgäster ska lagra mycket stora mängder data, är detta tillvägagångssätt med separata databas förmodligen bäst. (Krav på datalagring kan faktiskt tvinga dig att använda en separat databasmodell ändå. Om så är fallet kommer det att vara mycket lättare att designa applikationen på det sättet från början än att gå över till en separat databasmodell senare.)

  • Hur många samtidiga slutanvändare förväntar du dig att den genomsnittliga hyresgästen ska stödja? Ju större antal, desto mer lämpligt är ett mer isolerat tillvägagångssätt för att möta slutanvändarnas krav.

  • Förväntar du dig att erbjuda några mervärdestjänster per hyresgäst, såsom säkerhetskopiering och återställningsförmåga per hyresgäst? Sådana tjänster är lättare att erbjuda genom ett mer isolerat tillvägagångssätt.

UPPDATERING: Vidare att uppdatera om det förväntade antalet hyresgäster.

Det förväntade antalet hyresgäster (10 000) bör utesluta multidatabasmetoden, för de flesta, om inte alla, scenarier. Jag tror inte att du kommer att tycka om idén att underhålla 10 000 databasinstanser och behöva skapa hundratals nya varje dag.

Bara utifrån den parametern ser det ut som att metoden med delad databas, ett schema är den mest lämpliga. Det faktum att du kommer att lagra bara cirka 50 Mb per hyresgäst, och att det inte kommer att finnas några tillägg per hyresgäst, gör detta tillvägagångssätt ännu mer lämpligt.

MSDN-artikeln som citeras ovan nämner tre säkerhetsmönster som tar itu med säkerhetsöverväganden för metoden med delad databas:

När du är säker på din applikations datasäkerhetsåtgärder skulle du kunna erbjuda dina kunder ett servicenivåavtal som ger starka datasäkerhetsgarantier. I din SLA, förutom garantierna, kan du också beskriva de åtgärder du skulle vidta för att säkerställa att data inte äventyras.

UPPDATERING 2: Tydligen flyttade Microsoftkillarna / gjorde en ny artikel om detta ämne, den ursprungliga länken är borta och det här är den nya:Multi-tenant SaaS-databas hyresmönster (kudos till Shai Kerer)



  1. 9 bästa metoder för att skriva SQL-frågor

  2. Infoga data i en MySQL-databas

  3. SQLite - Importera data från en CSV-fil

  4. Saker du bör veta innan du lär dig Oracle