1

I'm building an API and I need to store some data, I'm using JSON as my response format instead of XML but I really dont know how to store my data, for example I have this

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

the problem is that inside the user i have many arrays so maybe it may affect my db performance so I dont know if to choose NoSQL or Relational DB. So my question really is, does having too many nested arrays with many items inside an object affect my db performance? or should i choose another method for saving my data

4

1 回答 1

1

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

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

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

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

于 2012-09-20T04:48:45.557 回答