到目前为止,我一直使用关系数据库(确实很高兴!)。但是,最近,我发现了Parse并发现它很好,因此决定尝试一下。但是,它带有NoSQL数据库。我仍在努力解决这个问题。所以我的问题是,您如何建议实现本地化?我可以想到以下方法,您怎么看?
"strings":
{
"en" :
{
"title" : "English title"
}
"de" :
{
"title" : "Deutsch Titel"
}
}
"strings_en": <Pointer to a *strings* object>
"strings_de": <Pointer to a *strings* object>
// And here's one *strings* document
{
"title" : "My English title"
}
{
"title_en" : "English title",
"title_de" : "Deutsch titel",
"description_en" : "English description",
"description_de" : "Deutsch beschreibung"
}
方法A:对我来说很有意义,但是我不知道一种简单的方法(在Parse框架中)仅将相关数据发送回客户端。它将所有字符串发送到客户端->冗余带宽使用
方法B:来自关系数据库背景,我不希望有太多的列(对于30种不同的语言,它最终可能有30个不同的列),而且客户端不能只使用object.strings。它总是必须在字段名称的末尾附加语言代码,这很乏味(也很冒险)。但是这种方法对我来说最有意义。
方法C:我听到你说“如果要使NoSQL适应关系数据库设计范例,NoSQL有什么意义”
方法D:是的,您最终将获得很多列,但是我觉得一个主要目标是将所有必要的数据保留在一个文档中,而不是将它们分发到1个以上的文档中。字段数量根本不是问题。因此,我现在要采用这种方法。
那么,如何在NoSQL db模式中实现本地化?
最佳答案
最近在RavenDB论坛上有一个关于该主题的讨论。 See Here
像NoSQL中的大多数事情一样,有许多不同的选项。出现的一个想法是,在许多文档数据库(如RavenDB)中,您可以具有基于字符串的“语义”键。这些可以被利用来提供数据本地化。
例如,考虑多个文档共同代表一个产品:
products/1
{
"Price" : 10.00
{
products/1/en
{
"Name" : "ball"
}
products/1/es
{
"Name" : "bola"
}
products/1/fr
{
"Name" : "balle"
}
不可本地化的属性存储在作为主要文档 key 的
products/1
中。但是,可本地化的字符串可以放入与它们的键相关的其他文档中。为了使这项工作顺利进行-使用不同的文档会产生一些管理开销。在RavenDB中-这将由一个自定义的“捆绑包”提供。 (它尚不存在-我正在研究它。)其他数据库可能具有不同的实现细节,可能仍使这种方法可行。
关于parsing - 如何使用NoSQL实现本地化,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15729830/