NoSql,Sql或平面文件

时间:2014-03-26 22:15:27

标签: sql node.js nosql flat-file

我刚刚开始玩Node.js和Socket.io,我计划建立一个小型多人游戏。可能是一些简单的事情,比如每个玩家都有一个角色,他们可以在竞技场中跑来跑去,并试图互相杀戮。

但是,我不确定如何最好地存储数据。我可以想象在诸如角色和武器之类的物体之间会有一些松散的关系,但是我可能会在需要它们时将它们加载到系统中,当我不再需要它们时将它们保存回来。

在这些术语中,编写对象'会更简单。 out to file而不是涉及数据库。使用NoSql文档数据库或只是坚持使用旧的Sql服务器?

2 个答案:

答案 0 :(得分:2)

我的建议是从NoSQL开始。

Flatfile很难,因为你会非常非常频繁地读取和写入这些数据。每个玩家一个文件并不是一个可怕的起点 - 并且对于第一个原型可能没问题 - 但是你将会写出大量的文件。文件系统并不擅长这一点。原型阶段的一个好处是你可以快速调试 - 只需输出用户的当前状态。使用.json文件或类似的.yaml格式,将非常快速地启动您(并且当原型开始组合时,您可以转换为NoSQL方法。)

SQL并不是一种可怕的方法。如果您熟悉这一点,那么您最终将构建一个真实的模式,并创建各种表并将用户数据加入到它们中。这可以帮助您思考游戏,但我认为您最终会花费大量时间来弄清楚如何规范化数据和编写联接。由于你似乎对这个问题不熟悉(因此提出问题),你可能会做错了(并妨碍游戏的真棒)和/或只是花太多时间在它上面。

NoSQL - 使用文档存储模型 - 就像读写用户对象一样。您最终每次都会重写您的用户对象 - 但这种访问(键值,由用户ID访问)是高效的。您可能真的,非常快速地进入原型,以及构建游戏机制的重要方面。从长远来看,键值访问具有高度可扩展性。

答案 1 :(得分:-2)

如果要存储播放器信息,请使用sql。但是,如果您拥有基于连接的系统。在玩家连接时只需要存储信息的东西,以及在连接丢失后你不需要"保存&#34 ;;然后将它存储在内存中。

否则,我会说你应该坚持使用Sql。数据库经过优化,快速,试用,测试和真实。您可以使用Sql数据库出错。