Fragen? Antworten! Siehe auch: Alternativlos
Ich lese gerade die Dokumentation von Postgres und tappe von einer krassen Einschränkung zur nächsten.
Synchrone Multimaster Replikation? Können wir nicht.
Logische Replikation? Kann keine Blobs und verliert bei Sequences den Zähler.
Der Hinweis, dass man das ja in der Anwendungslogik drumherum implementieren kann, kommt mir ziemlich zynisch vor. Das ist untrivialer Kram! Gerade weil das so untrivial ist, will man ja, dass die Datenbank das macht, die hoffentlich von Spezialisten und Profis entwickelt wurde, und nicht mein Anwendungscode, der von einem relativen Datenbank-Laien gemacht wird, der wahrscheinlich Fehler macht.
Bei der Gelegenheit ist mir aufgefallen, dass alle großen Datenbank-Cluster, mit denen ich beruflich ein bisschen näher rankam, MySQL-basiert waren. Jetzt weiß ich glaube ich auch, warum das so war.
Die Frage ist jetzt, wie andere Leute um diese Probleme herumgearbeitet haben. Hattet ihr einfach eine Anwendung, die von diesen Tretminen nicht betroffen war?
Ich stelle mir jetzt hier gerade Schnellschuss-Lösungen vor wie dass man einen Autoinkrement-Zähler dann halt über eine Stored Procedure implementiert.
Ich bin aber ehrlich gesagt gerade ziemlich erschüttert. Ich nahm an, Postgres ist alt und gut abgehangen und da funktioniert Replikation einfach.
Was ist denn da Best Practices? Manuell oder halbmanuell monitoring und dann nachjustieren? Baut sich da jeder eigene Skripte?
Update: Hey, komm, packen wir halt den Autoinkrement-Zähler in einen Redis! Oh nee, warte:
Redis Cluster is not able to guarantee strong consistency. In practical terms this means that under certain conditions it is possible that Redis Cluster will lose writes that were acknowledged by the system to the client.
o_O
Update: Die ersten Kommentare empfehlen CockroachDB.
Update: OK, ein paar mehr Details. Es geht mir hier nicht um Views oder Likes zählen, sondern um das Zustandekommen von Verträgen. Wenn ich bestätige, dass der Vertrag zustandekam, dann muss der auch da sein und die Transaktion kann nicht versehentlich hinter das Regal fallen. Wenn dafür die Schreiblatenz hochgeht, dann ist das halt so. Es geht nicht um Lastverteilung, nur um Ausfallsicherheit.