Berkeley DB 和 C++ 的问题
我正在尝试编写一个使用 Berkeley DB 进行存储的简单 C++ 程序。数据库的键是time_t
类型,数据是integer
。
我需要在两个键之间获取两个相邻数据之间的差异。我打开带有标志 DB_SET_RANGE 的游标,然后使用 DB_NEXT 进行迭代。
我的问题是游标返回未排序的数据。有没有办法为光标指定自定义排序器功能?
I'm trying to write a simple C++ program that uses Berkeley DB for storage. The key of the database is of type time_t
and the data is an integer
.
I need to take the difference between two adjacent data in a between two key. I open a cursor with the flag DB_SET_RANGE and then i use DB_NEXT to iterate.
My problem is that the cursor returns unsorted data. Is there a way to specify a custom sorter function for the cursor?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可能想要提供自定义排序功能的一些原因是:
您可以使用 DB->set_bt_compare() 设置 BTree 的键比较函数。
例如,用于对数据库中的整数键进行排序的示例例程是:
Some of the reasons why you may want to provide a custom sorting function are:
You set a BTree's key comparison function using DB->set_bt_compare().
For example, an example routine that is used to sort integer keys in the database is:
我认为您必须为您的数据创建一个二级索引。
我曾尝试过睡猫伯克利数据库(由于代码维护),但我没有尝试二级索引。
如果性能不是那么重要并且您可以切换数据库引擎,我推荐 SQLite :-)
I think you have to create a secondary index for your data.
I had tried Sleeping Cat Berkeley Database (due to code maintenance) but I did not try secondary indices.
If perfomance isn't so critical and you can switch database engine, I recommend SQLite :-)