<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          分布式數(shù)據(jù)庫如何選擇,幾種分布式數(shù)據(jù)庫優(yōu)缺點一覽

          共 5185字,需瀏覽 11分鐘

           ·

          2021-04-29 17:32

          點擊上方藍色字體,選擇“標(biāo)星公眾號”

          優(yōu)質(zhì)文章,第一時間送達

            作者 |  Yemilice

          來源 |  urlify.cn/au2Afm

          76套java從入門到精通實戰(zhàn)課程分享

          1.為什么選擇分布式數(shù)據(jù)庫?

            優(yōu)點如下:
          (1)具有靈活的體系結(jié)構(gòu)
          (2)適應(yīng)分布式的管理和控制機構(gòu)
          (3)經(jīng)濟性能優(yōu)越
          (4)系統(tǒng)的可靠性高、可用性好
          (5)局部應(yīng)用的響應(yīng)速度快
          (6)可擴展性好,易于集成現(xiàn)有系統(tǒng)。

          2.相關(guān)的技術(shù)概念介紹

            2.1什么是分布式數(shù)據(jù)庫?

          常見的分布式系統(tǒng)分為,

          a)支持持久化存儲的分布式存儲系統(tǒng);

          b)著重計算的分布式計算框架;

          c)分布式消息隊列

          根據(jù)不同的應(yīng)用的領(lǐng)域,把上述分類細化,常見分布式存儲系統(tǒng)分為

          1.分布式協(xié)同系統(tǒng)(分布式日志復(fù)制)

          2.分布式任務(wù)調(diào)度框架

          3.流計算框架

          4.分布式文件/對象系統(tǒng)

          5.分布式NoSQL存儲

          6.分布式關(guān)系數(shù)據(jù)庫(OLAP、OLTP);

          7.各種消息隊列mq 

          一般很多人用ETCD,就是分布式協(xié)調(diào)系統(tǒng)(日志復(fù)制系統(tǒng)),其實就是paxos算法及其變體的實現(xiàn)。一般來說只存少量的元數(shù)據(jù)信息,所以,存儲大規(guī)模文件,并且讀取用ETCD是不合適的。

            2.2不同的分布式數(shù)據(jù)庫如何區(qū)分?

          1.Key-value NoSQL

            例如Redis Riak等;

          2.column family NoSQL(wide column store)

            典型的是Hbase Cassandra;

          3.document NoSQL

            典型的是mongodb

          3.需要什么樣的數(shù)據(jù)庫

          1.支持數(shù)據(jù)持久化,數(shù)據(jù)落盤,異常備份,高并發(fā),大數(shù)據(jù)量存儲。

          2.要支持頻繁的數(shù)據(jù)讀寫

          3.分布式,多節(jié)點并行

          4.和以前的數(shù)據(jù)庫不沖突

          4.可選的方法及其特點

           根據(jù)上述的要求,分布式數(shù)據(jù)庫,符合大數(shù)據(jù)存儲的,支持頻繁讀寫的數(shù)據(jù)庫有如下幾個,它們的特點會簡單說明。 

          1.Elasticsearch數(shù)據(jù)庫

          1.Elasticsearch簡介

           分布式的實時文件存儲,每個字段都被索引并可被搜索,分布式的實時分析搜索引擎

           可以擴展到上百臺服務(wù)器,處理PB級結(jié)構(gòu)化或非結(jié)構(gòu)化數(shù)據(jù)

          2.Elasticsearch應(yīng)用場景

           分布式的搜索引擎和數(shù)據(jù)分析引擎,全文檢索,結(jié)構(gòu)化檢索,數(shù)據(jù)分析

           對海量數(shù)據(jù)進行近實時的處理,站內(nèi)搜索(電商,招聘,門戶,等等),IT系統(tǒng)搜索(OA,CRM,ERP,等等),數(shù)據(jù)分析

          3.Elasticsearch的優(yōu)缺點

           缺點:沒有用戶驗證和權(quán)限控制,沒有事務(wù)的概念,不支持回滾,誤刪不能恢復(fù),需要java環(huán)境.

           優(yōu)點:將你的文檔分割到不同容器或者分片中,可以存在單個節(jié)點或多個節(jié)點

                 復(fù)制每個分片提供數(shù)據(jù)備份,防止硬件問題導(dǎo)致數(shù)據(jù)丟失。

                 對集群中任意節(jié)點的相互請求進行路由,保證獲取的數(shù)據(jù)是你需要的,集群增加或者重新分配分片時,不停機讓新節(jié)點恢復(fù)丟失的節(jié)點分片數(shù)據(jù)

          4.Elasticsearch的持久化方案

          gateway 代表 elasticsearch 索引的持久化存儲方式,elasticsearch 默認是先把索引存放到內(nèi)存中去,當(dāng)內(nèi)存滿了的時候再持久化到硬盤里。當(dāng)這個 elasticsearch 集群關(guān)閉或者再次重新啟動時就會從 gateway 中讀取索引數(shù)據(jù)。elasticsearch 支持多種類型的 gateway,有本地文件系統(tǒng)(默認),分布式文件系統(tǒng),Hadoop 的 HDFS 和 amazon 的 s3 云存儲服務(wù)。

          ElasticSearch是先把索引的內(nèi)容保存到內(nèi)存之中,當(dāng)內(nèi)存不夠時再把索引持久化到硬盤中,同時它還有一個隊列,是在系統(tǒng)空閑時自動把索引寫到硬盤中。

          2.Redis數(shù)據(jù)庫

          1.Redis簡介

          redis是開源BSD許可高級的key-value存儲系統(tǒng)(NoSQL),可以用來存儲字符串,哈希結(jié)構(gòu),鏈表,集合,因此,常用來提供數(shù)據(jù)結(jié)構(gòu)服務(wù),Redis支持數(shù)據(jù)的持久化,可以將內(nèi)存中的數(shù)據(jù)保存在磁盤中,重啟的時候可以再次加 載進行使用。 支持簡單的key-value類型的數(shù)據(jù),同時還提供list,set,zsethash等數(shù)據(jù)結(jié)構(gòu)的存儲。Redis支持數(shù)據(jù)的備份,即master-slave模式的數(shù)據(jù)備份。 

          2.Redis應(yīng)用場景

          A)常規(guī)計數(shù):粉絲數(shù),微博數(shù)

          B)用戶信息變更

          C)緩存處理,作為mysql的緩存

          D)隊列系統(tǒng),建有優(yōu)先級的隊列系統(tǒng),日志收集系統(tǒng)

          3.Redis的優(yōu)缺點

              優(yōu)點:

          (1) 速度快,因為數(shù)據(jù)存在內(nèi)存中,類似于HashMapHashMap的優(yōu)勢就是查找和操作的時間復(fù)雜度都是O(1)

          (2) 支持豐富數(shù)據(jù)類型,支持string,listset,sorted set,hash

          (3) 支持事務(wù),操作都是原子性,所謂的原子性就是對數(shù)據(jù)的更改要么全部執(zhí)行,要么全部不執(zhí)行

          (4) 豐富的特性:可用于緩存,消息,按key設(shè)置過期時間,過期后將會自動刪除

          缺點:

          (1)Redis不具備自動容錯和恢復(fù)功能,主機從機的宕機都會導(dǎo)致前端部分讀寫請求失敗,需要等待機器重啟或者手動切換前端的IP才能恢復(fù)

          (2)主機宕機,宕機前有部分數(shù)據(jù)未能及時同步到從機,切換IP后還會引入數(shù)據(jù)不一致的問題,降低了系統(tǒng)的可用性

          (3)redis的主從復(fù)制采用全量復(fù)制,復(fù)制過程中主機會fork出一個子進程對內(nèi)存做一份快照,并將子進程的內(nèi)存快照保存為文件發(fā)送給從機,這一過程需要確保主機有足夠多的空余內(nèi)存。若快照文件較大,對集群的服務(wù)能力會產(chǎn)生較大的影響,而且復(fù)制過程是在從機新加入集群或者從機和主機網(wǎng)絡(luò)斷開重連時都會進行,也就是網(wǎng)絡(luò)波動都會造成主機和從機間的一次全量的數(shù)據(jù)復(fù)制,這對實際的系統(tǒng)運營造成了不小的麻煩

          (4)Redis較難支持在線擴容,在集群容量達到上限時在線擴容會變得很復(fù)雜。為避免這一問題,運維人員在系統(tǒng)上線時必須確保有足夠的空間,這對資源造成了很大的浪費。

          4.Redis的持久化方案

          redis提供兩種方式進行持久化,一種是RDB持久化(原理是將Reids在內(nèi)存中的數(shù)據(jù)庫記錄定時dump到磁盤上的RDB持久化),另外一種是AOFappend only file)持久化(原理是將Reids的操作日志以追加的方式寫入文件)。

          RDB持久化是指在指定的時間間隔內(nèi)將內(nèi)存中的數(shù)據(jù)集快照寫入磁盤,實際操作過程是fork一個子進程,先將數(shù)據(jù)集寫入臨時文件,寫入成功后,再替換之前的文件,用二進制壓縮存儲。     

          3.Mongodb數(shù)據(jù)庫

          1.Mongodb簡介

            MongoDB本身是一種非關(guān)系型數(shù)據(jù)庫。它的每一條記錄是一個Document,每個Document有一組鍵值對組成。MongoDB中的DocumentJSON對象相似。 Document中字段的值可能包括其他Document,數(shù)組等。

          2.Mongodb應(yīng)用場景

          mongodb的主要目標(biāo)是在鍵/值存儲方式(提供了高性能和高度伸縮性)以及傳統(tǒng)的RDBMS系統(tǒng)(豐富的功能)架起一座橋梁,集兩者的優(yōu)勢于一身。mongo適用于以下場景:

            a.網(wǎng)站數(shù)據(jù):mongo非常適合實時的插入,更新與查詢,并具備網(wǎng)站實時數(shù)據(jù)存儲所需的復(fù)制及高度伸縮性。

            b.緩存:由于性能很高,mongo也適合作為信息基礎(chǔ)設(shè)施的緩存層。在系統(tǒng)重啟之后,由mongo搭建的持久化緩存可以避免下層的數(shù)據(jù)源過載。

            c.大尺寸、低價值的數(shù)據(jù):使用傳統(tǒng)的關(guān)系數(shù)據(jù)庫存儲一些數(shù)據(jù)時可能會比較貴,在此之前,很多程序員往往會選擇傳統(tǒng)的文件進行存儲。

            d.高伸縮性的場景:mongo非常適合由數(shù)十或者數(shù)百臺服務(wù)器組成的數(shù)據(jù)庫。

            e.用于對象及JSON數(shù)據(jù)的存儲:mongoBSON數(shù)據(jù)格式非常適合文檔格式化的存儲及查詢。

          3.Mongodb的優(yōu)缺點

            優(yōu)點:

            (1) 弱一致性(最終一致),更能保證用戶的訪問速度

            (2) 文檔結(jié)構(gòu)的存儲方式,能夠更便捷的獲取數(shù)據(jù)

            (3) 內(nèi)置GridFS,支持大容量的存儲

            (4) 在使用場合下,千萬級別的文檔對象,近10G的數(shù)據(jù),對有索引的ID的查詢不會比mysql慢,而對非索引字段的查詢,則是全面勝出

          缺點:

          (1)不支持事物

          (2)占用空間過大,會造成磁盤浪費

          (3)單機可靠性比較差

          (4)大數(shù)據(jù)量持續(xù)插入,寫入性能有較大波動

          4.Mongodb的持久化方案/異常處理

           當(dāng)執(zhí)行寫操作時,MongoDB創(chuàng)建一個journal來包含確切磁盤位置和改變的字節(jié)。因此,如果服務(wù)器突然崩潰,啟動時,journal會重放崩潰前并沒有刷新到磁盤上的任何寫操作。

          數(shù)據(jù)文件每隔60s刷新到磁盤上,默認情況下,因此journal只需要持有60s內(nèi)的寫入數(shù)據(jù)。journal預(yù)分配了幾個空文件用于此目的,位于/data/db/journal,命名為_j.0,j.1等等。

          MongoDB運行很長時間情況下,在journal目錄下,你會看到類似于_j.6217,_j.6218_j.6219文件。這些文件是當(dāng)前的journal文件,如果MongoDB一直運行,這些數(shù)字會持續(xù)增加。當(dāng)正常關(guān)閉MongoDB時,這些文件將被清除,因為正常關(guān)機不在需要這些日志的。

          如果服務(wù)器崩潰或kill -9, mongodb再次啟動時,會重放journal文件,會輸出冗長難懂的檢驗行,這表明在正常的恢復(fù)。

          4.Mysql分布式集群

          1.Mysql分布式集群簡介

              MySQL集群是一個無共享的(shared-nothing)、分布式節(jié)點架構(gòu)的存儲方案,其目的是提供容錯性和高性能。

             數(shù)據(jù)更新使用讀已提交隔離級別(read-committedisolation)來保證所有節(jié)點數(shù)據(jù)的一致性,使用兩階段提交機制(two-phasedcommit)保證所有節(jié)點都有相同的數(shù)據(jù)(如果任何一個寫操作失敗,則更新失?。?/span>

             無共享的對等節(jié)點使得某臺服務(wù)器上的更新操作在其他服務(wù)器上立即可見。傳播更新使用一種復(fù)雜的通信機制,這一機制專用來提供跨網(wǎng)絡(luò)的高吞吐量。

             通過多個MySQL服務(wù)器分配負載,從而最大程序地達到高性能,通過在不同位置存儲數(shù)據(jù)保證高可用性和冗余。

          2.Mysql分布式集群應(yīng)用場景

           解決海量存儲問題,比如京東B2B就用的Mysql分布式集群。

           適用幾十億的PV對DB的訪問。

          3.Mysql分布式集群的優(yōu)缺點

          優(yōu)點:

          a) 高可用性

          b)快速的自動失效切換

          c)靈活的分布式體系結(jié)構(gòu),沒有單點故障

          d)高吞吐量和低延遲

          e)可擴展性強,支持在線擴容

          缺點:

          a)存在很多限制,比如:不支持外鍵

          b)部署、管理、配置很復(fù)雜

          c)占用磁盤空間大,內(nèi)存大

          d)備份和恢復(fù)不方便

          e)重啟的時候,數(shù)據(jù)節(jié)點將數(shù)據(jù)load到內(nèi)存需要很長時間

          4.Mysql分布式集群的持久化方案

          負載均衡。

          管理節(jié)點備份。





          鋒哥最新SpringCloud分布式電商秒殺課程發(fā)布

          ??????

          ??長按上方微信二維碼 2 秒





          感謝點贊支持下哈 

          瀏覽 24
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  成人久久久久久无码 | 国产精品青青草 | 日韩乱伦无码片 | 夜晚福利久久 | 中文天堂新在线 |