2011-10-30 31 views
1

全部,Ruby服务器的推荐存储平台/引擎

使用Ruby为基于文本的多人游戏制作自定义TCP/IP服务器。需要找到一个系统来坚持我的Ruby对象,并且对一些建议感到好奇。

服务器管理的数据量不会超过1GB,因为这是一个相当易于管理的数字,所以我很想找到一个持久性系统,它允许我将所有内容都保存在内存中,并且只在我将它写入磁盘时这样说(称为“保存事件” - 这些已经发生了其他不相关的原因,所以我可以钩上这些)。

理想的情况下,一些具有强烈的,ActiveRecord的,像Ruby接口将是巨大的,具有查询/检索等

我已经考虑有些事情。

  • 使用MySQL MEMORY表(优点:非常熟悉与它合作一个ActiveRecord,缺点:并非所有的数据,很容易通过关系系统表示,我会写我自己的系统,节省出来的表并在重新启动时重新构建它们,除非已经存在?)
  • MongoDB(优点:希望更好地了解它,并且我认为我们的数据非常适合基于文档的系统,缺点:不熟悉与它如何使用内存vs磁盘存储数据或我将如何触发'坚持一切'事件)
  • Redis(优点:似乎有我正在寻找的内存模型,缺点:不是熟悉它的所有或任何Ruby接口,不知道我们如何能够将我们的数据转换为纯键值)

我猜测有一个优雅的解决方案;如果MongoDB以我描述的方式大量使用内存,那很可能是它。

回答

1

MongoDB默认使用内存映射存储引擎并每隔60秒刷新一次磁盘。您可以配置此时间间隔,并且可以使用fsync命令将任何未决写入写入磁盘。

http://www.mongodb.org/display/DOCS/fsync+Command

使用MongoDB的与Mongoid创业板可能是一个不错的选择。 Mongoid使用ActiveModel,因此与ActiveRecord非常相似。

+0

啊,非常好。谢谢。 – tkrajcar

0

如果你的数据已经是关系型的(或者你宁愿走下关系路径),你应该考虑VoltDB,因为它总是在内存中运行,所以它很容易设置并且速度很快。