Ale*_*lex 11 persistence smalltalk squeak seaside pharo
所以我现在已经使用Smalltalk大约6个月了(Squeak和Pharo),主要是做数据分析,我即将开始我的第一个Seaside应用程序.所以你向所有Smalltalkers提出的问题是,你最喜欢的持久性解决方案是什么?我一直在看Magma,GOODS和GLORP.我是一个长期的python黑客,所以我得到ORM,但似乎Magma或GOODS将是一个更好的解决方案,因为它们看起来像面向对象.
快速说明:我想在多个VM上扩展我的应用程序,因此只需将数据保存到图像就不会真正起作用.
谢谢!
Jör*_*tag 12
如果要在多台虚拟机向规模化,你可能想看看在GemStone的/ S.
但请注意,GemStone是一种专有的商业产品.所以,你将不得不付出代价.但是,定价模式通常以这样的方式设计,如果您需要更大的版本,那么您通常也会让用户为该版本付费.4 GiByte磁盘/ 1 GiByte RAM/1 CPU版本的价格从0美元开始.
另外需要注意的是GemStone Smalltalk是它自己的方言,所以你的Squeak代码可能不会被修改,但应该很容易移植.(例如,GemStone工程师创建了一个适配器,允许您将Monticello(Squeak的版本控制系统)软件包加载到GemStone/S中,它们通常也会确保Seaside运行.)
那么,什么是GemStone?基本上,它是具有自动对象持久性的分布式VM.与普通的Smalltalk VM相比,它最容易解释.如果你有两个并行运行的Smalltalk虚拟机,每个虚拟机都有自己的对象内存(即垃圾收集器管理的东西).那个对象内存在RAM中.在GemStone中,群集中的所有VM共享相同的对象内存,它存在于磁盘上,而不是RAM中.因此,您不需要数据库,甚至不需要面向对象的数据库,因为您的对象始终在任何地方"就在那里".
(这只是一个非常简单的描述.例如,堆不是真正在VM之间共享.这没有意义,你不想复制你在网络上创建的每个临时对象.相反,你有一个全局存储库对象(基本上是一个字典)就像垃圾收集器将从一些众所周知的根对象开始,然后保留从那里可以访问的所有对象,并删除那些不可用的对象,GemStone将从全局存储库对象开始,并且只保留/复制从那里可以访问的对象.)
GemStone还具有数据库功能,因此访问全局存储库包含在ACID事务中,并且有一种SQL启发但Smalltalkish查询语言.
GemStone有一个很好的设备,他们称之为" GLASS "(适用于GemStone,Linux,Apache,Seaside和Smalltalk),类似于众所周知的"LAMP"(Linux,Apache,MySQL和PHP).GLASS包括预装了Seaside的GemStone免费版,以及在Xubuntu上运行Apache的所有设置,所有内容都整齐地打包到VMWare磁盘映像中.