Ege*_*nar 8 parsing localization nosql
到目前为止,我一直使用关系数据库(确实很开心!).然而,最近,我发现Parse并发现它非常好所以决定尝试一下.但是,它附带一个NoSQL数据库.我仍然试图绕过它.所以我的问题是,你会如何推荐实现本地化?我能想到以下方法,你怎么看?
方法A:在文档上有一个"字符串"字段,并在该字段中存储所有特定于语言的数据.例如,
"strings":
{
"en" :
{
"title" : "English title"
}
"de" :
{
"title" : "Deutsch Titel"
}
}
Run Code Online (Sandbox Code Playgroud)方法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"
}
Run Code Online (Sandbox Code Playgroud)方法C:就像在关系数据库模式中一样,有一个带有语言代码的单独字符串表.分别查询此表/文档并合并结果
方法D :(新)类似于方法B,在两个文档中支持许多列,目的是将所有相关数据保存在同一文档中.
{
"title_en" : "English title",
"title_de" : "Deutsch titel",
"description_en" : "English description",
"description_de" : "Deutsch beschreibung"
}
Run Code Online (Sandbox Code Playgroud)方法A:对我有意义,但我不知道一种简单的方法(在Parse框架中)只将相关数据发送回客户端.它会将所有字符串发送到客户端 - >冗余带宽使用
方法B:来自关系数据库背景,我不喜欢有太多列的前景(它最终可能有30种不同语言的30个不同的列),而且,客户端不能只使用对象.字符串.它总是必须在字段名称的末尾附加语言代码,这是繁琐的(并且也有风险).但这种方法对我来说最有意义.
方法C:我可以听到你说'如果你要将NoSQL适应关系数据库设计范式,那么NoSQL有什么意义'
方法D:是的,你最终会得到可笑的许多专栏,但我觉得一个关键的目标是将所有必要的数据保存在一个文档中,而不是将它们分发到超过1个文档.并且字段数根本不是问题.因此,我现在正采用这种方法.
那么,如何在NoSQL数据库模式中实现本地化?
最近 RavenDB 论坛上有一个关于这个话题的讨论。 看这里
与 NoSQL 中的大多数事物一样,有许多不同的选项。提出的一个想法是,在许多文档数据库(如 RavenDB)中,您可以拥有基于字符串的“语义”键。这些可用于提供数据本地化。
例如,考虑多个文档一起工作来表示一个产品:
products/1
{
"Price" : 10.00
{
products/1/en
{
"Name" : "ball"
}
products/1/es
{
"Name" : "bola"
}
products/1/fr
{
"Name" : "balle"
}
Run Code Online (Sandbox Code Playgroud)
不可本地化的属性存储在products/1主文档键中。但是,可本地化的字符串可以进入通过其键相关的其他文档中。
为了使这项工作顺利进行 - 处理不同的文档需要一些管理开销。在 RavenDB 中 - 这将由自定义“包”提供。(它还不存在 - 我正在研究它。)其他数据库可能有不同的实现细节,这些细节可能仍然允许这种方法可行。
| 归档时间: |
|
| 查看次数: |
1301 次 |
| 最近记录: |