Frage

Also ich habe jetzt für ca. 6 Monate Smalltalk mit (Squeak und Pharo), vor allem Datenanalyse zu tun, und ich bin über mein erstes Seaside App zu starten. Also meine Frage an alle Smalltalker euch da draußen ist, was ist Ihre Lieblings-Persistenz-Lösung? Ich habe mich bei Magma, Waren und GLORP. Ich bin ein Python-Hacker seit langer Zeit, so dass ich ORM, aber es scheint, wie Magma oder SIND wäre eine bessere Lösung, da sie objektorientiert zu sein scheinen.

Eine kurze Anmerkung: Ich möchte, dass meine App über mehrere VMs skalieren, so dass nur Daten an die Bildspeicherung wird nicht wirklich funktionieren

.

Danke!

War es hilfreich?

Lösung

Wenn Sie mehrere VMs skalieren über wollen, möchten Sie vielleicht einen Blick auf GemStone / S .

Beachten Sie jedoch, dass GemStone ein proprietäre, Handelsprodukt . Also, Sie wird , dafür zu zahlen haben. Allerdings ist das Preismodell der Regel so ausgelegt, dass, wenn Sie Notwendigkeit eine größere Ausgabe dann werden Sie in der Regel auch die Benutzer müssen pay für diese Ausgabe. Die Preise beginnen bei $ 0 für die 4 GiByte disk / 1 GiByte RAM / 1 CPU-Version.

Ein andere Sache zu beachten ist, dass GemStone Smalltalk sein eigener Dialekt ist, so dass Ihr Code Squeak wird wahrscheinlich nicht unmodifizierten laufen, sollte aber recht einfach zu portieren sein. (Zum Beispiel haben die GemStone Ingenieure einen Adapter erstellt, die Sie Monticello (Squeak des Versionskontrollsystem) Pakete in GemStone / S laden kann, auch im Allgemeinen stellen sie sicher, dass Meer läuft.)

Also, was ist GemStone? Im Grunde ist es ein verteiltes VM mit automatischer Objekt-Persistenz. Es ist am einfachsten einen normalen Smalltalk VM zu erklären, im Vergleich zu. Wenn Sie zwei Smalltalk VMs Side-by-Side-Lauf haben, jeder von ihnen hat seinen eigenen Objektspeicher (das heißt, die Sache die Garbage Collector verwaltet). Und das Objekt Speicher ist im RAM. In GemStone alle VMs in einem Cluster teilen sich die gleichen Objektspeicher und sie lebt auf der Festplatte, nicht im RAM. Also, Sie dies nicht tun Notwendigkeit eine Datenbank, nicht einmal eine objektorientierte ein, weil Ihre Objekte sind „einfach da“, überall, die ganze Zeit.

(Das ist nur eine sehr vereinfachende Beschreibung. Zum Beispiel ist der Haufen nicht wirklich über VMs gemeinsam genutzt. Das würde keinen Sinn machen, würden Sie wollen nicht jedes temporäre Objekt replizieren Sie über erstellen das Netzwerk. Stattdessen haben Sie ein Objekt globalen Repository (im Grunde, ein Wörterbuch) und genau wie der Garbage Collector wird bei einigen bekannten Wurzelobjekt beginnen und dann alle Objekte halten, die von dort aus erreichbar sind, und löschen Sie diejenigen, die nicht sind , GemStone wird auf dem globalen Repository-Objekt, und beharren / replizieren nur die Objekte, die erreichbar sind von dort aus starten.)

GemStone hat auch Datenbank-ish-Funktionen, so dass der Zugriff auf das globale Repository wird in ACID-Transaktionen eingewickelt, und es gibt eine SQL-inspirierte aber Smalltalkish Abfragesprache.

GemStone hat ein schönes Gerät, das sie " GLASS " (für GemStone nennen, Linux, Apache, Am Meer und Smalltalk) analog zu dem bekannten "LAMP" (Linux, Apache, MySQL und PHP). GLASS enthält die gratis Ausgabe von GemStone mit Seaside vorinstalliert und alles Setup mit Apache oben auf Xubuntu laufen, alles fein säuberlich in ein VMWare Disk-Image verpackt.

Andere Tipps

GLASS ist allein nicht wirklich helfen, einen Überblick über Ihre Daten zu geben. SandstoneDB tut. Sie SandstoneDB mit Waren und GLASS verwenden können, (oder sogar alleine), je nachdem, wie viel Geld Sie wollten verbringen (Sandstein ist frei in alle Richtungen, ist GLASS kommerzielle, aber frei wie in Freibier für kleine Anlagen).

Schauen Sie sich der sandstoneDB . Und hier ist der Adapter für IST . Zur Nutzung SandstoneDB mit Glas, nur schalten Sie den Speicher auf SDMemoryStore finden Sie in den Klassen Kommentare zu SDMemoryStore in SandstoneDB.

Wenn Sie können wählen, würde ich auch Glas oder Magma wählen (es hängt davon ab, wie groß ist das Projekt).

Beachten Sie, dass GLorp in Squeak nur mit PostgreSQL funktioniert. Wir entwickelten SqueakDBX, die eine Datenbanktreiber ist mit den meisten Datenbanken zu kommunizieren. Wir modifizieren jetzt Glorp so, dass man es mit ihnen allen (nicht nur PostgreSQL) verwenden können. Aber das wird nicht bis Ende dieses Jahres.

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