根据link,我了解到berkeley DB中的记录为(key,value)
,而记录是关系模型数据库中的tuple
(表中的一行)。
但是当我运行使用Oracle berkeley DB C API的示例应用程序(display.exe
)时,我得到以下表格信息
$ display
table1
table2
table3
table4
在下面的commaond中,我得到table1
$ display table1
从上表中我了解到,任何使用berk DB API的应用都可以放置/获取数据并实际以(key,value)
的形式在内部存储,如(Colname1,0x300003) (Colname2, World) (Colname3, 0x10040) (Colname4, World) (Colname1, 0x30004a) (Colname2, 'EnterpriseVPN M')...
但是,我们在表格的形式,因为display
模块在内部获取(键,值)对并将其表示为表行。
我的理解是否正确?
答案 0 :(得分:1)
不太正确。在您的示例中,关键不明显。每个"表"可能是一个数据库。 "值"将是一个包含四个字段的C结构:Colname1,Colname2,Colname3和Colname4。与关系数据库不完全相反。在这里,记录仍然是一行。
但是,您必须选择其中一个字段作为密钥 - 您必须决定索引数据的方式。虽然BDB能够处理重复键,但您可能会发现在实践中使用它会有问题。所以,你的密钥应该是唯一的。
例如,Colname1中的数据可能是键吗?如果是这样,您可以执行db-> get(0x300039)并使用0x300039,MgmtInventory,0x25e0000和MgmtInventory检索记录。