Vor - /Nachteile der Verwendung mehrerer Datenbanken vs mit single-Datenbank
Muss ich eine windows-Anwendung entwerfen, die stellt mehrere "Kunden" in der SQL
Server. Jeder Kunde hat das gleiche Datenmodell, aber es ist unabhängig.
was sind die vor/Nachteile der Verwendung mehrerer Datenbanken vs mit single Datenbank.
welches ist der beste Weg, um diese Arbeit zu tun. wenn man nur für eine einzige Datenbank, was die Schritte zu tun für das.
Bearbeitet:
Eins ist Datenbank wird gehostet in der cloud(rackspace) Konto.
- Vorteile: Sicherheit. Nachteile: Usability.
- Von "mehreren Kunden", meinst du, dass Sie so etwas wie eine netshop und müssen zum speichern von Kundendaten? Oder wollen Sie den host-Datenbanken einer Anwendung für die Kunden, wie ein CRM-system?
- host-Datenbanken einer Anwendung für die Kunden,wie ein CRM-system.
- Wenn es viel von der gleichen Infrastruktur/Datenbank-layout, würde ich sicherstellen, dass zu automatisieren, die viel mit configuration management tools (Chef, Puppet, SaltStack, Ansible-nehmen ein, sparen Sie Zeit auf lange Sicht).
- Hier ist ein argument, das niemand gemacht: Verschiedene Datenbanken nach Art der gespeicherten Daten. Ich könnte mir vorstellen das ein Fall, wo ich meine Kunden in einer SQL-Datenbank, Ihre chat-Protokolle in einer NoSQL-DB und wenn ich die komplexen Beziehungen zwischen Ihnen zu speichern diese in einer Graph-Datenbank. Sicher, das klingt wie ein extrem Fall, aber es klingt für mich gültig
Du musst angemeldet sein, um einen Kommentar abzugeben.
Speichern keine Daten, die von mehreren Kunden auf die gleiche Datenbank -- ich habe bekannte Unternehmen, hatte zu verbringen eine Menge Zeit/Aufwand/Geld, die Festsetzung dieser Fehler. Ich habe selbst bekannte Kunden, sträuben auf die Freigabe einer Datenbank, computer, obwohl die Datenbanken sind getrennt - auf der plus-Seite, diese Kunden sind in der Regel bereit zu zahlen, für die zusätzliche hardware.
Die Probleme, die mit Sicherheit allein sollte verhindern, dass Sie immer, dies zu tun. Verlieren Sie große Kunden, weil dieser.
Wenn Sie haben einige Kunden, die bereit sind, ein upgrade Ihrer software, es kann sehr schwierig sein, wenn Sie teilen sich eine einzige Datenbank. Getrennte Datenbanken, die es Kunden ermöglichen, weiterhin mit der alten Datenbank-Struktur, bis Sie bereit sind, zu aktualisieren.
Sind Sie künstlich zu begrenzen Natürliche Daten-partition, das könnte zu erheblichen Skalierbarkeit für Ihre Lösung. Mehrere kleine Kunden können noch gemeinsam einen Datenbank-server, sondern Sie sehen nur Ihre eigenen Datenbanken/Kataloge, oder Sie können auf unterschiedlichen Datenbank-Servern /Instanzen.
Ihnen erschwert Ihre Datenbank-design ist, da haben Sie zu unterscheiden, Kunden-Daten, die sonst natürlich getrennt, d.h., dass die Versorgung CustomerID auf jeder where-Klausel.
Sind Sie, dass Ihre Datenbank langsamer durch mehr Zeilen in allen Tabellen. Verwenden Sie Datenbank-Speicher schneller, weil CustomerID ist jetzt ein Teil von jedem index, und weniger Datensätze können gespeichert werden, in jeder index-Knoten. Ihre Datenbank ist auch langsamer durch den Verlust der inhärente Vorteil der Lokalität der Referenz.
Daten-rollback für 1 Kunde kann sehr schwierig sein, vielleicht sogar im wesentlichen unmöglich, da die Datenbank wächst, - Sie müssen die benutzerdefinierten Prozeduren, das zu tun, sind viel langsamer und Ressourcen-intensiver als eine einfache und standard wiederherstellen aus dem backup.
Großen Datenbanken sehr schwierig sein kann, um backup /restore in einer fristgerechten Weise, möglicherweise erfordern zusätzliche Ausgaben für hardware, um es schnell genug.
Ihre Anwendung(en), die die Datenbank verwenden, werden schwieriger zu pflegen und zu testen.
Jeder Fehler kann viel destruktiver, als Sie Durcheinander bringen können Ihren Kunden durch einen einzigen Fehler.
Verhindern Sie die mögliche Verbesserung der Leistung von low-Latenz, indem Sie gezwungen werden, Ihre Datenbank zu einem einzigen Ort. E. g., übersee-Kunden werden mit langsamen, high-latency-Netzwerken die ganze Zeit.
Ihnen bekannt sein werden als die dummen DBA, oder die Arbeitslosen DBA, oder vielleicht auch beides.
Gibt es einige Vorteile, um eine gemeinsame Datenbank, design obwohl.
Common table-schemas, code-Tabellen, gespeicherte Prozeduren, etc. müssen nur gepflegt sein und gespeichert in 1 Lage.
Lizenz-Kosten können reduziert werden, in einigen Fällen.
Einige Wartung ist einfacher, obwohl fast sicher, noch schlimmer insgesamt mit einer kombinierten Ansatz.
Wenn alle/die meisten Ihrer Kunden sind sehr klein, Sie haben eine geringe Ressourcen-Auslastung, indem Sie nicht die Kombination von Servern (D. H., relativ hohe Kosten). Sie verringern die hohen Kosten, die durch die Kombination von Kunden mit deren Erlaubnis und ausdrückliche Verständnis, aber noch mit getrennten Datenbanken für größere Kunden. Sie müssen auf jeden Fall eindeutig sein und up-front mit Ihren Kunden in dieser situation.
Außer für die server-Kosten zu teilen, ist dies eine sehr schlechte Idee - aber die Kosten ein sehr wichtiger Aspekt zu. Das ist wirklich die einzige Rechtfertigung für dieses Vorgehen - das vermeiden, wenn überhaupt vernünftig obwohl. Vielleicht wären Sie besser dran zu ändern, ein wenig mehr für Ihr Produkt, oder einfach nur nicht unterstützen können, die kleinen Kunden für einen günstigen Preis.
Ich gehe davon aus, dass die von mehreren Kunden sind Sie nicht nur die Speicherung von Kundendaten, Sie sind hosting-Datenbanken-Anwendung für die Kunden, wie CRM-Systeme.
Wenn dem so ist, dann würde ich absolut nicht speichern alles in der gleichen Datenbank.
Gründe:
Also Fazit: separaten Datenbanken.
Eines Tages Ihre Entwickler Schraube oben etwas, und ein Kunde wird Zugang zu den Informationen von anderen Kunden. Verlieren Sie Ihre Kunden als Ergebnis. Dies allein sollte Ihnen sagen, dass mehrere Kunden können nicht in eine Datenbank. niemand wird wollen, um Ihre Kunden, wenn Sie das wissen.
Muss ich wirklich gehen über alle Probleme, die wird irgendwann passieren, wenn dies der Fall ist? Die Antwort ist einfach - KEINE. Sie wollen nicht zu haben, Informationen an mehrere Kunden in der gleichen Datenbank.
Einzige mal, dass dies passiert ist, wenn Sie multiplexer-Datenbank zum nachverfolgen von Kunden-Anmeldungen, Sitzungen, etc. Aber die Daten verwendet und gespeichert, die vom Kunden in der eigenen Datenbank.
Einige der Vorteile, die jeder Ansatz zu berücksichtigen sind:
Single Datenbank
Mehrere Datenbanken
Quelle