Frage

Wäre es eine gute Idee sein, Terracotta als Persistenz-Lösung zu verwenden (eine Datenbank zu ersetzen)? Ich frage mich, speziell über die Datenintegrität Fragen und Unterstützung für Transaktionssysteme.

War es hilfreich?

Lösung

Terracotta ist Transaktions (synchronisierte Blöcke Form Transaktionen von geändertenen Objekten), ist aber nicht und will nicht JTA-konform sein. Es ist eine ziemlich lange Diskussion von Transaktionen und einige häufige Missverständnisse über Terracotta hier .

ich eine Blog-Post über Daten Leben geschrieben und wie das Ihr Denken über Aufzeigen von Möglichkeiten für den Einsatz von Terracotta Rahmen sollte. Kurz gesagt, Sweet Spot Terrakotta ist die Verwendung Fall, in dem Sie Ausdauer und Verfügbarkeit benötigen (App abstürzen konnte, aber Sie müssen noch die Daten), aber wo die Daten nicht notwendigerweise kritisch langfristig ist.

Ein kanonisches Beispiel sind Daten wichtig im Zusammenhang mit einer Benutzersitzung in einer Web-Anwendung, wie Warenkorb info. Sie wollen, dass die Daten persistent zu halten, so dass, wenn Ihre Web-App abstürzt, können Sie den Warenkorb halten. Aber der Wagen selbst kann oder auch nicht immer gekauft werden. Also, Sie speichern es in Terracotta, bis sie gekauft hat, dann in der Datenbank speichern als „Aufzeichnungssystem“ Daten.

Historisch gesehen, die Daten, die Sie in einer Datenbank gespeichert war immer „Aufzeichnungssystem“ Daten, die auf den langfristigen Erfolg Ihres Unternehmens entscheidend war: Kunden, Aufträge, etc. Mit der heutigen „stateless“ Architekturen (die wirklich aren‘ t stateless), wir schieben alle mittelfristigen Daten nach unten in die Datenbank. Dies bedeutet, dass wir unsere Datenbank unnötig zu bestrafen (mit zusätzlicher Arbeit und Lagerung) und unsere Entwickler (der die objektrelationale Impedance Mismatch zu handhaben, auch wenn ORM). Ein besserer Ansatz ist es in Objekten zu lassen und es mit Terrakotta-Cluster. Eine Reihe neuerer Terracotta Anwender diese Technik deutlich verwendet haben, um ihre Datenbank-Fußabdruck zu reduzieren (sie Millionen von Dollar zu speichern), während sie gleichzeitig ihre Fähigkeit zu erhöhen maßstäblich.

Es ist die Frage nach dem Integrationspunkt mit der Datenbank und wie die Hand-off zuverlässig zu machen. Wir sahen dies als ein Anwendungsfall in der kürzlich veröffentlichten Examinator (a Frühjahr / Terracotta / Tomcat / MySQL-Referenz Web-Anwendung) . Bei Prüfungen im Gang sind, (markiert Antworten auf Fragen, randomisierte Auswahl Ordnungen, Fragen zur Prüfung) der Staat in Terracotta gespeichert. Aber wenn Prüfungen abgeschlossen ist, wird die resultierende Punktzahl berechnet und langfristig in der Datenbank gespeichert.

das sicher zu tun, haben wir eine Hibernate Schlüsselstrategie verwenden, die die Datenbank Zeilen-ID in dem Objekt in Terracotta zuerst, dann speichert die Daten an die DB erzeugt, dann aus Terracotta entfernt. Dieses Szenario hat eine mögliche Race-Bedingung, wenn die App stürzt in die Datenbank nach dem Speichern, aber bevor aus Terracotta zu entfernen. In diesem Fall könnte die Anwendung versuchen, die Daten an die DB erneut zu speichern, möglicherweise die Schaffung von zwei Zeilen. Aber aufgrund der vorab generierten ID, können wir sagen, ob die Zeile wurde zuvor erfolgreich geschrieben oder nicht, und das Problem zu vermeiden.

Zusammenfassend Ich glaube nicht, Terracotta Ihre db in absehbarer Zeit ersetzt. Es ist noch zu neu operativ auch als solche in den meisten Geschäften in Betracht gezogen werden. Das Nutzungsmodell ist viel anders. Es gibt keine Abfrage oder SQL-Fähigkeit in den Heap (Ihre Abfrage-Fähigkeit von Ihrem Objektmodell definiert ist). Ich denke, es kann und beginne die Halbzeitdatennutzung zu ersetzen, wo es ist eine viel billiger und einfache Alternative. Doch für die Langzeitlagerung einige Leute damit zu experimentieren beginnen.

Andere Tipps

Terracotta ist Java nur. Wenn es in Ordnung ist für Sie in diese Technologie gesperrt werden, ohne die Möglichkeit, nur einige Skripte zu schreiben (ohne die JVM) in anderen Sprachen, dann mit ihm zu gehen.

Der Artikel Kill Your Datenbank mit Terracotta wirklich schön war.

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