首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >哪种存储特定数据的方法会更有效?

哪种存储特定数据的方法会更有效?
EN

Stack Overflow用户
提问于 2019-01-08 20:10:25
回答 1查看 46关注 0票数 0

我有一个用于游戏的现有数据库--目前使用MySQL存储信息--我希望测试ArangoDB来比较速度。

我想知道是否最好将玩家的所有信息存储在一个集合中,或者将两者分开是否更有效(甚至更好的做法)。

在MySQL中,我没有真正的选择,但使用ArangoDB时我选择了。

例如,在MySQL中存储库存信息:

代码语言:javascript
复制
    +---------------------------+
    | user_id | item_id | count |
    +---------+---------+-------+
    |       1 |       1 |     7 |
    |       1 |       2 |     4 |
    +---------+---------+-------+

或者在ArangoDB,我可以这样做:

  1. 所有信息的单一集合: { _key:“唯一用户ID",健康: 100,货币: 52.38,// .,库存:{ item1: 7,item2: 4 //,.}}
  2. 将上述收集分为两种不同的收集(一种用于健康、金钱等,另一种用于库存数据): //‘用户’集合{ _key:“唯一用户ID",健康: 100,货币: 52.38,.} //‘库存’集合{ _key:“唯一用户ID",item1: 7,item2: 4/,.}

以上两种方法中的哪一种(甚至是我没有想到的另一种方法)会更有效?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-09 14:50:24

答案取决于您期望应用程序如何使用数据。下面是一些关于如何选择如何存储数据的提示:

  • 库存数据是否经常发生变化,在访问用户信息时是否通常需要?如果是这样的话,那么您可能最好使用选项1(用用户信息存储库存数据)。
  • 您希望尽可能地从关系存储过渡到文档存储吗?然后,您可能可以在单独的集合中使用选项2。Arangodb支持跨集合的连接,并且运行得很好。
  • 现在,如果你不介意一点学习曲线,我建议选择3:图遍历。在本例中,您将以类似于以下方式存储数据: //用户顶点集合 { _key:"1",健康: 100,货币: 52.38,.} //项目顶点集合 { itemID: 1,// .}, { itemID: 2/.} //库存边缘收集 { _from:用户\1 _to:项目1,计数:7 }, { _from: user\1 _to: item\2,count: 4}

由于ArangoDB对图形遍历有本地支持,所以上面的设置是为非常快的查找而优化的。当开始从关系数据库转移到图形数据库时,经验法则是主表变成集合,中间(连接)表变成边缘集合。(显然还有更多,但这是一个好的开始)

如果我是从零开始,我可能会首先选择选项3。但是,正如我在开始时提到的,这取决于您打算如何使用数据。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54099033

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档