我希望为用户提供在服务器端存储服务设置的能力,允许他们在设备之间同步数据。
我以前没有使用过NoSQL,所以我不确定它是否合适,但是从我所做的研究来看,这似乎是一个合理的选择。
因此,例如,如果我要将用户的设置存储在JSON格式的字符串中,并使用带有用户ID的NoSQL数据库作为标识符,则数据库如下所示:
ID | Data
------|------
1 | { "Example1":"foo", "Example2":"bar"}
2 | { "Example1":"bar", "Example2":"foo"}这样合适吗?有关数据的假设之一是,它不会特别正常,因为用户将更改一系列不同的设置来满足他们的需要,因此,给定选项是否启用将根据用户的不同而有很大差异。正是这种不规则性使我相信,为了性能起见,NoSQL数据库在这里可能更合适。
不必返回具有多个不同值的长数据集,客户端设备将被传递回带有它们的首选项的JSON,这将被适当地解析。
发布于 2017-02-08 00:35:34
根据你显示的数据,不,NoSQL不会给你买任何东西。也不会对造成任何伤害,但关系也同样有效。
但是,如果您没有将"Data“列转换为字符串,而是将其存储为对象:
ID | Example1 | Example2 | Example3
------|-----------|------------|---------
1 | foo | bar |
2 | bar | foo |
3 | blah | baz | qux然后你就开始利用NoSQL了。也许用户3使用的是另一个具有附加参数的系统。使用NoSQL,这并不重要--随时添加一个新列,数据库将存储它,而不需要做任何额外的工作。
当然,读取端可能需要了解在每一列中存储的数据。它可能需要对数据进行内省,看看"Example3“是否存在,或者它可能不在乎。
一般来说,最重要的是你可以存储任何一组数据。实际上,可能存在完全不同的行(尽管如果数据之间有一些相似之处,则比较容易)。此外,根据系统的不同,您可能会发现搜索"Example3=qux“更容易。这是位提供程序依赖的,可能仍然需要使用索引来提供快速读取。
https://stackoverflow.com/questions/42102461
复制相似问题