使用c保存哈希表以加快随机访问
我正在编写一个C代码(称之为数据库生成)处理一个输入文件,生成一个范围为[1,10^8]的数字,以及一个长度固定但未知的浮点值序列,后跟3个整数。所有值都用空格分隔 例如:使用c保存哈希表以加快随机访问,c,database,C,Database,我正在编写一个C代码(称之为数据库生成)处理一个输入文件,生成一个范围为[1,10^8]的数字,以及一个长度固定但未知的浮点值序列,后跟3个整数。所有值都用空格分隔 例如: 19432 23.45 32.12 45.76 ...(156 such float values) 4 6 106 这将是一行数据库,其中第一个数字是散列索引(1到10^8),最后3个整数分别表示x、y和文档ID 我们的数据库保存在xyz文件中,该文件包含以下内容 2341 34.67 43.13 ... (234 su
19432 23.45 32.12 45.76 ...(156 such float values) 4 6 106
这将是一行数据库,其中第一个数字是散列索引(1到10^8),最后3个整数分别表示x、y和文档ID
我们的数据库保存在xyz文件中,该文件包含以下内容
2341 34.67 43.13 ... (234 such float values) 5 8 123
2352 46.92 41.89 ... (51 such float values) 1 9 145
2352 46.92 41.89 ... (98 such float values) 2 7 12
2359 12.71 72.90 ... (141 such float values) 8 12 13
当我们从一行到下一行时,数据库中的起始数字(散列索引值)将始终以非递减顺序排列
我有另一个C代码(称之为检索),它以散列索引值作为输入,并应输出以该值开头的所有行
我有两个问题
(1)byte-offset.txt of the form
2341 byte-pos-1
2352 byte-pos-2
2359 byte-pos-3
2352 byte-pos-4
(2)database.txt of the form
2341 34.67 43.13 ... (234 such float values) 5 8 123
2352 46.92 41.89 ... (51 such float values) 1 9 145
2359 12.71 72.90 ... (141 such float values) 8 12 13
2352 46.92 41.89 ... (98 such float values) 2 7 12
唯一的好处是,当我们获得更多数据时,随着数据库的增长,新条目可以附加到每个文件的末尾。为什么不使用现有的数据库库,如sqlite3或dbm。您是否考虑过使用B+树?如果您不必出于任何原因构建自己的数据库,是的,继续使用sqlite,您可以在C程序中使用它。请看:我正在寻找的数据库有快速查找,可以纳入我的c程序。我不太擅长编程,所以编写b+树对我来说很困难。sqlite看起来不错。我会尝试使用它。