gpt4 book ai didi

mongodb - 对于多语言电子商务网站来说,高效的 MongoDB 架构设计是什么?

转载 作者:行者123 更新时间:2023-12-02 02:56:50 25 4
gpt4 key购买 nike

我正在设计一个多语言电子商务网站。产品具有不同的特性。某些属性对于每种语言都是不同的(例如颜色),其他属性对于所有语言都是相同的(例如 SKU)。属性不是预定义的,例如汽车具有除浓缩咖啡机之外的其他属性。

我想设计数据库架构,以便:

  1. 用 y 语言搜索并表示类别 x 的所有产品非常快
  2. 重复数据量低
  3. 我不想使用带翻译的文件

我正在考虑使用这样的架构:

{
_id: ObjectID("5dd87bd8d77d094c458d2a33"),

multi-lingual-properties: ["name", "description"],

name: { en: "Super fast car",
nl: "Hele snelle auto"},

description: { en: "Buy this car",
nl: "Koop deze auto"},

price: 20000,

sku: "SFC106X",

categories: [ObjectID("4bd87bd8277d094c458d2a43")]
}

是否有更好的替代方案?当我使用这个模式时会遇到什么问题?

最佳答案

比我预期的要晚,但这就是我们现在正在实现的......

背景:我们的系统应该能够从多个电子商务网站导入产品库存,因此灵 active 和国际化非常重要。

EAV模型:

db.products.find()

{ "_id" : ObjectId("4e9bfb4b4403871c0f080000"),
"name" : "some internal name",
"sku" : "10001",
"company" : { /* reference to another collection */ }, "price" : 99.99,
"attributes": {
"description": { "en": "english desc", "de": "deutsche Beschreibung" },
"another_field": { "en": "something", "de": "etwas"},
"non_i18n_field": { "*": xxx }
}
}

我们还需要属性的元数据,其中包括管理编辑提示(使用什么输入表单)和属性名称的国际化。示例:

db.eav.attributes.find()

{ "_id" : ObjectId("127312318"),
"code" : "description",
"labels" : { "en" : "Description", "de": "Beschreibung" },
"type" : "text-long",
"options" : [],
"constraints" : [ ]
}

这个想法是属性元数据将非常大并且不会被复制。大多数情况下,操作将使用(动态)属性的值来完成。如果属性元数据需要显示UI等,可以单独加载和缓存,并由属性代码引用。

因此,默认情况下,属性的所有内容均支持 i18n。

i18n-enabled-attributes 的查询很简单:

db.products.find({ attribute.description.en: "搜索到的值"})

未翻译的属性可能会很麻烦,因为它们需要在查询中进行特殊处理:

属性.描述.*

还不确定我们将如何处理这些属性。例如。数值不需要翻译。欢迎对此有任何想法。

尽管如此,我们仍然没有使用这种结构,所以这些实际上只是实现前的想法。我预计当我们开始在实践中使用它时,会出现更多问题,即为 CRUD 操作执行 UI 等。

关于mongodb - 对于多语言电子商务网站来说,高效的 MongoDB 架构设计是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7528733/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com