直到现在,我一直在使用关系数据库(确实很开心!)。然而,最近,我发现了Parse,发现它非常好,所以决定试一试。但是,它带有一个 NoSQL 数据库。我仍在努力解决它。所以我的问题是,您如何建议实现本地化?我可以想到以下方法,你怎么看?
方法 A:在文档上有一个“字符串”字段,并将所有语言特定的数据存储在该字段中。例如,
"strings": { "en" : { "title" : "English title" } "de" : { "title" : "Deutsch Titel" } }
方法 B:文档上有多个字段,每个字段指向一个特定语言的文件。定义另一个名为strings的文档。例如,
"strings_en": <Pointer to a *strings* object> "strings_de": <Pointer to a *strings* object> // And here's one *strings* document { "title" : "My English title" }
方法 C:就像在关系数据库模式中一样,有一个带有语言代码的单独字符串表。单独查询此表/文档并合并结果
方法 D:(新)与方法 B 类似,优先考虑多个列而不是两个文档,目的是将所有相关数据保存在同一个文档中。
{ "title_en" : "English title", "title_de" : "Deutsch titel", "description_en" : "English description", "description_de" : "Deutsch beschreibung" }
方法 A:对我来说很有意义,但我不知道一种简单的方法(在 Parse 框架中)仅将相关数据发送回客户端。它将所有字符串发送到客户端 -> 冗余带宽使用
方法 B:来自关系数据库背景,我不喜欢有太多列的前景(它最终可能有 30 种不同的列,用于 30 种不同的语言),而且客户端不能只使用对象。字符串。它总是必须在字段名称的末尾附加语言代码,这很乏味(也很危险)。但这种方法对我来说最有意义。
方法 C:我可以听到您说“如果您要使 NoSQL 适应关系数据库设计范式,那么 NoSQL 有什么意义”
方法 D:是的,你最终会得到很多可笑的列,但我觉得一个关键目标是将所有必要的数据保存在一个文档中,而不是将它们分布在 1 个以上的文档中。字段数量根本不是问题。因此,我现在采用这种方法。
那么,如何在 NoSQL 数据库模式中实现本地化?