所以,我一直在使用Smalltalk的约6个月现在(佳乐和菲罗),主要是做数据分析,我要开始我的第一个海边的应用程序。所以,我的所有问题,你Smalltalkers外面有什么是你最喜欢的持久性解决方案?我一直在看岩浆,商品和GLORP。我是一个长期的Python黑客,所以我得到的ORM,但它似乎像岩浆或商品将是一个更好的解决方案,因为他们似乎面向对象的。

有一个快速的注意:我想我的扩展在多个虚拟机的应用程序,所以只需将数据保存到图像不会真正的工作。

谢谢!

有帮助吗?

解决方案

如果你想扩展在多个虚拟机,你可能要看一看在 GemStone的/ S

要注意,然而,宝石具有专有的,商业产品 。所以,你的的必须付出代价。然而,定价模式一般被设计以这样一种方式,如果你的需要的一个更大的版本,那么你将一般也有用户的付费的该版本。价格在0 $为4 GiByte磁盘/ 1 GiByte RAM / 1 CPU版本开始进行。

另外要注意的是,GemStone的Smalltalk是自己的方言,所以你佳乐代码可能不会运行未经修改的,但应该很容易移植。 (例如,宝石工程师们创造了一个适配器,允许你蒙蒂塞洛(佳乐的版本控制系统)封装加载到GemStone的/ S,同时他们一般确保海滨运行。)

那么,什么是GemStone的?基本上,它是自动的对象持久化的分布式虚拟机。这是最简单的比较正常的Smalltalk VM来解释。如果你有两个Smalltalk的虚拟机上运行并排端,他们每个人都有自己的对象内存(即垃圾收集器管理的东西)。而该对象存储在RAM中。在GemStone的,所有VM在群集共享的相同对象内存它生活在磁盘上,而不是在RAM中。所以,你不这样做的需要的数据库,甚至不是一个,因为你的对象是“就在那里”,无处不在,面向对象的所有的时间。

(这只是一个非常简单的说明。例如,堆不是的真正的跨虚拟机共享。这是没有意义的,你不会想复制您在创建的每个临时对象网络,而是你有一个全球性的资源库对象(基本上,字典)就像垃圾收集器会在一些知名的根对象开始,然后保留可达从那里的所有对象,并删除那些不,宝石将在全球存储库对象开始,并持续/复制的是从那里到达的对象。)

宝石也有数据库十岁上下的功能,因此进入全球信息库被包裹在ACID事务,并有一个SQL启发,但Smalltalkish查询语言。

宝石有一个很好的应用,他们称之为 “玻璃”(对于GemStone的,Linux操作系统,Apache,海边和Smalltalk)类似于公知的 “LAMP”(Linux操作系统,Apache,MySQL和PHP)。玻璃包括GemStone的与海边的免费版预装和一切设置与Xubuntu上的顶部运行Apache,一切整齐地打包成一个VMWare的磁盘映像。

其他提示

玻璃本身并不能真正帮助让您对您的数据的概述。 SandstoneDB一样。您可以使用SandstoneDB与商品和玻璃,(或者甚至是单独的),这取决于你想多少钱,花(砂岩是在所有的感官自由,玻璃是商业,但免费为小型安装免费的啤酒)。

请查看的sandstoneDB页面。而这里的商品适配器。与玻璃使用SandstoneDB,只需切换店里SDMemoryStore,请参阅SDMemoryStore类注释中SandstoneDB。

如果可以选择,我会选择同样的玻璃或岩浆(这取决于到底有多大是项目)。

要考虑到GLorp在佳乐只有在PostgreSQL工作。我们开发SqueakDBX这与大多数数据库进行通信的数据库驱动程序。我们现在正在修改Glorp这样您就可以与他们(不仅是PostgreSQL的)使用它。不过这要等到今年年底。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top