NoSQL是否适合存储用户数据?

时间:2017-02-08 00:17:53

标签: json database nosql

我希望为用户提供在服务器端存储服务设置的功能,以允许他们在设备之间同步数据。

之前我没有使用NoSQL所以我不确定它是否合适,但是从我进行的研究来看,这似乎是一个合理的选择。

例如,如果我将用户的设置存储在JSON格式的字符串中,并使用NoSQL数据库及其用户ID作为标识符,则数据库将如下所示:

ID    | Data  
------|------  
1     | { "Example1":"foo", "Example2":"bar"}
2     | { "Example1":"bar", "Example2":"foo"}

这合适吗?关于数据的一个假设是它不会特别规则,因为用户将改变一系列不同的设置以适应它们,因此是否启用给定选项将根据用户而有很大差异。这种不规则性使我相信NoSQL数据库在这里可能更适合于性能 客户端设备将返回带有其首选项的JSON,而不必返回具有多个不同值的长数据集,并且将根据需要对其进行解析。

1 个答案:

答案 0 :(得分:1)

根据您显示的数据,不,NoSQL不会给您带来任何好处。它不会伤害任何东西,但关系也会起作用。

但是,如果您没有将“数据”列转换为字符串,而是将其存储为对象:

ID    | Example1  |  Example2  | Example3 
------|-----------|------------|---------  
1     | foo       | bar        |
2     | bar       | foo        |
3     | blah      | baz        | qux
然后你就开始利用NoSQL了。也许用户3正在使用具有附加参数的不同系统。使用NoSQL并不重要 - 随时添加一个新列,数据库将存储它而无需任何额外的工作。

当然,阅读方可能需要了解每列中存储的数据。它可能必须反省数据以查看“Example3”是否存在或者可能不关心。

一般来说,你得到的最重要的事情是你可以存储任何数据集。实际上,可能存在彼此完全不同的行(尽管如果数据之间存在某些相似性,则往往更容易)。此外,根据系统,您可能会发现搜索“Example3 = qux”更容易。这有点依赖于提供者,可能仍然需要使用索引来提供快速读取。