0%

Beyond Time Series — "TimeSpace" Database 第一階段技術與概念簡述

厭倦了時序資料庫?讓我們聊聊如何為數據建立一個「時間宇宙」

我們身處一個數據以秒、毫秒甚至奈秒為單位不斷產生的時代。從物聯網感測器到金融市場的每一次脈動,我們試圖用資料庫捕捉這個世界的節奏

InfluxDB 讓我們用標籤(tags)和欄位(fields)來度量世界

TimescaleDB 則巧妙地將時間維度嫁接到關聯式數據的巨人——PostgreSQL 的肩膀上

它們都非常出色,但在某些時刻,您是否也曾感到一絲侷限?

當我們不僅想記錄「指標」,還想捕捉指標背後的整個系統狀態時;當我們不僅想追溯「時間」,還想探尋數據之間的因果鏈時

當我們希望數據不僅是唯讀的紀錄,而是能像 Git 一樣開枝散葉、進行版本控制時……我們需要的,可能不再是另一個時序資料庫 (Time-Series Database),而是一個全新的思維典範

今天,我想與您分享一個名為「TimeSpace DB」的專案構想

這不僅是一個資料庫,更是一個用來建模、追溯、甚至模擬複雜世界的引擎

簡介

可以參考上一篇概念文章 Beyond Time Series — My Conception of the Architecture of the Next-Generation Spacetime Database “TimeSpace”

文章主要使用Google Gemini Pro 讀取我的原始手稿與原始碼,產生的文案 (抱歉真的沒有太多時間能讓我自己寫,有機會未來再補上)

核心世界觀:從時間線到時間宇宙

這個專案的核心,源於一套自成體系的數據結構,它重新定義了我們看待數據的方式:

Time Universe (時間宇宙): 想像一個完整的領域,例如一座智慧工廠或一個金融市場。這是我們觀察的頂層世界。

Time Space (時間空間): 在這個宇宙中,存在著如「溫度」、「壓力」、「股價」等不同的物理法則。每一個法則,就是一個獨立的 Time Space。

Time Line (時間線): 宇宙中的每一個獨立個體,如一台機器、一支股票,都在各自的 Time Space 中,沿著時間軸繪製出自己的生命軌跡——這就是 Time Line。

Time Frame (時間框架): 如果我們在任意時間點按下暫停鍵,整個宇宙所有 Time Line 在這一刻的狀態快照,便構成了一個 Time Frame。

看到了嗎?這套模型超越了單純的「key-value」或「table-row」,它在嘗試構建一個真實世界的數位孿生 (Digital Twin)

殺手級亮點:它為何與眾不同?

如果說宏大的世界觀是其靈魂,那麼具體的工程設計就是其骨骼

這個專案有幾個令人興奮的特點,使其在時序資料庫的紅海中,開闢出一條全新的航道

1. 數據的「Git」:內建的版本控制與時間分岔

在我的原始手稿中,每一個數據點 (Time Point) 都設計了 prev-version 和 next_version 的指標

當任何數據需要被「修改」時,系統並非覆蓋它,而是產生一個新的時間分支

這意味著什麼?這意味著我們擁有了一個為數據而生的 Git

這在以下領域具有顛覆性的商業價值

- 高度監管行業:金融、醫療或法務領域,任何數據的變更都需要留下完整的審計軌跡 (Audit Trail)
- AI/MLOps:告別散亂的 CSV 和 pickle 文件,數據集與模型的每一個版本都能在資料庫層面被原生管理
- 「What-if」模擬分析:企業可以在不影響主數據的情況下,輕鬆創建一個「假設」時間線,進行風險評估和商業預測

2. 不止於時序,更關乎因果:時空圖譜的雛形

除了時間維度上的前後關係,手稿中還設計了 Up/Down/Prev/Next 等指向「相鄰」數據點的 Offset

這讓數據點之間形成了網狀的連接

這使得我們的查詢,可以從單一的「時間序列」升維到「時空圖譜」

我們不僅能問「這台機器過去一小時的溫度變化?」,更能探索「當 A 機器的壓力劇增時,與它相鄰的 B、C 兩台機器的震動頻率發生了什麼連鎖反應?

這為複雜系統的根因分析 (Root Cause Analysis) 提供了強大的武器

性能如何?一個驚人的初步成績

理論聽起來很棒,但現實世界的性能才是硬道理

在一個早期的原型測試中,我在一塊普通的 WD 7200轉 HDD 硬碟上(並且關閉了作業系統的檔案快取),從一千萬筆離散資料(約1GB)中,隨機讀取兩百萬筆數據點

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
=========================================



read test done!



total process 2000000 point!



total use: 1.714000 Sec



-----------------------------------------



(Cache Hits): 39868



(Disk Reads): 6437



=========================================

測試環境與設定:

  • 硬體: 一塊普通的 Western Digital 藍標 7200轉 HDD 機械硬碟。我特意選擇傳統硬碟而非 SSD,是為了放大 I/O 尋址的延遲,更能考驗演算法的效率。

  • 數據集: 總共一千萬筆離散的 Time Point 資料,總大小約 1GB。這些數據點被故意打散並儲存在不同的 Block 中,模擬真實世界中數據寫入的隨機性。

  • 作業系統快取: 為了排除記憶體快取的干擾,測試全程關閉了作業系統層級的 File System Cache。這意味著每一次讀取,都強制要求磁頭進行實實在在的物理尋道。

  • 測試任務: 從這一千萬筆離散資料中,隨機挑選出兩百萬筆完全不連續的 Time Point 進行讀取。

測試的核心:驗證批次處理 (Batch Mode) 的效能

如果用最暴力的方法,讀取兩百萬筆離散數據,意味著需要進行兩百萬次獨立的 I/O 操作,在機械硬碟上這將是災難性的

而我的核心演算法是這樣運作的:

  • 收集任務 (Collect): 首先,程式會遍歷這兩百萬個讀取任務,分析它們分別儲存在哪些物理 Block 中。

  • 去重與排序 (Deduplicate & Sort): 程式發現,這兩百萬個點,實際上只分散在 6,437 個獨立的 Block 裡。它將這些 Block ID 去重並進行排序。

  • 批次讀取 (Batch Read): 接著,程式以最高效的方式,一次性、循序地將這 6,437 個 Block 讀入記憶體。

  • 記憶體中分發 (Distribute in Memory): 最後,在記憶體中將讀取的數據塊分發給最初的兩百萬個讀取請求。

結果如何?

總耗時:1.714 秒

從日誌中可以看到,實際只發生了 6,437 次磁碟讀取(Disk Reads),而另外近四萬次的請求,則是因為數據恰好在剛被讀入的同一個 Block 中而被滿足(Cache Hits,這裡的 Cache 指的是應用層的快取,非 OS 快取)。

這個成績有力地證明了,即使面對物理儲存上極度碎片化的數據,透過智慧的批次處理和 I/O 優化,依然可以實現高效的隨機存取。這也為「TimeSpace DB」上層複雜的邏輯模型和查詢能力,打下了堅實的性能地基。

從願景到程式碼:MVP 的核心架構

宏大的願景需要務實的工程來支撐

為了在兩個月內打造出一個穩定且高效的 MVP,我設計了被稱為「鳳凰架構」的核心實現方案,它主要包含兩大基石:

  • 以 mmap 為核心的寫入引擎:為了追求極致的寫入性能,所有新的數據點會以「僅追加」的方式,直接寫入一個由 mmap 記憶體映射的預寫日誌 (Write-Ahead Log, WAL) 中。這確保了數據的持久性和閃電般的寫入速度,因為操作幾乎等同於記憶體複製。
  • 為查詢而生的多重視角儲存 (Multi-View Storage):我拒絕在不同查詢模式的性能之間做出妥協。當後台整理數據時,系統會為數據創建多個物理上獨立的、為特定查詢最佳化的「視角」。在 MVP 階段,我將專注於實現兩個核心視角:
    • TimeLine 視角:將同一個設備的所有歷史數據連續儲存,為「歷時性」查詢提供最佳效能。
    • TimeFrame 視角:將同一個時間點的所有設備狀態連續儲存,為「共時性」的全局快照查詢提供最佳效能。
      這個架構,確保了「TimeSpace DB」不僅在哲學上獨樹一幟,在工程實現上也同樣堅實可靠。

最後,一個關於未來的狂想:它與量子計算有什麼關係?

細心的讀者可能已經發現,我的專案頁面URL中包含了「quantum-computing」的字樣。

這不是噱頭,而是指向這個專案最終極的哲學思想和未來願景。

需要澄清的是,「TimeSpace DB」並不是一個需要運行在量子電腦上的資料庫。

恰恰相反,它試圖從量子力學的恢弘思想中汲取靈感,來解決當下經典計算中的複雜問題。

這份靈感主要來自兩個方面:

  1. 費曼的路徑積分 (Path Integral):一種全新的查詢優化哲學

    在經典世界中,我們如何找到一個數據?就像查地圖一樣,我們透過索引(B-Tree, LSM-Tree等)找到一條通往目標的「唯一正確路徑」。

    但在量子力學中,一個粒子從A點到B點,並不是只走一條路。

    根據物理學家理查・費曼的「路徑積分」理論,它會同時探索所有可能的路徑

    每一條路徑都有一個對應的「相位」,絕大多數路徑的相位會因彼此不同而相互干涉、抵銷掉

    最終,我們觀測到的那條宏觀路徑(也就是經典物理中的最短路徑),正是那些相位相似、產生「建設性干涉」的路徑疊加的結果

    這個思想給了我巨大的啟發

    如果將其類比到資料庫查詢:當一個複雜的查詢請求進來時,我們是否也能像大自然一樣,不去預設唯一的「最優解」,而是讓查詢優化器在概念上「探索」所有可能的數據獲取路徑?

    例如,是先掃描時間戳,還是先過濾 Time Space?是走索引,還是直接批次讀取?

    「TimeSpace DB」的遠期目標,就是構建一個能模擬這種「路徑積分」思想的查詢引擎

    最優的查詢計畫,將不再是基於生硬規則的選擇,而是從無數種可能性中「干涉疊加」後,自然湧現出的、I/O成本最低的執行路徑

  2. 量子糾纏 (Quantum Entanglement):數據關係的終極形態

    我的手稿中提到了entangled-parther 和多維度的Offset 指標等設計

    這其實是在借用「量子糾纏」的概念來定義數據之間的關係

    量子糾纏描述了兩個粒子之間一種深刻的連結,無論相隔多遠,對其中一個的測量會瞬間影響另一個

    在「TimeSpace DB」中,這意味著數據點不再是孤立的

    一個 Time Point 的狀態變化,會透過預先定義好的「糾纏關係」,即時地、確定地影響到與它關聯的其他數據點

    這使得資料庫本身就能原生理解和維護一個複雜系統的內部關聯性,而不需要應用層去處理繁瑣的邏輯

一個量子啟發的未來

總結來說,「TimeSpace DB」的目標是成為一個 量子啟發 (Quantum-Inspired)」的資料庫,它將量子世界中關於可能性疊加、干涉、糾纏 等深刻的物理規律,轉化為處理複雜數據關係和優化查詢路徑的工程思想

這不僅讓它在處理當前的複雜系統時具備了獨特的架構優勢,更為遙遠的未來埋下伏筆——當真正的量子計算時代來臨時,一個從設計哲學上就與其同頻的資料庫架構,或許能更無縫地擁抱那股顛覆性的計算力量

結語:為下一個世代的數據挑戰而生

「TimeSpace DB」的目標,並非要取代 InfluxDB 或 TimescaleDB 在監控領域的地位

它的戰場,在於那些更複雜、更需要追溯、更看重數據之間內在關聯性的高價值領域:工業4.0、金融科技、前沿科學研究

這個專案仍處於早期階段,充滿了挑戰與未知

但它提供了一個令人興奮的可能性:也許我們記錄數據的方式,可以從單純的日誌,演進為真正地去理解和模擬我們所在的這個複雜而迷人的世界

如果您對這個想法感興趣,歡迎來信teddy1565@gmail.com,一同探討