当前位置: 首页 > 科技观察

如何设计多语言数据库_0

时间:2023-03-22 00:51:00 科技观察

作者|译者AntonelloZanini|策展人李锐|如果它开发的应用能够被全世界的用户使用,那么这个目标的实现会更容易。由于并非所有用户都精通英语或开发者的母语,因此需要将其设计为多语言应用程序。但如果没有多语言数据库,这是不可能的。设计一个可以轻松扩展到新语言的多语言数据库并不容易。这就是开发人员应该依赖最佳实践的原因。这就是您需要多语言数据库的原因、三种出色的多语言数据库设计以及如何选择最适合您的数据库。下面开始介绍多语言数据库设计的相关知识。1.为什么需要多语言数据库?一个开发者可能永远不知道他的应用程序会增长多少,也许他为朋友开发的一个小应用程序有可能成为数百万人使用的国际服务。如果你想开发一个可以在国际上销售的产品,它需要多语言设计,这样它就可以很容易地适应不同的文化和市场。这就是国际化的意义所在。构建一个为国际化做好准备的数据库意味着设计一个可以存储多语言数据的数据库。换句话说,后端应该能够以多种语言提供数据。为此,后端应连接多语言数据库并从中检索这些数据。需要注意的是,允许用户在多种语言之间切换是一个很好的功能。这对于多语言或非母语人士特别有用。因此,即使正在开发的项目规模较小且针对当地市场,开发商也应考虑使用多语言数据库。毕竟,开发人员无法提前知道他们的项目会有多成功以及哪些用户会使用它。这就是为什么开发人员选择正确的多语言数据库设计至关重要的原因。2.为什么要精心设计多语言数据库更改数据库是一项非常耗时费力的操作,因为它会引发连锁反应。修改数据库的结构涉及更改连接到它的后端。这可能还需要开发人员相应地调整依赖于这些后端的前端。总之,更改数据库结构并非没有后果的操作。因此,开发人员应该设计一个无需频繁更改即可轻松扩展的数据库。可以想象,设计多语言数据库的方法有很多种,每种解决方案都各有利弊。鉴于数据库结构对应用程序的重要性,开发人员必须仔细设计多语言数据库。这就是为什么开发人员不应该从头开始而是依赖最佳实践的原因。这里有一些基于最佳实践的多语言设计。3.多语言数据库的三种设计作为一名为世界各地的初创公司工作的全栈网络开发人员,让我们更深入地探讨三种多语言设计的优缺点。(1)Column方法该方法中,多语言表中每个字段的列数等于数据库支持的语言数。具体来说,列名称模板如下所示:columnName_languageCode优点:简单:易于实施。快速:不涉及JOIN或慢速查询。未翻译字段的轻松处理:如果某个字段缺少翻译,可以直接使用。例如,COALESCE(name_it,name_en)→如果name_it不为NULL,则返回name_it,否则返回name_en默认值。缺点:难于维护:添加新语言需要更新数据库中的所有多语言表。这也意味着开发人员需要相应地更改他们的ORM映射。不可扩展:表中的列数随着应用程序支持的语言数量而增长。复杂的SELECT条件:忘掉SELECT*。需要在SELECT子句中指定每一列。(2)Row方法在该方法中,每种语言都有一行。识别多语言实体的关键是以下复合主键:优点:简单:易于实现。快速:检索翻译的内容只需要languageCode的WHERE条件。缺点:复合主键更复杂:使用复合主键使得识别元素和JOIN查询更加复杂。重复内容:为简单起见,未翻译的列通常存储与默认语言行列中相同的内容。这意味着开发人员将在多语言表格中有大量重复的内容。(3)翻译表法该方法中,多语言表的每一列都是翻译表的一个外键。也就是说,每一个涉及多语言领域的表都有一个翻译表。优点:可扩展性:添加新语言不涉及改变数据库结构。支持历史数据:翻译表可用于跟踪实体中每个字段的翻译历史。集中式:一个实体的所有翻译都存储在一个地方。缺点:查询复杂:查询变得更加复杂,因为与多语言实体相关的信息分布在两个表中。慢查询:检索与实体关联的所有信息需要与列一样多的JOIN。考虑到JOIN的性能负担,这很容易成为问题。重复表:它增加了数据库表的大小。此外,需要两个表来定义每个多语言实体。4.什么是最合适的多语言数据库设计?每种多语言数据库设计都有一定的优点和缺点。这意味着没有一刀切的方法。开发人员必须根据他们的要求、需要和目标谨慎选择。我亲自在不同的项目中使用了这三个,并从中学习。在处理大数据时,开发人员可能会对连接查询或重复内容感到不知所措,特别是从包含数百万行的表的数据库的角度来看,列方法尤其有用。虽然列方法不是最具可扩展性的解决方案,但它是唯一可行的大数据设计。另一方面,当业务可以得到在当地市场运营的附属公司的支持时,行方法很有用。在这种情况下,内容的重复甚至可能是一个优势。最后,如果开发人员正在寻找一种优雅且可扩展的解决方案,并且不介意性能缺陷,那么转换表方法是正确的设计,因为转换表方法更适合数据不暴涨的项目。5.结论设计一个可以存储多语言数据的数据库对于帮助开发人员在国际范围内扩展业务至关重要。此外,多语言数据数据库也允许非母语人士使用其应用程序。更改数据库是一项复杂且耗时的操作,对应用程序架构的影响不可忽略。这就是为什么开发人员应该从一开始就将他们的数据库设计为多语言的。本文分析了设计多语言数据库的三种不同方法,检查了它们的优缺点,并详细说明了哪种方法最合适。原文链接:https://dzone.com/articles/designing-a-multi-language-database