Offensichtlich liegt der Grund für die BigTable-Architektur in der Schwierigkeit, relationale Datenbanken zu skalieren, wenn Sie mit der enormen Anzahl von Servern zu tun haben, mit denen Google zu tun hat.Welcher Aspekt relationaler Datenbanken erschwert es ihnen, Dienste wie Google App Engine ausreichend zu skalieren?
Aber was genau macht es für relationale Datenbanken technisch schwierig zu skalieren?
In den Enterprise-Rechenzentren großer Unternehmen scheinen sie dies erfolgreich durchführen zu können. Daher frage ich mich, warum es nicht möglich ist, dies auf einer größeren Größenordnung zu tun, damit es auf Googles Servern skaliert werden kann.
Ich bin damit einverstanden, dass die meisten Web-Apps mehr lesen als Benutzer-Eingabe oder App-Aktualisierung von Daten. Aber ich verstehe nicht, was Sie meinen, wenn Sie sagen, dass Schreiben in einem normalisierten RDBMS "einfacher (in Bezug auf die geleistete Arbeit)" ist? Ich würde meinen, der App Engine-Datenspeicher ist einfacher in Bezug auf die geleistete Arbeit, da ein eindeutiger Schlüssel jede Entität identifiziert und eine Aktualisierung einer Einfügung aufgrund des diklarartigen Charakters des Datenspeichers entspricht. Putten und Holen aus einem Wörterbuch ist so einfach wie es geht, soweit die Arbeit erledigt ist, würde ich denken. – pacman
@pacman: Sie vergessen die ganze Arbeit, die tatsächlich getan wird. Der Index ist der große König des Datenspeichers. Wenn Sie dem Datenspeicherelement eine Entität hinzufügen, werden sehr viele Daten repliziert. Wenn Sie also eine Eigenschaft abrufen möchten, können Sie dies schnell tun. Es schreibt grundsätzlich Indizes für jede Eigenschaft, für jede Entität, zweimal (asc und desc) für alle Daten, die Sie speichern (vielleicht nicht die neuen großen Blobs, nicht sicher). Dies dauert für Schreibvorgänge so lange, ermöglicht aber auch schnelle Lesevorgänge auf einer verwirrenden Skala. Ich würde vorschlagen, ein gutes AppEngine-Buch zu bekommen, da es beim Entwerfen für GAE wichtig ist. –