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

合理規(guī)劃:如何為APP選擇正確的數(shù)據(jù)庫?

數(shù)據(jù)庫 移動開發(fā)
數(shù)據(jù)庫有很多種,在設(shè)計應(yīng)用程序時我們經(jīng)常會用到,今天我們就一起來介紹數(shù)據(jù)庫的選擇方案幫你做出明智的選擇。

本文轉(zhuǎn)載自公眾號“讀芯術(shù)”(ID:AI_Discovery)

從事新項目總是令人極度興奮——可以自由地以自己喜歡的方式設(shè)計和構(gòu)建項目。但如果規(guī)劃得不合理,就會給未來帶來麻煩。需要作出的最關(guān)鍵的決定之一就是選擇APP數(shù)據(jù)庫,而此文的目的就是介紹數(shù)據(jù)庫的選擇方案——并列舉其優(yōu)勢和弊端以幫你明智地選擇數(shù)據(jù)庫。

[[390048]]

鍵值

數(shù)據(jù)庫的結(jié)構(gòu)像JSON對象,每個鍵都是唯一的,每個鍵都指向某個值。

 

合理規(guī)劃:如何為APP選擇正確的數(shù)據(jù)庫?

 

它把數(shù)據(jù)保存在內(nèi)存中,運行速度快,但有容量限制,所以難以存儲大量數(shù)據(jù)。由于沒用到硬盤,因而運行非常的快。因為不涉及查詢或連接,因此不需要擔(dān)心數(shù)據(jù)建模。由于沒有模式,開發(fā)人員總是可以靈活地根據(jù)自己的喜好更改數(shù)據(jù)。

 

合理規(guī)劃:如何為APP選擇正確的數(shù)據(jù)庫?

 

使用條件:

  • 這種技術(shù)主要用作緩存機(jī)制,頻繁獲取和觀察數(shù)據(jù)的某些部分時使用。
  • 因此,鍵值技術(shù)作為緩存機(jī)制,普遍與其他數(shù)據(jù)庫結(jié)合使用。

 

合理規(guī)劃:如何為APP選擇正確的數(shù)據(jù)庫?

 

寬立柱

寬立柱像注射了類固醇的鍵值。值被修改為存儲一組列,而不僅僅是普通數(shù)據(jù)。

 

合理規(guī)劃:如何為APP選擇正確的數(shù)據(jù)庫?

 

引入一組列之后,現(xiàn)在可以給相關(guān)數(shù)據(jù)分組,但仍沒有標(biāo)準(zhǔn)的模式。因此,每個鍵可以指向不同分組的數(shù)據(jù)。

由于沒有模式,它可以處理非結(jié)構(gòu)化數(shù)據(jù),并附帶一種名為CQL的查詢語言,類似于SQL,但功能要弱得多。數(shù)據(jù)以連續(xù)的流形式出現(xiàn),比如來自物聯(lián)網(wǎng)設(shè)備、股票市場、金融交易或Netflix觀看歷史。

 

合理規(guī)劃:如何為APP選擇正確的數(shù)據(jù)庫?

 

使用條件:

  • 寫頻
  • 不經(jīng)常更新或讀取

它仍然不是通用的。因此,它可以用于存儲來自所有不同應(yīng)用程序的歷史數(shù)據(jù)。

文檔型數(shù)據(jù)庫

它是我們使用的最流行的數(shù)據(jù)庫技術(shù)之一。很明顯,它包括文檔,每個文檔是一組鍵值對。它們是非結(jié)構(gòu)化的、不需要模式。

 

合理規(guī)劃:如何為APP選擇正確的數(shù)據(jù)庫?

 

文檔被分組到集合中,這些集合可以被構(gòu)造成邏輯層次結(jié)構(gòu)。邏輯數(shù)據(jù)集合以更有邏輯性的方式分組相關(guān)數(shù)據(jù),它似乎與關(guān)系數(shù)據(jù)庫相似。

 

合理規(guī)劃:如何為APP選擇正確的數(shù)據(jù)庫?

 

數(shù)據(jù)庫不能運行join查詢,怎么立刻獲得所有相關(guān)的數(shù)據(jù)呢?把它們?nèi)績Υ?。鼓勵非?guī)范化數(shù)據(jù)庫,已經(jīng)做好會出現(xiàn)數(shù)據(jù)復(fù)制/不一致的準(zhǔn)備。

讀取數(shù)據(jù)非???,但編寫和更新數(shù)據(jù)的同時要保證一致性卻是一項挑戰(zhàn)。文檔數(shù)據(jù)庫非常適合通用應(yīng)用程序,也可能非常適合大多數(shù)應(yīng)用程序、游戲和物聯(lián)網(wǎng)。

若對數(shù)據(jù)庫模式不甚了解,則記錄數(shù)據(jù)庫是最佳啟動方式。

流行文檔型數(shù)據(jù)庫

 

合理規(guī)劃:如何為APP選擇正確的數(shù)據(jù)庫?

 

數(shù)據(jù)量很多,而且數(shù)據(jù)之間有著直接或間接的關(guān)系時,文檔型數(shù)據(jù)庫無法容納。在這種情況下,必須運行多個復(fù)雜的查詢,然后在前端應(yīng)用程序中合并所有接收到的數(shù)據(jù),或者可以使用關(guān)系數(shù)據(jù)庫,其中這些復(fù)雜的查詢由數(shù)據(jù)庫管理。

關(guān)系數(shù)據(jù)庫

這類數(shù)據(jù)庫中,著名的一些包括MySQL, Postgres, and SQL Server。他們出現(xiàn)很長時間了,對于很對應(yīng)用程序來說都是不錯的選擇。

想象一個汽車工廠,它有不同的輪轂來生產(chǎn)汽車部件。假設(shè)門是在一個地方制造的,而輪子、車身和內(nèi)部零件都是在各自不同的地方制造的。

 

合理規(guī)劃:如何為APP選擇正確的數(shù)據(jù)庫?

 

假設(shè)的車廠藍(lán)圖

每個制造的部件都有一個唯一的ID。所以一旦汽車組裝完畢,就可以從不同的地方取來所有的零件,然后組裝汽車。

 

合理規(guī)劃:如何為APP選擇正確的數(shù)據(jù)庫?

 

建造這樣一個工廠需要制定藍(lán)圖,以確保整個生產(chǎn)過程非常高效和優(yōu)化。這個藍(lán)圖在使用在數(shù)據(jù)庫中時稱為模式。因此,需要為數(shù)據(jù)庫規(guī)劃模式,以確保數(shù)據(jù)庫也有效性高,能滿足應(yīng)用程序的數(shù)據(jù)需求。

缺點:

  • 久而久之,改變車廠的布局就像改變要求一樣,會浪費汽車公司的時間和金錢。大型應(yīng)用程序也面臨相似的情況。確保在要求清晰的情況下使用關(guān)系數(shù)據(jù)庫。
  • 而且,一旦建立一個每月能制造30輛車的工廠,那么就很難把產(chǎn)量提升到90。同理,關(guān)系數(shù)據(jù)庫很難擴(kuò)大規(guī)模,但也有例外,如Cockroach DB 和 PostgreSQL,在設(shè)計時添加了擴(kuò)大規(guī)模的功能。

優(yōu)點:

  • SQL數(shù)據(jù)庫符合ACID標(biāo)準(zhǔn),這意味著即使讀寫操作之間可能會失敗,數(shù)據(jù)有效性和完整性也不會受到損害-這使其非常適合與銀行/金融相關(guān)的數(shù)據(jù)。
  • 一旦有了合適的模式,就可以確保存儲的數(shù)據(jù)將始終存儲在一組驗證之后的固定結(jié)構(gòu)中,這些驗證先模式中得以定義。

哪個最適合你?

  • 若要求清晰,不需要大幅改變要求,選擇這個。
  • 若對需求不是很確定,并且處于某種試驗階段,那么最好使用NoSQL數(shù)據(jù)庫。

要是不需要建立模式,直接把關(guān)系存成數(shù)據(jù),該用哪個呢?

圖表數(shù)據(jù)庫

數(shù)據(jù)存儲在節(jié)點中,關(guān)系被定義為邊。一起來看看怎么做。

要想在SQL數(shù)據(jù)庫里查找所有學(xué)習(xí)計算機(jī)科學(xué)的學(xué)生,則需要一個查找/中間人表,該表單獨存儲所有學(xué)習(xí)計算機(jī)科學(xué)的學(xué)生的記錄。

 

合理規(guī)劃:如何為APP選擇正確的數(shù)據(jù)庫?

 

圖表更加簡單明了,因為不必分別存儲數(shù)據(jù)中的關(guān)系部分,而自動帶有新式數(shù)據(jù)。

 

合理規(guī)劃:如何為APP選擇正確的數(shù)據(jù)庫?

 

關(guān)系更易于記錄和保持在圖表里

有了這個直接顯示兩個節(jié)點間的關(guān)系的新方式,復(fù)雜的聯(lián)接查詢變得更簡單,與SQL相比,極大地提高了數(shù)據(jù)的性能。因此,因依賴大量聯(lián)接操作而降低數(shù)據(jù)的性能時,可以使用這種數(shù)據(jù)庫。

可搜索數(shù)據(jù)庫

如果你正在構(gòu)建一個像谷歌這樣的應(yīng)用程序,在小字符串查詢搜索中,你必須快速返回所有匹配的記錄,那么這就是一個全文搜索引擎。這些數(shù)據(jù)庫基于始于1999年的Apache Lucene項目。

Algolia和MeiliSearch是全文搜索引擎。它們看起來類似于文檔類型的數(shù)據(jù)庫。有一個索引,并向它添加數(shù)據(jù)對象。搜索數(shù)據(jù)庫引擎將分析文檔中的所有文本,并創(chuàng)建稱為倒排索引的東西。

當(dāng)你查詢某項內(nèi)容時,數(shù)據(jù)庫只會檢查反向索引,這使得整個過程看起來異常迅速,即使對于大型數(shù)據(jù)庫也是如此。

多模式數(shù)據(jù)庫

可供選擇的數(shù)據(jù)庫有很多,但最流行的似乎是Fauna。作為應(yīng)用開發(fā)者,我們通常只關(guān)心JSON,我們可以在應(yīng)用前端使用它。有了Fauna,不必?fù)?dān)心數(shù)據(jù)建模、模式、縮放、復(fù)制或規(guī)范化過程,只需獲取JSON數(shù)據(jù)即可。使用GraphQL定義訪問數(shù)據(jù)的方式。

以一個類似instagram的應(yīng)用程序的場景為例。將使用JSON為用戶、發(fā)布和查詢定義規(guī)則。

 

合理規(guī)劃:如何為APP選擇正確的數(shù)據(jù)庫?

 

我們剛剛上傳了GraphQL模式,它會自動創(chuàng)建一個集合來存儲數(shù)據(jù)和查詢數(shù)據(jù)的索引。在幕后,它將考慮如何利用基于您提供的GraphQL模式的不同范例,如關(guān)系、圖表和文檔。只是簡單地以與在文檔數(shù)據(jù)庫中相同的方式添加數(shù)據(jù),而且不會受到數(shù)據(jù)建模的限制。

優(yōu)點:

  • 它符合ACID標(biāo)準(zhǔn)、運行速度極快。
  • 不必?fù)?dān)心基礎(chǔ)設(shè)施。只需定義對數(shù)據(jù)的需求,云端會解決其余的問題。

缺點:

  • 價格明顯是個缺點。好的東西不是免費的,但是對于想要學(xué)習(xí)的開發(fā)人員以及小型創(chuàng)業(yè)公司,它們確實提供了慷慨的計劃/開源選項。

 

合理規(guī)劃:如何為APP選擇正確的數(shù)據(jù)庫?

 

以下是Fauna列出的值得注意的重要特點:

 

合理規(guī)劃:如何為APP選擇正確的數(shù)據(jù)庫?

 

這些并不是全部!要學(xué)習(xí)的不同的數(shù)據(jù)庫還有很多,但我希望本文的介紹能幫你在設(shè)計應(yīng)用程序時思路清晰有方向。

 

責(zé)任編輯:華軒 來源: 讀芯術(shù)
相關(guān)推薦

2017-11-20 13:32:54

微服務(wù)數(shù)據(jù)庫開發(fā)

2024-03-28 09:00:00

NoSQL數(shù)據(jù)庫

2022-05-05 09:11:33

數(shù)據(jù)庫加密數(shù)據(jù)安全

2022-10-31 15:04:59

2019-10-12 10:11:02

數(shù)據(jù)集聚類算法

2021-02-23 23:06:31

數(shù)據(jù)庫Redis技術(shù)

2020-07-02 09:20:40

物聯(lián)網(wǎng)數(shù)據(jù)庫IoT

2017-11-09 08:51:28

2018-03-22 08:54:00

NoSQLRUM云服務(wù)

2022-07-25 09:46:25

React數(shù)據(jù)庫

2021-03-15 07:55:55

API網(wǎng)關(guān)微服務(wù)架構(gòu)

2023-08-09 17:43:40

光纖電纜光纖終端盒

2017-11-24 09:30:58

數(shù)據(jù)庫微服務(wù)云架構(gòu)

2015-06-08 10:07:04

公有云云服務(wù)商選擇公有云遷移

2022-04-27 18:20:19

綜合布線交換機(jī)網(wǎng)絡(luò)

2018-05-22 14:16:35

云計算數(shù)據(jù)庫云原生

2018-11-02 08:30:43

開源數(shù)據(jù)庫技巧

2012-10-30 09:28:52

2010-06-01 12:51:23

MySQL數(shù)據(jù)庫

2019-06-20 05:53:49

物聯(lián)網(wǎng)設(shè)備連接協(xié)議物聯(lián)網(wǎng)
點贊
收藏

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