【问题标题】:performance considerations multi language site性能考虑多语言站点
【发布时间】:2013-03-24 09:55:21
【问题描述】:

我正在为一个包含大量信息的新全球网站启动一个项目。所有这些信息都必须本地化。我建立了相当多的网站,其中大多数只是部分使用一种以上的语言,但从未做过如此多的本地化。

假设我们有以下数据:

国家、城市、商店、产品和产品生产商。

在实体商店、产品和产品生产者中,可以将数据本地化。国家的语言是强制性的,但可以在旁边添加 N 种额外的语言。这是用来向其他国家的人展示信息的,我也需要搜索一下。

我最初的想法是为每个本地化表创建一个父表,其中只有一个 id 和一些不可本地化的元数据,然后创建一个引用父表、国家代码和本地化字段的子表。

这种结构可能会导致连接,因此可能会对性能产生不良影响。有没有人有这种结构的经验?有什么我应该考虑的吗?还有其他更好的方法吗?

【问题讨论】:

  • 这适用于网站本地化。 (字段标签等)。这是关于内容的,这不是最好的方法。谢谢你的建议。这个想法的有趣之处在于从数据库中加载内存中的所有语言内容,因为它不会经常更改。

标签: database database-design localization


【解决方案1】:

首先,我不会担心在性能方面加入一些连接。正如我们所说,过早的优化是万恶之源。首先创建一个干净的设计,然后再担心性能。

您真正需要做的是准确地思考您要本地化的内容以及原因。我们在 LedgerSMB 中所做的正是您所建议的,即带有事实的表格(如果您愿意的话),然后是带有翻译的表格。

保持一切正常运行的关键是考虑减少来回发送的实际查询数量。运行一个连接 60 个左右的字符串然后你的应用程序处理它们是一回事。在性能方面,向数据库发送 60 个不同的查询以分别提取 1 个字符串会更糟。

还将您的主要字符串保存在 .po 文件或类似文件中,并为此使用本地化框架。这不是非此即彼的事情。

【讨论】:

  • 谢谢,您的建议让我重回正轨。首先采用理想的情况,然后采用出色的性能技巧。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-12
  • 2011-01-14
相关资源
最近更新 更多