我希望为用户提供在服务器端存储服务设置的功能,以允许他们在设备之间同步数据。
之前我没有使用NoSQL所以我不确定它是否合适,但是从我进行的研究来看,这似乎是一个合理的选择。
例如,如果我将用户的设置存储在JSON格式的字符串中,并使用NoSQL数据库及其用户ID作为标识符,则数据库将如下所示:
ID | Data
------|------
1 | { "Example1":"foo", "Example2":"bar"}
2 | { "Example1":"bar", "Example2":"foo"}
这合适吗?关于数据的一个假设是它不会特别规则,因为用户将改变一系列不同的设置以适应它们,因此是否启用给定选项将根据用户而有很大差异。这种不规则性使我相信NoSQL数据库在这里可能更适合于性能 客户端设备将返回带有其首选项的JSON,而不必返回具有多个不同值的长数据集,并且将根据需要对其进行解析。
答案 0 :(得分:1)
根据您显示的数据,不,NoSQL不会给您带来任何好处。它不会伤害任何东西,但关系也会起作用。
但是,如果您没有将“数据”列转换为字符串,而是将其存储为对象:
ID | Example1 | Example2 | Example3
------|-----------|------------|---------
1 | foo | bar |
2 | bar | foo |
3 | blah | baz | qux
然后你就开始利用NoSQL了。也许用户3正在使用具有附加参数的不同系统。使用NoSQL并不重要 - 随时添加一个新列,数据库将存储它而无需任何额外的工作。
当然,阅读方可能需要了解每列中存储的数据。它可能必须反省数据以查看“Example3”是否存在或者可能不关心。
一般来说,你得到的最重要的事情是你可以存储任何数据集。实际上,可能存在彼此完全不同的行(尽管如果数据之间存在某些相似性,则往往更容易)。此外,根据系统,您可能会发现搜索“Example3 = qux”更容易。这有点依赖于提供者,可能仍然需要使用索引来提供快速读取。