您好,登錄后才能下訂單哦!
這篇文章主要講解了“怎么為應(yīng)用程序選擇合適的數(shù)據(jù)庫”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“怎么為應(yīng)用程序選擇合適的數(shù)據(jù)庫”吧!
內(nèi)存數(shù)據(jù)庫 Redis
我們的數(shù)據(jù)庫的結(jié)構(gòu)就像一個JSON對象-每個鍵都是唯一的,每個鍵都指向某個值。
它保留了內(nèi)存中的數(shù)據(jù),這非???,但具有容量限制,因此您無法存儲大量數(shù)據(jù)。并且由于沒有涉及的磁盤,一切都快速燃燒。
無需查詢或聯(lián)接,因此無需擔(dān)心太多數(shù)據(jù)建模。由于沒有架構(gòu),因此開發(fā)人員始終可以根據(jù)自己的需要靈活地更改數(shù)據(jù)。
何時使用這種技術(shù)
該技術(shù)主要用作緩存機(jī)制,用于某些時候非常頻繁地獲取和觀察部分?jǐn)?shù)據(jù)
因此,關(guān)鍵值技術(shù)與其他數(shù)據(jù)庫一起廣泛使用作為緩存機(jī)制
寬列數(shù)據(jù)庫 Cassandra
這就像鑰匙值,但在類固醇上。修改該值以存儲一組列,而不是簡單數(shù)據(jù)。
通過引入列,您現(xiàn)在可以對相關(guān)數(shù)據(jù)進(jìn)行分組,但是仍然沒有標(biāo)準(zhǔn)架構(gòu)。因此,每個鍵都可以指向不同的分組數(shù)據(jù)。
由于沒有模式,它可以處理非結(jié)構(gòu)化數(shù)據(jù),并附上一個名為CQL的查詢語言,這類似于SQL,但方法不那么強(qiáng)大。
數(shù)據(jù)源源不斷,例如來自IoT設(shè)備,股票市場,金融交易或Netflix的觀看歷史記錄。
何時使用此技術(shù)
經(jīng)常寫
少更新或讀取
這仍然不是通用的。因此,它可以用于存儲來自我們所有不同應(yīng)用程序的歷史數(shù)據(jù)。
文檔數(shù)據(jù)庫
這是我們使用的最受歡迎的數(shù)據(jù)庫技巧之一。這顯然由文檔組成,每個文檔都是一組鍵值對。它們是非結(jié)構(gòu)化,不需要模式。
文檔將組合成集合,并且這些集合可以構(gòu)造成邏輯層次結(jié)構(gòu)。
這種邏輯集合允許您以更邏輯的方式對相關(guān)數(shù)據(jù)進(jìn)行分組,這似乎類似于關(guān)系數(shù)據(jù)庫。
由于我們的數(shù)據(jù)庫無法運(yùn)行聯(lián)接查詢,我們該如何立即獲取所有相關(guān)數(shù)據(jù)?
我們將它全部存儲在一起!我們鼓勵數(shù)據(jù)庫的非規(guī)范化,數(shù)據(jù)復(fù)制/不一致是一種折衷,我們已準(zhǔn)備好。
讀取速度確實(shí)很快,但是在確保數(shù)據(jù)一致性的同時寫入和更新數(shù)據(jù)可能會有些困難。
文檔數(shù)據(jù)庫非常適合通用應(yīng)用程序,并且可能適合大多數(shù)應(yīng)用程序,游戲和IoT。
如果您真的不確定數(shù)據(jù)庫架構(gòu),那么文檔數(shù)據(jù)庫是最佳啟動方式。
流行的文檔類型數(shù)據(jù)庫
當(dāng)您有大量數(shù)據(jù)時,文檔風(fēng)格的數(shù)據(jù)庫就不夠用了,它們可能直接或間接地相互關(guān)聯(lián)。
對于這些情況,您將必須運(yùn)行多個復(fù)雜查詢,然后在前端應(yīng)用程序中合并所有接收到的數(shù)據(jù),或者可以使用關(guān)系數(shù)據(jù)庫,其中這些復(fù)雜查詢由數(shù)據(jù)庫管理。
我們都聽說過這些數(shù)據(jù)庫,最受歡迎的是MySQL,Postgres和SQL Server。他們在這里一直在這里,仍然是許多應(yīng)用程序的熱門選擇。
我們使用結(jié)構(gòu)化查詢語言(SQL)。
“關(guān)系”的意義
想象一下一家汽車工廠,那里有制造汽車零件的不同輪轂。
假設(shè)門是在一個地方制造的,而輪子,車身和內(nèi)飾都是在各自不同的位置制造的。
> Imaginary car-factory blueprint
每個制造的零件都有一個唯一的ID分配給它。
因此,一旦必須組裝汽車,您就可以從所有這些不同的位置提取所有零件并組裝汽車。
對于這樣一個工廠建立建立,我們會為這樣的工廠創(chuàng)建藍(lán)圖,這使得制造汽車的整體過程非常有效和最佳。當(dāng)它在數(shù)據(jù)庫中使用時,此藍(lán)圖稱為模式。
因此,我們需要規(guī)劃數(shù)據(jù)庫的模式,以確保我們的數(shù)據(jù)庫對應(yīng)用程序的數(shù)據(jù)需求非常有效。
不足之處
就像如何隨著時間的推移,改變汽車工廠的布局與改變要求一致,將花費(fèi)汽車公司一大堆時間和金錢,這是一個類似的情況,當(dāng)大規(guī)模的應(yīng)用程序必須這樣做時。當(dāng)您的要求清晰時,請務(wù)必使用關(guān)系數(shù)據(jù)庫。
此外,一旦您每月建造一個具有制造30輛汽車的工廠,您就無法輕易擴(kuò)展您的工廠,每月制造90輛汽車。同樣,我們的關(guān)系數(shù)據(jù)庫可能更加努力,但蟑螂DB和PostgreSQL有一些例外,旨在以比例為準(zhǔn)。
好的方面
SQL數(shù)據(jù)庫符合ACID標(biāo)準(zhǔn),這意味著即使讀寫操作之間可能會失敗,我們的數(shù)據(jù)有效性和完整性也不會受到損害-這使其非常適合與銀行/金融相關(guān)的數(shù)據(jù)
有一個模式到位后,可以放心,存儲的數(shù)據(jù)將始終存儲在一組驗(yàn)證之后的固定結(jié)構(gòu)中,您將在架構(gòu)中定義
最適合您的是什么?
如果您的要求很明確,并且確定您不需要對要求進(jìn)行任何大的更改,請繼續(xù)執(zhí)行此操作
如果您不太確定需求并處于實(shí)驗(yàn)階段,最好使用NoSQL數(shù)據(jù)庫
但是,如果我們不需要創(chuàng)建架構(gòu)并可以將關(guān)系直接存儲為數(shù)據(jù)怎么辦?
圖數(shù)據(jù)庫
這里我們的數(shù)據(jù)存儲在節(jié)點(diǎn)中,并且關(guān)系定義為邊。非常漂亮!讓我們看看如何。
如果您必須在SQL數(shù)據(jù)庫中找出所有學(xué)習(xí)計(jì)算機(jī)科學(xué)的學(xué)生,您需要一個查找/中間商表,該表將所有學(xué)生的記錄分開地存儲了學(xué)習(xí)計(jì)算機(jī)科學(xué)的所有學(xué)生。
在圖形中,這將更加簡單明了,因?yàn)槲覀儾槐胤謩e存儲數(shù)據(jù)中的關(guān)系部分,而它本能地是這種新樣式。
> Relationships are easier to record and maintain in graphs
通過這種直接顯示兩個節(jié)點(diǎn)之間關(guān)系的新方法,我們復(fù)雜的聯(lián)接查詢變得更加簡單,與SQL相比,極大地提高了數(shù)據(jù)庫的性能。
因此,當(dāng)您依賴于大量加入操作時使用此類數(shù)據(jù)庫,并且由于該依賴于性能劣化。
搜索數(shù)據(jù)庫
如果您要構(gòu)建Google之類的應(yīng)用程序,那么在小字符串查詢搜索中,您必須快速返回所有匹配的記錄-您所說的是全文搜索引擎。
這些數(shù)據(jù)庫基于1999年開始的Apache Lucene項(xiàng)目。
Algolia和Meilisearch是全文搜索引擎。
它們看起來類似于文檔類型的數(shù)據(jù)庫。我們有一個索引,并向其中添加了數(shù)據(jù)對象。搜索數(shù)據(jù)庫引擎將分析文檔中的所有文本,并創(chuàng)建稱為反向索引的內(nèi)容。
當(dāng)您查詢某些內(nèi)容時,數(shù)據(jù)庫只會去檢查反向索引,這使整個過程看起來很快,即使對于大型數(shù)據(jù)庫也是如此。
我把最激動人心的一個保存下來。
多模型數(shù)據(jù)庫
那里有多種選擇,但最受歡迎的選擇似乎是動物區(qū)系。
作為應(yīng)用程序開發(fā),我們通常只關(guān)心JSON,我們可以在我們的應(yīng)用程序的前端中消耗。
通過Fauna,我們不必?fù)?dān)心數(shù)據(jù)建模,架構(gòu),縮放,復(fù)制或歸一化,并且只需獲取我們的JSON數(shù)據(jù)。我們定義了如何使用GraphQL訪問我們的數(shù)據(jù)。
讓我們拍攝類似instagram的應(yīng)用程序的示例。我們將使用JSON定義我們的規(guī)則,用于用戶,帖子和查詢。
我們剛上傳了我們的GraphQL架構(gòu) - 它會自動創(chuàng)建一個存儲數(shù)據(jù)和索引來查詢數(shù)據(jù)的集合。
在幕后,它是如何利用基于您提供的GraphQL模式的關(guān)系,圖形和文檔等不同的范例。
我們只是以與文檔數(shù)據(jù)庫中的相同方式添加我們的數(shù)據(jù),并且我們并不遇到數(shù)據(jù)建模的局限性。
最好的部分 - 這是符合酸性的,非常快。
您無需擔(dān)心基礎(chǔ)架構(gòu)。只需定義您如何需要數(shù)據(jù),云將為您處理其余的工作。
缺點(diǎn)
顯然,定價是不利的。偉大的事物不是免費(fèi)的,但是對于想要學(xué)習(xí)的開發(fā)人員以及小型創(chuàng)業(yè)公司,它們確實(shí)提供了慷慨的計(jì)劃/開源選項(xiàng)。
以下是Fauna列出的一些重要功能:
感謝各位的閱讀,以上就是“怎么為應(yīng)用程序選擇合適的數(shù)據(jù)庫”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對怎么為應(yīng)用程序選擇合適的數(shù)據(jù)庫這一問題有了更深刻的體會,具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識點(diǎn)的文章,歡迎關(guān)注!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。