成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

除了 MySQL 數據庫,你還要了解的一些數據庫

數據庫
數據庫的選型,在我架構過程中也是重中之重。什么場景適合合適什么數據庫,每種數據庫的特點是什么,在架構中起到什么樣的作用,承擔的重點業務是什么?

 [[424016]]

數據庫是我們在項目開發過程中必不可少的一項服務。 相信技術大大也都接觸過各種類型的數據庫,例如Oracle、MySQL、MongoDB、Redis等大眾熟知的數據庫。

數據庫的選型,在我架構過程中也是重中之重。什么場景適合合適什么數據庫,每種數據庫的特點是什么,在架構中起到什么樣的作用,承擔的重點業務是什么?

我們在 DB-ENGINES (https://db-engines.com/en/ranking)看到,參與排名的數據庫就多達354種。如下圖,這里2021年7月的一個數據庫排名供參考。

所以,本篇文章主要是科普一些常用的或者熱門的數據庫供大家了解,在以后選用數據庫的時候也可以多方面考慮,選用適合的業務場景的數據庫。

人的精力有限,我們不需要清楚每一種數據庫里的細節,但是我們可以根據我們業務的使用場景,選擇合適范圍的數據庫,再針對性的進行分析和選擇。

數據庫按類型可分為以下幾類:

  • 關系型數據庫

  • 文檔型數據庫

  • Key-Value數據庫

  • 圖數據庫

  • 時序數據庫

  • 檢索型數據庫

  • 列存儲數據庫

根據類型,我們簡單的介紹一下我們經常使用、關注或者常見的數據庫。

關系型數據庫

關系型數據庫模型是將復雜的數據結構以行和列的形式進行存儲,類似于Excel表格的數據形式。在關系型數據中,對數據的操作幾乎都是建立在一個或多個關系表的基礎上進行的。通過表的關系來實現數據庫的管理。典型的數據庫有 Oracle 、 MySQL 等。Oracle、MySQL都是當下最流行的關系型數據,從上面排名可以看出,兩都常年居于排行榜Top 2。

Oracle 是甲骨文公司的一款關系型數據庫管理系統,它在數據庫領域一直處于領先地位的產品,是一種高效率、可靠性好、高吞吐量的數據庫解決方案。Oracle的高性能、高可能、可靠性是毋庸置疑的,早些年時,世界500強幾乎都選用的Oracle,當然,Oracle是收費的軟件。

MySQL 是開放的源碼軟件,相比Oracle,它可以大大降低成本。MySQL 原開發者為瑞典的MySQL AB公司,在2008年被 Sun Microsystems收購,并于2009年被甲骨文公司收購,成為Oracle旗下產品。目前MySQL有收費的企業版和免費的社區版。對于一般的個人用戶或者中小型企業來說,MySQL提供的功能已經綽綽有余。當年,LAMP(LNMP)架構風靡互聯網,MySQL在其中扮演了重要角色。

除此之外,PostgreSQL、OceanDB、TiDB、SQL Server、SQLite等屬于關系型數據庫。 PostgreSQL 是以加州大學伯克利分校計算機開發的Postgres 為基礎的對象關系型數據庫管理系統,在靈活的BSD許可證下發行,任何人都可以以任何目的免費使用、修改和分發PostgreSQL。

OceanDB 是阿里巴巴和螞蟻金服100%自主研發的金融級分布式關系數據庫,在普通硬件上實現金融級高可用。

TiDB 是PingCAP公司自主設計、研發的開源分布式關系型數據庫,是一款同時支持在線事務處理與在線分析處理的融合型分布式數據庫產品。適合高可用、強一致性要求較高、數據規模大等應用場景。

MicroSoftSQLServer 相信大家都不陌生,是由微軟公司推出的關系數據庫解決方案。它的幾個初始版本適用于中小企業的數據管理,近年來應用范圍有所擴展,已經觸及到大型、跨國企業的數據管理。

SQLite 是遵守ACID的關系數據庫管理系統,但不同的是,它不是一個客戶端/服務器結構的數據庫,而是被集成在了用戶程序中。

關系型數據庫經過幾十年的發展后已經非常成熟,強大的SQL功能和ACID的屬性使得關系數據庫廣泛應用于各行各業的系統中,但這并不意味著關系型數據庫就是完美無缺的,例如:

  • 關系數據庫是行存儲,無法存儲數據結構

  • 關系數據庫的schema是強約束,擴展不方便

  • 在大數據場景下I/O較高

  • 全文檢索功能弱

因此,針對關系型數據庫的弱點,也就誕生了不同的NoSQL解決方案,NoSQL 可以作為SQL的一個有力的輔助方案,NoSQL != Not SQL,而是Not Only SQL。

文檔型數據庫

文檔型數據庫主要解決關系數據庫強schema約束的問題,其最大特點就是no-schema,可以存儲或讀取任意的數據。大部分文檔型數據庫存儲的數據格式是JSON或者BSON,其主要優勢在于:

  • 新增字段簡單,無須像SQL一樣先執行DDL語句修改表結構。

  • 歷史數據兼容性強,即使沒有新增字段,也不會導致出錯,在代碼層面做好兼容性即可。

  • 可以存儲復雜的數據結構,相對SQL更簡便。

當然,文檔型數據庫的優勢也是有代價的,最主要的就是不支持事務,在某些強事務性的應用場景就不適用了。另外一個缺點就是無法使用join操作。因此需要在程序層面來實現相應的業務。以MongoDB為代表。

文檔型數據庫以MongoDB、CouchDB為代表。 MongoDB 是一個基于分布式文件存儲的數據庫。由 C++ 語言編寫,旨在為 WEB 應用提供可擴展的高性能數據存儲解決方案,是一個介于關系數據庫和非關系數據庫之間的產品,是非關系數據庫當中功能最豐富,最像關系數據庫的。2015 年 12 月,在發布的 3.2 版本中,在 MongoDB 的聚合框架(Aggregation)中增加了一個不起眼的操作符: $lookup,同時也開啟了支持關系數據庫的核心功能:關聯。2018年6月,MongoDB推出ACID事務支持,成為第一個支持強事務的NoSQL數據庫。

key-value型數據庫

提到K-V存儲型數據庫,大家第一時間想到的NoSQL可能就要數Redis或Memcache了。它主要解決了關系數據庫無法存儲數據結構的問題,具有極高的讀寫并發能力。K-V數據庫并不支持完整的ACID事務。在高訪問量的系統中,我們一般首選會用到redis或者Memcache來做數據緩存,緩解數據庫的壓力,提升網站或應用的響應速度。

以Redis為例,Redis是K-V型數據庫的典型代表,Redis的Value是具體的數據結構,我們常用的有五種,包括字符串、散列、列表、集合、有序集合,隨著Redis的不斷更新,數據結構也增加了HyperLogLog、位圖、流、地理坐標等豐富的數據結構,每種數據結構都適用于解決一些特殊場景的問題。比如熱點數據緩存、計數器、排行榜、隊列、分布式緩存等。不同于Memcache,Redis也支持持久化,支持RDB模式、AOF模式以及RDB-AOF混合模式(從4.0開始支持)。

這里再介紹一下另一個KV型數據庫——Etcd。etcd是一種開源的分布式統一鍵值存儲,用于分布式系統或計算機集群的共享配置、服務發現和調度協調。有助力于促進更加安全的自動更新,協調向主機調度工作,并幫助設置容器的覆蓋網絡。

圖數據庫

圖數據庫(英語:graph database,GDB[1])是一個使用圖結構進行語義查詢的數據庫,它使用節點、邊和屬性來表示和存儲數據。該系統的關鍵概念是圖,它直接將存儲中的數據項,與數據節點和節點間表示關系的邊的集合相關聯。這些關系允許直接將存儲區中的數據鏈接在一起,并且在許多情況下,可以通過一個操作進行檢索。圖數據庫將數據之間的關系作為優先級。查詢圖數據庫中的關系很快,因為它們永久存儲在數據庫本身中。可以使用圖數據庫直觀地顯示關系,使其對于高度互連的數據非常有用?!菊跃S基百科】

隨著社交、電商、金融、物聯網的快速發展,圖數據庫的應用也越來越廣泛,例如金融行業風控、反欺詐應用,社交場景的關系圖譜,電商領域的商品推薦實現精準營銷等。

Neo4j是由Java實現的開源圖數據庫,支持ACID、集群、備份和故障轉移。可以使用其內置的REST WEB API接口從大多數編程語言訪問,以及使用官方程序的專有Bolt協議。

從圖數據庫的排名上也能看出,Neo4j是目前市場上最受歡迎的圖數據庫之一。

時序數據庫

時序數據庫全稱為時間序列數據庫。時間序列數據庫主要用于指處理帶時間標簽(按照時間的順序變化,即時間序列化)的數據,帶時間標簽的數據也稱為時間序列數據。

時間序列數據主要由電力行業、化工行業等各類型實時監測、檢查與分析設備所采集、產生的數據,這些工業數據的典型特點是:產生頻率快(每一個監測點一秒鐘內可產生多條數據)、嚴重依賴于采集時間(每一條數據均要求對應唯一的時間)、測點多信息量大(常規的實時監測系統均有成千上萬的監測點,監測點每秒鐘都產生數據,每天產生幾十GB的數據量)?!菊园俣劝倏啤?/p>

目前從 DB-ENGINES 能看出來,InfluxDB比較火爆。

InfluxDB是一個由InfluxData開發的開源時序型數據庫,它是由Go編寫,著力于高性能地查詢和存儲時序型數據。InfluxDB被廣泛應用于存儲系統的監控數據,IoT行業的實時數據等場景。

檢索型數據庫

搜索是我們項目中必不可少的功能之一。傳統的關系型數據庫通過索引來達到快速查詢的目的,但是在全文搜索的業務場景下,索引也是無效的。比如用like查詢是整表掃描,效率很低。而我們經常會用到的搜索引擎有Sphinx、Solr、Elasticsearch等。他們支持復雜的搜索表達式、全文搜索、詞干分析、搜索結果的排序與分組等,并且相對關系型數據庫來說有很大的性能優勢。

列存儲數據庫

列式數據庫就是按照列來存儲數據的數據庫,而我們經常用到的關系型數據庫則被稱為“行式數據庫”。寬列存儲,也稱為可擴展記錄存儲,將數據存儲在記錄中,能夠保存大量動態列。由于列名和記錄鍵不是固定的,而且記錄可以有數十億列,因此寬列存儲可以看作是二維鍵值存儲。

列式數據庫主要解決關系數據庫大數據場景下的I/O問題,以HBase、Cassandra為代表。

寫在最后

沒有最好的數據庫,只有最合適的數據庫。項目在選用數據庫時,肯定是結合自己的業務特點,架構選擇、成本等多方面因素綜合考慮的。同時也不要局限在自己熟悉的數據庫,不能因為熟悉MySQL,不管實際業務場景和特點,全部使用MySQL。

 

責任編輯:張燕妮 來源: 西梧Runtime
相關推薦

2020-08-07 08:04:03

數據庫MySQL技術

2011-07-29 15:58:53

SGAOracle

2018-06-21 14:50:00

2010-05-21 13:34:53

MySQL數據庫

2011-03-10 13:19:47

Oracle數據庫

2010-05-12 15:41:21

MySQL數據庫

2020-07-10 06:11:19

數據庫擴展負載

2011-08-01 13:59:22

Oracle數據庫命名空間

2010-05-18 10:47:52

2021-03-11 10:49:27

數據管理

2011-08-15 14:52:07

數據庫登錄名數據庫用戶名

2018-10-16 16:00:39

數據庫鎖舞MySQL

2015-10-23 15:22:16

AsyncTask基礎Android

2024-06-14 07:59:00

2011-03-21 13:41:20

數據庫開發規范

2022-03-18 08:22:18

數據庫碎片化信息化

2022-10-24 08:45:23

數據庫應用場景區塊鏈

2010-05-26 17:40:14

MySQL數據庫

2018-07-27 18:20:31

數據庫MySQL 數據庫建表

2011-08-03 17:43:53

MySQL數據庫外鍵約束
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品美女久久久 | 国产在线精品一区二区三区 | 在线免费观看黄视频 | 成人午夜激情 | 欧美视频在线一区 | 91文字幕巨乱亚洲香蕉 | 日韩精品成人 | 精品在线观看入口 | 色婷婷一区二区三区四区 | 欧美男人天堂 | 在线亚洲欧美 | 久久99视频精品 | 亚洲精品二区 | 国产精品视频一二三区 | 亚洲精品免费视频 | 做a的各种视频 | 亚洲成人精品国产 | 91五月婷蜜桃综合 | 福利影院在线看 | 国产精品久久久久一区二区三区 | 精品一区二区三区在线观看国产 | 成人在线一区二区三区 | 欧美激情精品久久久久久 | 91免费电影| sese视频在线观看 | 一区二区三区在线免费 | 久久久久久久久国产精品 | 成人福利在线观看 | 中文字幕一区二区三区在线观看 | 成人综合一区二区 | 久久久www| 日本午夜网 | 亚洲欧美国产毛片在线 | 国产日韩一区二区三区 | 久久精品国产a三级三级三级 | 一区二区三区小视频 | 欧美一区二区三区四区在线 | 亚洲网站观看 | 国产一区精品在线 | 欧美久久天堂 | 免费午夜电影 |