拨开荷叶行,寻梦已然成。仙女莲花里,翩翩白鹭情。
IMG-LOGO

BangDB图表

白鹭 - 2022-01-25 1972 0 0

我对 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:内部使用,用于存盘大档案或物件。

标签:

0 评论

发表评论

您的电子邮件地址不会被公开。 必填的字段已做标记 *