自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

如何設(shè)計多語言數(shù)據(jù)庫

譯文
數(shù)據(jù)庫 其他數(shù)據(jù)庫
設(shè)計一個可以輕松擴展到新語言的多語言數(shù)據(jù)庫并不容易。這就是開發(fā)人員應(yīng)該依賴最佳實踐的原因。以下將介紹為什么需要多語言數(shù)據(jù)庫、三種出色的多語言數(shù)據(jù)庫設(shè)計,以及如何選擇最適合的多語言數(shù)據(jù)庫。 下面開始介紹有關(guān)多語言數(shù)據(jù)庫設(shè)計的知識。

?作者 | Antonello Zanini

譯者 | 李睿

策劃 | 武穆

讓數(shù)以百萬計的用戶使用自己開發(fā)的應(yīng)用程序是每個開發(fā)人員的夢想。如果讓世界各地的用戶都能使用其開發(fā)的應(yīng)用程序,那么實現(xiàn)這一目標(biāo)將變得更加容易。由于并非所有用戶都精通英語或開發(fā)人員的母語,因此需要將其設(shè)計為多語言的應(yīng)用程序。但是如果沒有多語言數(shù)據(jù)庫,這是不可能實現(xiàn)的。 

設(shè)計一個可以輕松擴展到新語言的多語言數(shù)據(jù)庫并不容易。這就是開發(fā)人員應(yīng)該依賴最佳實踐的原因。以下將介紹為什么需要多語言數(shù)據(jù)庫、三種出色的多語言數(shù)據(jù)庫設(shè)計,以及如何選擇最適合的多語言數(shù)據(jù)庫。 

下面開始介紹有關(guān)多語言數(shù)據(jù)庫設(shè)計的知識。 

1.為什么需要多語言數(shù)據(jù)庫?  

開發(fā)人員可能永遠不知道他的應(yīng)用程序?qū)鲩L多少,也許他為朋友開發(fā)的一個小應(yīng)用程序有可能成為數(shù)百萬人使用的國際服務(wù)。如果希望開發(fā)的產(chǎn)品能夠在國際上得以推廣,則需要對其進行多語言設(shè)計,以便可以輕松地使其適應(yīng)不同的文化和市場。這就是國際化的意義所在。

建立一個為國際化做好準備的數(shù)據(jù)庫意味著設(shè)計一個可以存儲多語言數(shù)據(jù)的數(shù)據(jù)庫。換句話說,后端應(yīng)該能夠提供多種語言的數(shù)據(jù)。為此,后端應(yīng)連接并從多語言數(shù)據(jù)庫中檢索這些數(shù)據(jù)。

需要注意的是,讓用戶可以在多種語言之間切換是一個很好的功能。這對于多語種或非母語人士特別有用。因此,即使開發(fā)的項目很小并且針對本地市場,開發(fā)人員也應(yīng)該考慮使用多語言數(shù)據(jù)庫。畢竟,開發(fā)人員無法提前知道其項目將取得多大成功以及哪些用戶將使用它。以下介紹為什么開發(fā)人員選擇正確的多語言數(shù)據(jù)庫設(shè)計是至關(guān)重要的。 

2.為什么應(yīng)該精心設(shè)計多語言數(shù)據(jù)庫  

就時間和精力而言,更改數(shù)據(jù)庫是一項非常昂貴的操作,因為它會引發(fā)連鎖反應(yīng)。修改數(shù)據(jù)庫的結(jié)構(gòu)涉及更改連接到它的后端。這可能還需要開發(fā)人員相應(yīng)地調(diào)整依賴這些后端的前端??傊?,更改數(shù)據(jù)庫結(jié)構(gòu)不是沒有后果的操作。因此,開發(fā)人員應(yīng)該設(shè)計一個可以輕松擴展且無需頻繁更改的數(shù)據(jù)庫。

可以想象,設(shè)計多語言數(shù)據(jù)庫有多種方法,每種解決方案都有其優(yōu)缺點??紤]到數(shù)據(jù)庫結(jié)構(gòu)對應(yīng)用程序的重要性,開發(fā)人員必須精心設(shè)計多語言數(shù)據(jù)庫。這就是開發(fā)人員不應(yīng)該從頭開始而是依賴最佳實踐的原因。

以下介紹一些基于最佳實踐的多語言設(shè)計。 

3.多語言數(shù)據(jù)庫的三個設(shè)計  

作為一名為世界各地的初創(chuàng)公司工作的全棧web開發(fā)人員,讓我們更深入地探討三種多語言設(shè)計的優(yōu)缺點。

(1)列方法

在這種方法中,多語言表中的每個字段的列數(shù)等于數(shù)據(jù)庫支持的語言數(shù)。 

圖片

具體來說,這是列名模板的樣子:columnName_languageCode

優(yōu)點: 

  • 簡單:易于實施。 
  • 快速:不涉及JOIN或慢查詢。 
  • 易于處理未翻譯的字段:如果缺少某個字段的翻譯,可以直接使用。例如,COALESCE(name_it, name_en)→如果name_it不為NULL,則返回name_it,否則返回name_en默認值。 

缺點: 

  • 難以維護:添加新語言需要更新數(shù)據(jù)庫中所有的多語言表。這也意味著開發(fā)人員需要相應(yīng)地更改其ORM映射。 
  • 不可擴展:表中的列數(shù)隨著應(yīng)用程序支持的語言數(shù)量而增長。 
  • 復(fù)雜的SELECT條件:忘記SELECT*。需要在SELECT子句中指定每一列。 

(2)行方法

在這種方法中,每種語言都有一行。識別多語言實體的關(guān)鍵是以下復(fù)合主鍵: <id, languageCode>

圖片

優(yōu)點:

  • 簡單:易于實施。 
  • 快速:檢索翻譯的內(nèi)容只需要languageCode上的WHERE條件。 

缺點: 

  • 復(fù)合主鍵更加復(fù)雜:使用復(fù)合主鍵使識別元素和JOIN查詢更加復(fù)雜。 
  • 重復(fù)內(nèi)容:為簡化起見,非翻譯列通常存儲保存在默認語言行列中的相同內(nèi)容。這意味著開發(fā)人員將在多語言表格中擁有大量重復(fù)的內(nèi)容。 

(3)翻譯表法

在這種方法中,多語言表的每一列都是翻譯表的外部鍵。換句話說,每個涉及多語言字段的表都有一個翻譯表。 

圖片

優(yōu)點: 

  • 可擴展性:添加新語言不涉及更改數(shù)據(jù)庫結(jié)構(gòu)。 
  • 支持歷史數(shù)據(jù):可以使用翻譯表來跟蹤實體中每個字段的翻譯歷史。 
  • 集中式:一個實體的所有翻譯都存儲在一個地方。 

缺點: 

  • 查詢復(fù)雜:查詢變得更加復(fù)雜,因為與多語言實體相關(guān)的信息分布在兩個表中。 
  • 慢查詢:檢索與實體關(guān)聯(lián)的所有信息需要與列數(shù)一樣多的JOIN??紤]到JOIN對性能的負擔(dān),這很容易成為問題。 
  • 重復(fù)表:它增加了數(shù)據(jù)庫表的大小。另外,需要兩個表來定義每個多語言實體。 

4.什么是最適合的多語言數(shù)據(jù)庫設(shè)計?  

每種多語言數(shù)據(jù)庫設(shè)計都有一定優(yōu)點和缺點。這意味著沒有萬能的方法。開發(fā)人員必須根據(jù)自己的要求、需要和目標(biāo)仔細選擇。我個人在不同的項目中使用了這三種方法,并從中吸取了經(jīng)驗教訓(xùn)。

當(dāng)處理大數(shù)據(jù)時,開發(fā)人員可能在連接查詢或重復(fù)內(nèi)容時不堪重負,尤其是從擁有包含數(shù)百萬行的表的數(shù)據(jù)庫的角度來看,列方法特別有用。雖然列方法并不是最具可擴展性的解決方案,但它是唯一可行的大數(shù)據(jù)設(shè)計。

另一方面,當(dāng)企業(yè)能夠得到在當(dāng)?shù)厥袌鲞\營的分支機構(gòu)的支持時,行方法很有用。在這種情況下,內(nèi)容的重復(fù)甚至可能是一個優(yōu)勢。

最后,如果開發(fā)人員正在尋找一個優(yōu)雅且可擴展的解決方案,并且不介意性能缺陷,那么翻譯表法是正確的設(shè)計,因為翻譯表法更適合數(shù)據(jù)不會暴漲的項目。 

5.結(jié)論  

設(shè)計一個可以存儲多語言數(shù)據(jù)的數(shù)據(jù)庫,對于幫助開發(fā)人員在國際上擴展業(yè)務(wù)至關(guān)重要。此外,多語言數(shù)據(jù)的數(shù)據(jù)庫還允許非母語人士使用其應(yīng)用程序。更改數(shù)據(jù)庫是一項復(fù)雜且耗時的操作,對應(yīng)用程序架構(gòu)的影響不可忽視。這就是開發(fā)人員應(yīng)該從一開始就將數(shù)據(jù)庫設(shè)計為多語言的原因。

文章中分析了設(shè)計多語言數(shù)據(jù)庫的三種不同方法,研究了它們的優(yōu)缺點,并詳細介紹了最適合的方法。

原文鏈接:https://dzone.com/articles/designing-a-multi-language-database?

責(zé)任編輯:武曉燕 來源: 51CTO技術(shù)棧
相關(guān)推薦

2024-05-09 08:14:09

系統(tǒng)設(shè)計語言多語言

2014-04-16 14:50:20

Spark

2012-04-19 11:40:21

Titanium

2009-08-25 10:44:50

C#實現(xiàn)多語言

2011-08-05 17:54:33

Cocoa Touch 多語言

2014-07-09 09:20:06

WPFWPF應(yīng)用

2019-08-22 10:20:41

Ubuntu設(shè)置語言

2023-08-04 10:18:15

2021-09-07 10:17:35

iOS多語言適配設(shè)計

2021-06-29 21:48:32

開源語言架構(gòu)

2009-08-03 17:33:01

ASP.NET多語言支

2009-07-17 10:02:29

WPF程序多語言支持

2021-07-24 11:41:42

前端開發(fā)技術(shù)

2023-09-04 19:19:36

語言模型LLM

2010-11-19 09:25:06

to_dataOracle

2020-04-14 09:50:02

2019-12-05 16:00:15

Vim插件編程文本編輯器

2009-08-31 17:13:09

2022-10-27 22:11:40

react擴展庫語言

2009-08-21 18:46:30

下載Server 20
點贊
收藏

51CTO技術(shù)棧公眾號