如今,數據的重要性已經滲透到各個領域,并已成為每個行業發展和轉型的必要元素。但是,我們仍然需要數據庫來幫助我們存儲和組織這些數據。在Internet時代,擁有可用功能的單個數據庫的時代已經過去,對數據庫的新需求也在不斷出現。隨著這些新要求的提出,越來越多的公司意識到使用傳統數據庫來滿足不同需求的“一刀切”方法已不再有效。因此數據庫類型也在逐漸的增多,以此來滿足需求。那么數據庫類型有哪些?如何選擇合適的數據庫類型?
數據庫類型有哪些?
1.關系型數據庫
作為被廣泛采用的數據庫類型,關系型數據庫在很多場景下,比如企業的 ERP,CRM,財務系統和交易系統等,具有獨特的優勢。這些場景下,客戶通常會有對于數據有強一致性的需求,要求數據庫支持事務性處理(Transactional Processing)。基于客戶這一需求,AWS 為此構建了 Amazon Aurora 數據庫。Amazon Aurora 是一個針對云構建的與 MySQL 和 PostgreSQL 兼容的關系型數據庫,它結合了高端商業數據庫的性能和可用性,以及開源數據庫的簡單性和成本效益。
2.鍵 - 值型數據庫
在移動互聯網,電商,游戲以及物聯網等很多新型場景中,數據庫需要面對超大規模的數據處理,同時又需要低延遲的性能保障。對于這些需要極高的吞吐量和并發性、低延遲以及可靠性的需求,我們提供了 Amazon DynamoDB。這是一款適用于任何規模的快速靈活的 NoSQL 數據庫服務。
3.文檔型數據庫
很多客戶將 MongoDB 用作文檔數據庫,用于存儲、檢索和管理半結構化數據。由于設置和管理 MongoDB 集群所帶來的復雜性,在 MongoDB 上構建可以快速擴展到多兆字節(TB)和每秒數十萬次讀寫的高性能、高可用性的應用程序極具挑戰性。為此,AWS提供了Amazon DocumentDB,它是一項快速、可擴展、高度可用且完全托管的文檔數據庫服務,支持 MongoDB 工作負載。作為一個文檔數據庫,Amazon DocumentDB 使得存儲、查詢和索引 JSON 數據變得簡單。
如何選擇合適的數據庫類型?
個人的理解是結合以下幾個方面來考慮:
1讀寫速度
這存儲數據方式往往決定讀寫的速度。
1)Mysql無論數據還是索引都存放在硬盤中。到要使用的時候才交換到內存中。能夠處理遠超過內存總量的數據。
2)MongoDB的所有數據實際上是存放在硬盤的,所有要操作的數據通過mmap的方式映射到內存某個區域內。然后,MongoDB就在這塊區域里面進行數據修改,避免了零碎的硬盤操作。
3)Redis所有數據都是放在內存中的。但是它也支持數據持久化到硬盤中。
我們都知道磁盤讀取數據的效率遠遠低于內存。所以在一般情況下,這三者的讀寫數據的速度排序是:Redis>MongoDB>Mysql
2是否支持事務以及復雜查詢
MySql是關系型數據庫,支持事務操作以及join方式的復結構化查詢。而MongoDB是非關系型數據庫,既不支持事務操作,也不支持join操作。Redis同樣不支持。
因此,針對以下場景應考慮使用MySql:
1)業務數據中有大量結構化數據,如用戶賬號、地址等。因為這些數據通常需要做結構化查詢。
2)業務存在許多事務性操作,需要保證事務的強一致性。
3業務數據量增長速度
在一到兩年內,業務數據的增長量不在預測范圍內,優先考慮使用MongoDB。
因為MongoDB內建了sharding、很多數據分片的特性,容易水平擴展,比較好的適應大數據量增長的需求。而MySql在這方面表現要遜色些,MySql單表數據量達到5-10G時會出現明細的性能降級,需要做數據的水平和垂直拆分、庫的拆分完成擴展。
Redis由于內存容量限制,不會用來存儲大量數據。一般拿它做緩存。
4表結構是否明確
如果在業務場景中,數據庫表接口不明確,數據還在不斷增加。例如以下場景,內容管理平臺,用戶社交平臺,優先考慮使用MangDB。
因為MongoDB是非結構化文檔數據庫,擴展字段很容易且不會影響原有數據。
上述就是關于數據庫類型有哪些,以及如何選擇合適的數據庫類型的全部內容,想了解更多關于數據庫的信息,請繼續關注中培偉業。