所以我现在已经使用Smalltalk大约6个月了(Squeak和Pharo),主要做数据分析,我即将开始我的第一个Seaside应用程序。所以我向你们所有人提出的问题是,你最喜欢的持久性解决方案是什么?我一直在看Magma,GOODS和GLORP。我是一个长期的python黑客,所以我得到了ORM,但似乎Magma或GOODS会是一个更好的解决方案,因为它们看起来是面向对象的。
快速说明:我想在多个虚拟机上扩展我的应用程序,因此只需将数据保存到映像就不会真正起作用。
谢谢!
所以我现在已经使用Smalltalk大约6个月了(Squeak和Pharo),主要做数据分析,我即将开始我的第一个Seaside应用程序。所以我向你们所有人提出的问题是,你最喜欢的持久性解决方案是什么?我一直在看Magma,GOODS和GLORP。我是一个长期的python黑客,所以我得到了ORM,但似乎Magma或GOODS会是一个更好的解决方案,因为它们看起来是面向对象的。
快速说明:我想在多个虚拟机上扩展我的应用程序,因此只需将数据保存到映像就不会真正起作用。
谢谢!
如果要跨多个VM进行扩展,可能需要查看 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有一个很好的设备,他们称之为“玻璃“(对于GemStone,Linux,Apache,Seaside和Smalltalk)类似于众所周知的”LAMP“(Linux,Apache,MySQL和PHP).GLASS包括预装了Seaside的GemStone的免费版本以及在Apache上运行的所有设置Xubuntu,一切都整齐地打包到VMWare磁盘映像。
如果要跨多个VM进行扩展,可能需要查看 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有一个很好的设备,他们称之为“玻璃“(对于GemStone,Linux,Apache,Seaside和Smalltalk)类似于众所周知的”LAMP“(Linux,Apache,MySQL和PHP).GLASS包括预装了Seaside的GemStone的免费版本以及在Apache上运行的所有设置Xubuntu,一切都整齐地打包到VMWare磁盘映像。
单独使用GLASS并不能帮助您概览数据。 SandstoneDB确实如此。您可以将SandstoneDB与GOODS和GLASS(或甚至单独使用)一起使用,具体取决于您希望花多少钱(砂岩在所有意义上都是免费的,GLASS是商业用途,但免费啤酒用于小型装置)。
查看 sandstoneDB页面。而且这里 GOODS的适配器。要将SandstoneDB与GLASS一起使用,只需将存储切换到SDMemoryStore,请参阅SandstoneDB中SDMemoryStore上的类注释。
如果你可以选择,我也会选择GLASS或Magma(这取决于项目有多大)。
考虑到Squeak中的GLorp仅适用于PostgreSQL。我们开发了SqueakDBX,它是一个与大多数数据库进行通信的数据库驱动程序。我们现在正在修改Glorp,以便您可以将它们与所有这些一起使用(不仅仅是PostgreSQL)。但这不会到今年年底。