Frage

ich einen Kumpel habe, die einen Web-App für Leute, läuft die Auflistung Autos zu verkaufen. Es gibt ein paar tausend Kunden, die sie nutzen, und jeder Kunde hat Hunderte und manchmal Tausende von Zeilen in der Datenbank (etwas über 5 Jahre waren mit Hunderten von Autos jeden Monat verkaufen und 10s von Zeilen pro Verkauf (Kommentare, Nachrichten, etc)). Er hat in einem physischen Server dieses System in einer SQL Server-Datenbank ausgeführt mit wie 20GB oder RAM und ein paar Prozessoren für die ganze Zeit, ohne Probleme. Ist das eine Art von Wunder?

Wie die meisten Programmierer, ich bin kein DBA und erhalten nur durch, dank ORMs usw. Überall, wo ich suchen, die Leute reden über die Notwendigkeit der Scherbe mit oder über einen separaten Datenbankserver für große Nutzer einer Web-App bekommen. Warum ist das? Ist es wirklich so ineffizient, eine große DB mit vielen oder Reihen zu haben? Soll ich plane Cassandra oder etwas zu verwenden, oder ich mich verlassen kann gut mit Postgres Scaling-up?

War es hilfreich?

Lösung

Ich glaube persönlich nicht, was Sie beschrieben haben, ist, dass große einer Datenbank. Der Server (20 GB RAM;)) klingt anständig. Es ist mehr über die Nutzung und Design. Wenn die Datenbank indiziert ist und gut gestaltet, können sie wachsen viel, viel größer auf der aktuellen Hardware.

Vor jeder Art von Schalter zu tun, würde ich schauen einfach nutzlos Daten bei der Archivierung und Optimierung von Abfragen, wenn es eine Angst vor Leistungsproblemen ist.

Andere Tipps

Der Grund für sharding und separaten db-Server ist an einem gewissen Punkt, dass es geht billiger zu sein, mehrere billigen Maschinen als ein teuer zu verwenden. Hardware Preis skaliert nicht linear mit der Leistung und wenn man einen bestimmten Punkt erreichen, es wird viel billiger doppelt so viele Maschinen zu bekommen, wie eine Maschine zu bekommen, die doppelt so schnell ist.

Sie sollten kein Problem in SQL Server, Oracle oder jede moderne relationale oder nicht-relationale Datenbank. Ich habe verwaltet Datenbanken mit 100 von Millionen von Datensätzen und Terabytes von Daten.

Normalerweise verteilen Sie Komponenten auf verschiedene Server, so dass Sie Zeit verwalten können, Belastbarkeit und Leistung leichter.

Es ist sicherlich durchaus möglich, eine Monster-Maschine zu haben, das macht alles, aber dann können Sie eine andere Monster-Maschine benötigen, falls Ihren Motherboard sterben, oder Ihr Rechenzentrum ist nicht verfügbar.

Durch die Aufspaltung einer Website oder Anwendung auf, unter anderen Server ist es einfacher, billige Maschinen zu bekommen, und mehr von ihnen. So können Sie in Elastizität bauen, und nicht die Komponenten, die auf Hardware Klirren similiar Anforderungen haben.

Es ist auch wichtig, über Wiederherstellungszeiten für Server zu denken, und Recovery-Pläne.
Was passiert, wenn Ihre Maschine stirbt, können Sie es in der vereinbarten Zeit zu ersetzen? Können Sie von Sicherungen in dieser Zeit wieder herstellen?

SQL Server oder andere Enterprise-Class-Datenbanken sollten keine Probleme haben, mit 10 oder den 100-GB-Datenbanken, solange sie nicht zu schlecht konzipiert. (Wir haben einige Maschinen mit dieser Eigenschaft / Verwendung, die nicht gar zu kämpfen.).

In meinem Kopf, dass ist nichts. Dutzende von Millionen von Zeilen auf mehreren Tabellen mit Datenbankgröße mit 10 GB überschreitet hat Probleme für MS SQL Server nicht verursacht. Natürlich ist es nicht zu schnell mit, dass viele Daten, aber ansonsten funktioniert es ganz gut.

Und die Frage zu beantworten, ist zu groß, so groß, es zu Problemen führen, der Fall ist. Und wenn es zu Problemen beginnt, hängt von der Tabellenstruktur und Ihre Leistungsanforderungen.

Datenbanken sind extrem effizient zu speichern und relationalen Daten abzurufen (das heißt Daten, die strukturiert ist und Verweise auf andere Daten) - das ist, was sie entworfen zu tun. Ehrlich gesagt, 99% der Menschen spucken über Schlüsselwert speichert und Cassandra und so weiter haben keine Ahnung, was sie tun. Ein Datenbankserver ist gut für große Datenmengen zu speichern, insbesondere, wenn Sie bereit sind, ein wenig Arbeit in Abstimmung um es richtig.

sagte, gibt es Anwendungsfälle für Cassandra et. al. -., Wenn Sie meist unstrukturierte Schlüssel / Wert-Daten oder keine Konsistenz benötigen oder für Redundanz Scherbe wollen, kann es sein, eine Untersuchung wert

Wenn Sie eine sehr beliebte Website sind, dann haben Sie wahrscheinlich durch ganz gut mit einer guten Datenbankserver erhalten können - schalte nicht, bis Sie festgestellt haben, Warum Sie müssen wechseln. Switching ist in Ordnung, so stellen Sie sicher, dass Sie wechseln, weil sie besser auf Ihre Bedürfnisse dient, und nicht , weil es die „coole Web-Skala, was zu tun“

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top