Alors j'utilise Smalltalk depuis environ 6 mois maintenant (Squeak and Pharo), principalement en faisant des analyses de données, et je suis sur le point de démarrer ma première application de bord de mer. Donc, ma question à tous vos petits spltalkers est, quelle est votre solution de persistance préférée? J'ai regardé Magma, Marchandises et Glorp. Je suis un pirate python de longue date, alors je reçois orm, mais cela semble être magma ou que des marchandises seraient une meilleure solution, car ils semblent orientés objet. P>
Remarque rapide: je veux mettre l'accumulation de mon application sur plusieurs VM, il suffit donc de sauvegarder des données à l'image ne fonctionnera pas vraiment. P>
merci! p>
3 Réponses :
Si vous souhaitez accumuler sur plusieurs VMS, vous voudrez peut-être consulter Gemstone / s < / a>. p>
Sachez cependant que Gemstone est un Produit spécial, commercial . Donc, vous les em> doivent payer pour cela. Cependant, le modèle de tarification est généralement conçu de manière à ce que vous besoin em> une plus grande édition, vous aurez généralement également les utilisateurs payer em> pour cette édition. Les prix commencent à 0 $ pour la version 4 Gibyte Disk / 1 Gibyte RAM / 1 Version CPU. P>
Une autre chose à noter est que Gemstone Smalltalk est sa propre dialecte, de sorte que votre code SQUAK ne fonctionnera probablement pas non modifié, mais devrait être assez facile à porter. (Par exemple, les ingénieurs de pierres précieuses ont créé un adaptateur qui vous permet de charger des packages Monticello (Système de contrôle de la version de Squeak) dans Gemstone / S, également, ils s'assurent généralement que la balade en bord de mer.) P>
Alors, qu'est-ce que la pierre précieuse? Fondamentalement, c'est un VM distribué avec une persistance automatique de l'objet. Il est plus facile d'expliquer comparé à un VM SmallTalk Normal. Si vous avez deux smalltalk VMS fonctionnant côte à côte, chacun a sa propre mémoire d'objet (c'est-à-dire la chose que le collecteur des ordures gère). Et cette mémoire d'objet est en RAM. Dans Gemstone, tous les ordinateurs virtuels d'un groupe partagent la mémoire même em> la mémoire d'objet et em> il vit sur le disque et non en RAM. Donc, vous ne pas besoin em> une base de données, pas même un objet orienté objet, car vos objets sont "juste là", partout, tout le temps. P>
(ce n'est qu'une description très simpliste. Par exemple, le tas n'est pas vraiment em> partagé entre VMS. Cela n'aurait pas de sens, vous ne voudriez pas reproduire tous les objets temporaires que vous créez sur le réseau. Au lieu de cela, vous avez un objet de référentiel global (fondamentalement, un dictionnaire) et tout comme le collecteur des ordures commencera à un objet racine bien connu, puis gardez tous les objets accessibles à partir de là et supprimez ceux qui ne sont pas , Gemstone commencera à l'objet de référentiel global et persistez / reprogrammez seuls les objets qui sont accessibles à partir de là.) P>
Gemstone dispose également de fonctionnalités de base de données-ISH, l'accès au référentiel global est donc enveloppé dans des transactions acides et une langue de requête inspirée mais smalltallish est inspirée par SQL. P>
Gemstone a un joli appareil qu'ils appellent " verre " (pour Gemstone, Linux, Apache, Mer et smalltalk) analogue à la "lampe" bien connue (Linux, Apache, MySQL et PHP). Le verre comprend l'édition Gratis de la pierre précieuse avec un bord de mer préinstallé et tout ce qui se passe avec Apache en cours d'exécution sur Xubuntu, tout ce qui est parfaitement emballé dans une image de disque VMware. P>
Je suis tout à fait d'accord, Gemstone / S est la voie à suivre.
Intéressant ... Donc, si j'avais une collection avec 10 millions d'objets contenus au sein de la collection totale i> dans ma mémoire locale? - J'essaie juste d'essayer de déterminer où mes données seraient.
Toute la collection ne doit pas nécessairement être dans la mémoire locale i> la mémoire ... Les gros objets sont implémentés à l'interne à l'aide de Brees (fondamentalement) de manière à pouvoir être chargés dans la mémoire locale - votre ensemble de travail est conservé dans la mémoire locale et Le reste est sur le disque
Son genre de bummer qu'il n'y a pas vraiment une bonne solution open source, mais je me regarde dans la pierre précieuse et il semble vraiment slick
Gemstone a également un produit Java et dans la communauté Java, il existe des concurrents open source (par exemple en terre cuite). Je suppose que la communauté SmallTalk ne dérange pas vraiment, ils veulent simplement la meilleure solution, et s'il s'avère que la meilleure solution coûte un peu d'argent, alors alors soyez-le.
Si vous pouvez choisir, je choisirais également du verre ou du magma (cela dépend de la taille du projet). p>
prendre en compte que Glorp dans Squeak ne fonctionne que avec PostgreSQL. Nous avons développé SqueakdBX qui est un pilote de base de données pour communiquer avec la plupart des bases de données. Nous modifions maintenant GLORP afin que vous puissiez l'utiliser avec chacun d'eux (non seulement PostgreSQL). Mais ce ne sera pas jusqu'à la fin de cette année. P>
Le verre seul ne vous aide pas vraiment à vous donner un aperçu de vos données. Sandstonedb fait. Vous pouvez utiliser du sandstonedb avec des produits et du verre, (ou même seul), en fonction de l'argent que vous souhaitez dépenser (le grès est gratuit dans tous les sens, le verre est commercial, mais gratuit comme de la bière gratuite pour les petites installations). p>
Check out La page Sandstonedb . Et voici L'adaptateur pour les marchandises . Pour utiliser SANDSTONEDB avec verre, passez simplement le magasin sur SDMemoryStore, voir les commentaires de la classe sur SDMemoryStore à Sandstonedb. P>