如何選擇各種型別資料庫?- Raj

banq發表於2021-11-15

生活在“資料時代”,您是否在為您的應用程式選擇正確的資料庫/資料儲存方面遇到過困惑。那麼,你並不孤單 :-)。雖然“被有選擇性寵壞了”是件好事,但這恰恰使選擇數以萬計的不同資料庫/資料儲存選項變得更加困難!
在經歷了多次失敗和在此過程中吸取的教訓之後,以下是一些需要考慮的重要因素:
  • 瞭解您的需求:這是您必須花費大部分時間的地方。謹慎地列出所有特定用例和需求的詳細列表。如果它是您希望現代化的現有應用程式(例如從本地遷移到 SaaS),您還需要考慮當前本地資料庫例項可能已經面臨的問題。
  • 不要受“炒作”或“新”的影響:很容易被最新最熱門的資料庫或資料儲存所左右。重要的是不要讓這影響您的決定。
  • 商業/技術。支援:會出現問題,雖然社群支援很大,但在出現危機情況時,獲得商業支援並保證 SLA 對重新確保首選支援團隊大有幫助。
  • 多雲支援:越來越多的應用程式被期望能夠在私有/混合/公共雲選項之間切換/遷移。如果您可能必須從一個公共雲平臺切換到另一個公共雲平臺,請了解長期願景並考慮未來的可能性。在這種情況下,在大多數平臺上廣泛支援資料儲存確實有幫助。
  • 訂閱/許可條款和成本:這也是一個需要考慮的重要因素
  • 流行度:如果您特別想挑選一個“新來的孩子”,那麼圍繞DB-Engines 的行業接受度/流行度進行一些研究可能很重要。這絕對可以幫助您更好地比較選項。

下面是一個“過度簡化”的資料庫/資料儲存型別列表以及您可以利用它們的地方:
  • 鍵值資料庫:極快的響應。與其他永續性資料庫一起用作快取。(Memcached、Redis、Azure 快取、AWS 彈性快取、GCP MemoryStore)
  • 寬列/列式資料庫:鍵是一系列寬列。去中心化,可以橫向擴充套件。適合頻繁寫入但不頻繁讀取/更新。適合用於不斷增加的流動資料寫入。(Cassandra、HBase、GCP Cloud BigTable)
  • TimeSeries DB:適合順序寫入但不頻繁讀取/更新(Influx DB、Open TSDB)
  • 文件儲存:鍵值對,可以組織為關係/層次結構。閱讀真的很快,寫作/更新更慢。最適合一般用途。查詢有點接近關聯式資料庫。(Mongo DB、Couch DB、Azure Cosmos DB、AWS Dynamo DB、GCP Cloud BigTable)
  • 物件/Blob 儲存:最適合儲存影片、檔案。通常與 CDN 一起設定以確保您可以複製並啟用從最近的副本進行訪問。(Azure Blobstore、AWS S3、GCP CloudStorage)
  • 關聯式資料庫:傳統結構化資料的最佳選擇。需要一個架構,保證預先確定結構Schema。事務 SLA 保證。但是水平擴充套件可能很麻煩(My SQL、Oracle、DB2、Informix、PostGres、Azure SQL、AWS RDS、GCP Cloud SQL)
  • Graph DB:知識圖構建(neo4J、DGraph、Azure Neo4j、AWS Neptune、GCP Cloud BigTable)
  • 搜尋:搜尋文字、內容。就像在亞馬遜/Netflix 上搜尋文字/內容一樣。這些不是主要資料庫,必須將資料引入其中才能啟用文字搜尋。(Lucene、Elastic、SolR、melli 搜尋)
  • 資料倉儲:整合資料以對所有交易進行分析。這些不適合交易,更適合離線分析。(Hadoop、Snowflake、Azure Synapse、AWS RedShift、GCP BigQuery)
  • 多模型:這是一種獨特的資料庫/資料儲存庫,可滿足上述模型中的一種以上。如:Apache Druid 是一個 Relational+Columnar+TimeSeries DB。Fauna 是一個文件儲存+關係+圖形+時間序列資料庫

相關文章