Est une base de données multi-locataire:
- Un serveur de base de données qui a une base de données / schéma différent (identique) pour chaque client / locataire ?; ou
- Un serveur de base de données qui a une base de données / schéma où les clients / locataires partagent des enregistrements à l'intérieur des mêmes tables?
Par exemple, sous l'option n ° 1 ci-dessus, je pourrais avoir un serveur MySQL sur, disons mydb01.example.com
, et il pourrait avoir une customer1
base de données à l'intérieur. Cette customer1
base de données pourrait avoir, disons, 10 tables qui alimentent mon application pour ce client particulier (client n ° 1). Il peut également customer2
contenir une base de données contenant exactement les mêmes 10 tables, mais contenant uniquement des données pour le client n ° 2. Il peut avoir une customer3
base de données, une customer4
base de données, etc.
Dans l'option n ° 2 ci-dessus, il n'y aurait qu'une seule base de données / schéma, disons, myapp_db
avec encore 10 tables (les mêmes que ci-dessus). Mais ici, les données de tous les clients existent à l'intérieur de ces 10 tableaux, et ils "partagent" donc les tableaux. Et au niveau de la couche application, la logique et le contrôle de sécurité auxquels les clients ont accès à quels enregistrements dans ces 10 tables, et un grand soin est pris pour s'assurer que le client n ° 1 ne se connecte jamais à l'application et voit les données du client n ° 3, etc.
Lequel de ces paradigmes constitue une base de données traditionnelle "multi-tenant"? Et si ni l'un ni l'autre, alors quelqu'un peut-il me fournir un exemple (en utilisant les scénarios décrits ci-dessus) de ce qu'est une base de données multi-tenant?
Réponses:
Les deux concepts sont appelés multi-locataires, car il s'agit simplement d'un concept logique "dans lequel une seule instance de logiciel s'exécute sur un serveur et sert plusieurs locataires" (de Wikipedia ). Mais la façon dont vous implémentez ce concept "physiquement" dépend de vous.
Bien sûr, l'application a besoin d'un concept de base de données qui permet de séparer les données des différents locataires, et l'idée de la multi-location est de partager certaines ressources du serveur (au moins le matériel) pour une meilleure utilisation des ressources et une administration plus facile. Ainsi, une "base de données multi-locataire" est celle qui prend en charge cela directement , où des parties du modèle ou des tables db sont partagées.
Pour être précis, il est possible de créer une application multi-locataire avec une base de données non multi-locataire, fournissant une instance de base de données individuelle par client. Cependant, cela empêche de partager toutes les ressources de base de données directement entre les locataires, et la couche application doit s'assurer de connecter le bon locataire à la bonne base de données.
la source
Selon Microsoft, le terme a 3 significations potentielles (une base de données pour tous les locataires, ou un databaser par locataire).
Pour utiliser votre exemple, chaque client serait son propre locataire.
Une base de données par locataire (client)
Une base de données partagée, un schéma séparé.
Une base de données partagée, un schéma partagé.
Il y a des avantages et des inconvénients pour chacun, bien expliqués dans cet article: https://msdn.microsoft.com/en-us/library/aa479086.aspx
Bonus: vous pouvez le considérer comme un logement (grossièrement simplifié).
Chaque locataire a sa propre maison. Ils peuvent faire ce qu'ils veulent, et si ça brûle, cela n'affecte vraiment personne d'autre.
Chaque locataire est dans le même immeuble, mais a son propre appartement.
Tout le monde vit dans le même appartement et toutes les choses sont marquées d'un pense-bête pour montrer à qui il appartient.
la source