首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NoSQL是否适合存储用户数据?

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

Stack Overflow用户
提问于 2017-02-08 00:17:53
回答 1查看 2.3K关注 0票数 2

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

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

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

代码语言:javascript
复制
ID    | Data  
------|------  
1     | { "Example1":"foo", "Example2":"bar"}
2     | { "Example1":"bar", "Example2":"foo"}

这样合适吗?有关数据的假设之一是,它不会特别正常,因为用户将更改一系列不同的设置来满足他们的需要,因此,给定选项是否启用将根据用户的不同而有很大差异。正是这种不规则性使我相信,为了性能起见,NoSQL数据库在这里可能更合适。

不必返回具有多个不同值的长数据集,客户端设备将被传递回带有它们的首选项的JSON,这将被适当地解析。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-08 00:35:34

根据你显示的数据,不,NoSQL不会给你买任何东西。也不会对造成任何伤害,但关系也同样有效。

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

代码语言:javascript
复制
ID    | Example1  |  Example2  | Example3 
------|-----------|------------|---------  
1     | foo       | bar        |
2     | bar       | foo        |
3     | blah      | baz        | qux

然后你就开始利用NoSQL了。也许用户3使用的是另一个具有附加参数的系统。使用NoSQL,这并不重要--随时添加一个新列,数据库将存储它,而不需要做任何额外的工作。

当然,读取端可能需要了解在每一列中存储的数据。它可能需要对数据进行内省,看看"Example3“是否存在,或者它可能不在乎。

一般来说,最重要的是你可以存储任何一组数据。实际上,可能存在完全不同的行(尽管如果数据之间有一些相似之处,则比较容易)。此外,根据系统的不同,您可能会发现搜索"Example3=qux“更容易。这是位提供程序依赖的,可能仍然需要使用索引来提供快速读取。

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

https://stackoverflow.com/questions/42102461

复制
相关文章

相似问题

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