Как я могу получить диапазон данных, таких как 10 < key < 20
из Berkeley DB? Я не мог найти ничего путем поиска.Извлечение данных из Berkeley DB
ответ
Я взял быстрый взгляд на http://pybsddb.sourceforge.net/bsddb3.html, а следующая идея выглядит многообещающей: создать объект DBCursor, вызовите метод .set
найти ключ 10
, а затем вызвать его метод .next
, пока не достигнет 20
.
Я не знаю деталей API C, но я бы попробовал ту же идею: попытайтесь создать курсор и вызовите функции, названные как set
и next
на курсор.
Thx, это сработает. Просто подумал, что будет прямой путь, как в Монго. – xcorat
Возможно, этот код вам поможет. Он извлекает записи с ключом < = ключ < = key2, но может быть изменен для вашего состояния. Я использую первый флаг DB_SET_RANGE для поиска key => key1, а затем флаг DB_NEXT для получения следующих значений и проверки: < = key2.
void get(DB *dbp, int key1, int key2){
DBC *curs;
DBT k,v;
int fl;
// Get a cursor
dbp->cursor(dbp, NULL, &curs, 0);
if (!curs) _dberr("can't get a cursor");
// Set DBT for 1st key and value
memset(&v, 0, sizeof(DBT));
memset(&k, 0, sizeof(DBT));
k.data = &key1;
k.size = sizeof(key1);
fl = DB_SET_RANGE; // first key will be >=key1
while (curs->c_get(curs, &k, &v, fl)==0 &&
key2 >= *(int *)k.data){
fl = DB_NEXT;
// use v.data
}
}
- 1. Выбор между Berkeley DB Core и Berkeley DB JE
- 2. GUI для Berkeley DB
- 3. berkeley DB на GAE
- 4. Перемещение платформы Berkeley Db
- 5. Доступ к DB Berkeley из разных узлов
- 6. Ошибка Berkeley DB SIGBUS
- 7. Berkeley DB Чтение данных с ошибкой
- 8. Berkeley DB (JE) растет из-под контроля
- 9. Проблемы с использованием транзакции DB Berkeley DB
- 10. Berkeley DB Сжатие файлов
- 11. Berkeley DB для iPhone
- 12. Интерфейс matlab для berkeley db
- 13. Berkeley Java Размер кэша базы данных DB
- 14. Partition Berkeley DB База данных SQL API
- 15. Perl Сложная структура данных в Berkeley DB
- 16. Оптимизация производительности в Berkeley DB
- 17. Рассмотрение файлов Berkeley DB из CLI
- 18. О Berkeley DB Java Edition
- 19. autonicrement berkeley db, или список
- 20. Интерфейс Rust с Berkeley DB
- 21. Berkeley DB store настолько медленный
- 22. Key-Value DB (альтернатива Berkeley DB?)
- 23. IOS Berkeley DB development issue
- 24. Berkeley DB android version download
- 25. Ошибка мутации в Berkeley DB
- 26. Berkeley DB в многопоточных приложениях
- 27. Berkeley проблема DB Java сборник
- 28. Berkeley XML DB «где» analog
- 29. Berkeley DB Intel - ARM переносимость
- 30. Репликация DB Berkeley: верхний предел количества репликантов?
Какой язык программирования вы используете? – pts
Я использую python, но, похоже, мне придется использовать C/C++ по другим причинам. Так или работает. – xcorat
- другие причины, являющиеся библиотекой python bsddb3, похоже, не поддерживают целые ключи/значения для структур данных BTREE и HASH. – xcorat