【问题标题】:Localization pattern with mongodb c# driver使用 mongodb c# 驱动程序的本地化模式
【发布时间】:2015-06-18 19:34:34
【问题描述】:

我最近开始使用 mongodb c# 驱动程序。我需要知道一种模式来本地化存储中的数据。到目前为止,我找到了这样的架构:

{
  _id: "id",
  description: [{
    lan: "en-US",
    description: "name_in_english"
  }, {
    lan: "zh-TW",
    description: "name_in_traditional_chinese"
  }]
}

这是一个理性的选择吗?如何编写查询以仅选择给定语言的一个描述对,以避免加载所有语言?

【问题讨论】:

  • 这个answer可以给你一些方向。

标签: c# .net mongodb mongodb-.net-driver nosql


【解决方案1】:

我会选择稍微不同的结构;区域代码可用于 .NET 中更紧凑的类似字典的结构。您可以简单地从Dictionary<string, string> 继承,因此您将自动使用默认的字典序列化程序。

我在以前的公司 Pactas 写过类似的东西,代码是开源的 (LocalizableString.cs)。这不是作为一级公民,而是作为一个嵌入式属性,它将序列化为:

{
  "foo" : "bar",
  "myLocalizableString" : { 
      "_c" : "default", 
      "en" : "English (fallback)", 
      "en-US" : "American English", ... }
}

关于流量,我会选择按原样读取所有数据并在客户端进行语言过滤 - 如果数据很少更改并且不是很大,那比调用数据库要好得多 完全没有,但这当然取决于用例。但是,如果您有很多写入和非常大的集合,我可能会颠倒顺序并将每个翻译存储为一个单独的对象。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-02
    • 2013-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-13
    相关资源
    最近更新 更多