《開源時間序列數據庫發布,兼具RDBMS和NoSQL特性》要點:
本文介紹了開源時間序列數據庫發布,兼具RDBMS和NoSQL特性,希望對您有用。如果有疑問,可以聯系我們。
近日,使用Postgres引擎構建的一個新的開源時間序列數據庫TimeScaleDB已經發布了, TimeScaleDB可用于單節點版本,并且針對快速采集和復雜查詢進行了優化.
TimeScaleDB數據庫架構
開發人員表示TimeScaleDB的優勢特別明顯,與傳統RDBMS相比,它可以在多個服務器之間水平擴展,與NoSQL數據庫相比,它支持所有的SQL.創建TimeScaleDB數據庫的初衷其實是他們需要處理大量且復雜的時間尺度數據,且短時間內需要多次拜訪數據,所以存儲這樣的時間序列數據需要規模和有效的復雜查詢.而他們不愿意在NoSQL的水平可擴展性和關系數據庫的查詢能力之間進行權衡和將就,所以就自主開發了TimeScaleDB.
TimeScaleDB的SQL支持由PostgreSQL引擎提供,同時包括了二次索引,JOIN和窗口函數等功能. TimescaleDB的使用與PostgreSQL數據庫類似,用戶可以像PostgreSQL一樣連接到數據庫以及管理數據庫,另外,與PostgreSQL連接的工具和庫在TimescaleDB也能正常工作.
開發人員表示TimescaleDB比PostgreSQL更具優勢,因為PostgreSQL不能很好地適應大多數時間序列應用產生的數據量,特別是在單個服務器上運行時.他們特別指出, PostgreSQL對大型表格的寫入性能差,如果數據量是隨時間呈線性增長,那么隨著數據量的增長,這個問題會越來越嚴重.當表索引不再適合內存時,那么之后的每次插入都會替代掉原來索引“B-Trees”的一部分.
SQL數據庫的這些問題間接造成了NoSQL數據庫的蓬勃發展,TimescaleDB的開發人員表示時間序列工作負載在兩個關鍵方面是不同的.首先,時間序列數據在很大程度上是不變的,到達的新數據通常是對應于最近的時間段.換句話說,寫入主要作為新的插入,而不是對現有行進行更新.
其次,工作負載在時間和空間上都有自然的劃分.寫入通常被制成最新的時間間隔,并跨越空間維度(例如數據源,設備,用戶等)中的“分區鍵”.查詢通常會通過特定的時間序列或者數據源或者跨越多個數據源.
TimescaleD自動將數據分割為跨多個節點(或單個節點)的二維塊,通過所有塊執行并行操作和優化查詢計劃,并將單個表格接口暴露于此數據(“hypertable”).
TimescaleDB提供了所有時間和空間中單個連續數據庫表的錯覺,實際上這個表在服務器之間分為多個塊. 您可以針對此超級表運行標準SQL查詢,TimescaleDB分布式查詢計劃程序會自動優化查詢以拜訪正確的組塊. 數據庫可以有多個hypertable,,其中每個具有自己的模式和分區.
《開源時間序列數據庫發布,兼具RDBMS和NoSQL特性》是否對您有啟發,歡迎查看更多與《開源時間序列數據庫發布,兼具RDBMS和NoSQL特性》相關教程,學精學透。維易PHP學院為您提供精彩教程。