本文介紹Lindorm時序引擎中的Database概念以及相關的功能。
Database的概念
每個正在運行的Lindorm時序引擎實例都管理著一個或多個數據庫(簡稱Database)。在各個Database之間,數據會被隔離。每個Database都有若干時序數據表,結合名詞解釋的描述,我們可以對時序引擎的數據層級歸納為下圖所示:
如果一個Lindorm時序引擎實例計劃包含不相關的項目數據,在很大程度上,彼此之間是隔離的。那么在這種情況下,建議將它們放到單獨的數據庫中,并且調整相應的授權和訪問控制用戶。此外,時序引擎允許用戶跨Database訪問數據,前提是該用戶必須擁有對目標Database的相應操作的權限。
以Database為粒度的時序數據管理功能
Database是時序表的集合,用戶可以根據業務需求將擁有相同業務背景的時序表保存在一起,從而實現數據隔離。另一方面,Lindorm時序引擎的一系列功能也都是以Database為粒度提供給用戶使用的。包括以下功能:
用戶能夠以Database為單位設置數據的冷熱分界線。
說明關于數據冷熱分層的概念,可以參見時序數據的冷溫熱數據分層。
用戶能夠以Database為單位設置數據的存活時間(Time To Live,簡稱TTL)。
當TTL被設置后,時序數據的時間戳距當前的時間差超過了TTL的時間,則這些數據將被視作過期數據,會被時序引擎清除掉。
時序領域的數據的時間戳一般分成兩種概念:
事件時間:即時序數據對應的事件真實發生時的時間。時序數據元素說明中提及的時序數據模型的時間戳即是事件時間。
入庫時間:即時序數據寫入數據庫的時間。
上述冷熱分界線和TTL的能力都是基于事件時間進行工作。目前不支持基于入庫時間設置冷熱分界線或TTL。
無論是冷數據歸檔還是數據到期清理工作,都是通過時序引擎的異步compaction任務執行的,因此,冷數據歸檔和TTL數據清理可能存在滯后的情況。
對Database既設置了冷熱分界線,又設置了TTL的情況下,已歸檔的冷數據的時間戳如果超過了TTL定義的存活時間,數據也會觸發清理。
對于Database設置了TTL的情況下,如果寫入數據的時間戳已經超過了TTL的范圍。那么寫入仍然是可以成功的,但是查詢時是查不到這樣的數據的。
Database管理
時序引擎支持用戶通過SQL對Database進行以下管理操作:
Database的創建
在時序引擎中創建一個新的Database。SQL語法請參見CREATE DATABASE。
說明新建的Database需要單獨為指定的用戶賦權,用戶并不會默認具有訪問權限。
Database的刪除
在時序引擎中刪除一個已有的Database。SQL語法請參見DROP DATABASE。
Database的屬性修改
在時序引擎中對一個已有Database的屬性進行修改。包括冷熱分界線,數據存活期間等。SQL語法請參見ALTER DATABASE。
Database的屬性查詢
在時序引擎中查看一個已有Database的屬性元數據。SQL語法請參見DESCRIBE DATABASE。
在管理控制臺上管理Database
在Lindorm實例的管理控制臺上也可以對時序引擎的Database進行管理。可以直接在管理控制臺的數據庫管理界面上設置Database的冷熱分界線以及數據保留策略。操作界面如下圖所示:
目前在管理控制臺上并不支持Database的創建和刪除。若需要創建或刪除Database,還需使用SQL來操作。