偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

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

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

?作者 | Antonello Zanini

譯者 | 李睿

策劃 | 武穆

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

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

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

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

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

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

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

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

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

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

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

3.多語(yǔ)言數(shù)據(jù)庫(kù)的三個(gè)設(shè)計(jì)  

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

(1)列方法

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

圖片

具體來(lái)說(shuō),這是列名模板的樣子:columnName_languageCode

優(yōu)點(diǎn): 

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

缺點(diǎn): 

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

(2)行方法

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

圖片

優(yōu)點(diǎn):

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

缺點(diǎn): 

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

(3)翻譯表法

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

圖片

優(yōu)點(diǎn): 

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

缺點(diǎn): 

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

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

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

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

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

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

5.結(jié)論  

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

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

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

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

2024-05-09 08:14:09

系統(tǒng)設(shè)計(jì)語(yǔ)言多語(yǔ)言

2014-04-16 14:50:20

Spark

2011-08-05 17:54:33

Cocoa Touch 多語(yǔ)言

2014-07-09 09:20:06

WPFWPF應(yīng)用

2012-04-19 11:40:21

Titanium

2009-08-25 10:44:50

C#實(shí)現(xiàn)多語(yǔ)言

2019-08-22 10:20:41

Ubuntu設(shè)置語(yǔ)言

2023-08-04 10:18:15

2021-09-07 10:17:35

iOS多語(yǔ)言適配設(shè)計(jì)

2021-06-29 21:48:32

開(kāi)源語(yǔ)言架構(gòu)

2009-08-03 17:33:01

ASP.NET多語(yǔ)言支

2009-07-17 10:02:29

WPF程序多語(yǔ)言支持

2021-07-24 11:41:42

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

2023-09-04 19:19:36

語(yǔ)言模型LLM

2020-04-14 09:50:02

2010-11-19 09:25:06

to_dataOracle

2009-08-31 17:13:09

2022-10-27 22:11:40

react擴(kuò)展庫(kù)語(yǔ)言

2019-12-05 16:00:15

Vim插件編程文本編輯器

2011-04-12 10:59:46

Oracle數(shù)據(jù)庫(kù)
點(diǎn)贊
收藏

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