我应该在API上使用NoSQL还是Relational DB

时间:2012-09-20 02:23:36

标签: json nosql relational-database

我正在构建一个API,我需要存储一些数据,我使用JSON作为我的响应格式而不是XML但我真的不知道如何存储我的数据,例如我有这个

 {users: [
  user: "name",
  products: [Array with more than 100 products],
  etc: "other items"], etc...
 }

问题是在用户内部我有很多数组,所以它可能会影响我的数据库性能所以我不知道是否选择NoSQL或Relational DB。 所以我的问题是,是否有太多嵌套数组在对象内有很多项影响我的数据库性能?或者我应该选择另一种方法来保存我的数据

1 个答案:

答案 0 :(得分:1)

如果您正在使用NoSQL数据库,那么将数据存储在多行(或规范化)中会有效地忽略NoSQL的最佳目的之一。将它们全部存储在一起将使您的软件更快,因为IO将更少。

在我的项目中,我将整个用户数据和属性(第三方应用可以通过OAuth设置)存储在一个文档中。 MongoDB的文档大小限制为16MB,这只是一个软限制。

在这种情况下,您可以确定哪些字段对所有字段(id,name等)都是通用的,然后为这些公共字段设置最大大小(比如名称将是128个字符)。 MongoDB字符串是UTF-8。您现在可以确定这些静态字段将占用每个文档的X个字节。剩余的16MB-X字节存在于每个文档中,用于分配数组和自定义属性等。

将最大尺寸M设置为这些值,因此您可以设置上限值N =(16MB - X字节)/ M 这将有效地防止您的文档数据溢出限制。