我對 DB 非常陌生,我發現在理解下面提到的一些術語時有些困難,請幫助我理解 表
uj5u.com熱心網友回復:
我想你應該更清楚一點。這是一個很模糊的問題。但是,正如我從圖片中看到的,這似乎與 BangDB 及其支持的不同型別的表有關。這是有點詳細的答案;
A. 當用戶希望只存盤鍵和值時,鍵可以是長字串型別,而值可以是完全不透明的(文本或二進制等),并且當(顯然具有不透明的值)二級索引不需要時,則 NORMAL_TABLE應該被選中。該表模仿鍵/值存盤并提供簡單的 put() 和 get() 操作。注意 Key 仍然可以以排序方式排列(使用B linkTree)或使用散列(ExtHash)隨機存盤在 BangDB 中。如果 Key 以排序方式排列,則也可以使用 scan()。這種表型別還提供了最高的吞吐量,因為資料庫操作往往更具原子性
B. 將 WIDE_TABLE 視為檔案存盤。這允許用戶存盤 json 檔案,類似于 mongodb 等其他檔案資料庫。由于我們在這里存放的是json檔案,所以除了排列主鍵之外,我們還可以定義幾個二級索引,以便在涉及其他屬性的查詢中更快地檢索資料。BangDB 允許使用 BTREE (B linkTree) 排列二級索引。進一步的用戶可以對二級索引使用復雜的鍵(二級)結構(順便說一句,這也可以用于主鍵),例如復合鍵(使用兩個或多個鍵一起)用于一些復雜的查詢以有效掃描表. BangDB 還允許在這種表型別中進行反向索引,因此用戶可以選擇要反向索引檔案中的哪個屬性(或所有屬性...),這可以在表格上進行文本搜索。因此,簡單來說,當我們希望處理 json 檔案(json)時,請使用 WIDE_TABLE 型別
C. Index_Table 對 BangDB 中的用戶不明確可用。相反,Primitive_Table 可用于值始終為固定型別(例如 long、double 等)的場景。在這里使用原始表將節省資料庫額外的頁面,這些頁面可用于存盤值,而不是索引(主)頁面可以用于相同的用途,從而減少記憶體和 IO 等的壓力。
D. LARGE_TABLE 類似于 NORMAL_TABLE,只是這里的值可能非常大。對于 NORMAL_TABLE 值大小是有限的(2 - 8 MB),而如果我們希望存盤影像、視頻、ML 模型等,那么用戶應該在這里利用 LARGE_TABLE 來高效地存盤大檔案
顯式提供不同表型別的動機是允許用戶在同一資料庫中以不同的方式(以適當的方式)處理不同的資料型別。這使我們很容易有效地利用物件/值的性質來提高效率和性能。
E. GRAPH Store/Table 選項允許用戶處理鏈接資料,其中 db 可以顯式或隱式(使用BangDB Stream)在圖形表中存盤三元組(主語、謂詞、物件)。使用 Cypher 查詢語言,我們可以找到存盤在 Graph 表中的有趣資料。
我希望這能解釋得更詳細一些。您可以查看有關BangDB 中的索引以及開發部分中的表型別的更多資訊
我是 BangDB 的作者,很樂意回答更多問題。但是,請您在提問時具體說明,并提供一些背景資訊,以便我們更好地回答
uj5u.com熱心網友回復:
您共享的影像是您可以創建的不同型別的表。
Normal_table:存盤鍵/值
Wide_Table(常用的):存放各種資料,大家都用的那種,所以建議重點使用這一種。如何實施
Index_table:它專注于優化和性能,并與 SQL 上的索引類似的原始表一起使用,除了實驗原因之外,我真的從來沒有使用過這個表
Large_Table:內部使用,用于存盤大檔案或物件。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/392800.html
標籤:sql
上一篇:在SQL中根據日期動態聚合列
