Какова хорошая стратегия для генерации автоматически увеличивающих ключей в LevelDB? Моя цель - иметь возможность перебирать ключи в том порядке, в котором они были вставлены.LevelDB: Итерации ключей по порядку вставки
ответ
Поскольку экземпляр LevelDB доступен только из одного приложения за раз, вы также можете использовать 64-битную длину и увеличивать ее в приложении. При открытии БД (и до разрешения любой записи), чтобы найти последний вставленный ключ, вы можете использовать метод SeekToLast() Iterator.
Как я уже указывал в question on integer keys, если вы хотите использовать двоичные целые числа, вам нужно создать пользовательский Компаратор для базы данных, иначе вы не получите их в возрастающем двоичном порядке. Это не сложно, но вы, возможно, не обратили внимания на необходимость.
Я не совсем уверен, что вы спрашиваете. Если только данные, которые вы добавляете, являются ключами, которые должны записывать запись в виде журнала, тогда да, просто используйте целочисленный ключ.
Однако, если вы вставляете ключи, вы собираетесь искать по какой-либо другой причине PLUS, которую хотите позже перевести в порядке размещения, это становится немного сложнее.
В принципе, вы хотите вставить две клавиши для каждого значения ключа, используя префикс, чтобы определить, являются ли клавиши «клавишами значений» или «клавишами заказа». например, скажем, у вас есть Фрэнк, Джон, Салли и Эми в качестве ключей и используйте префикс ~ N для ключей имени и ~ I для ключей Iterator.
База данных выглядит следующим образом: обратите внимание, что «ключи итератора» не имеют значения, связанного с ними, поскольку мы можем просто получить имена из ключа. Я показал это так, как если бы вы использовали строку из двух цифр для числа, вместо того, чтобы использовать целочисленное значение и нуждались в специальном компараторе.
~I00Frank
~I01John
~I02Sally
~I03Amy
~NAmy => Amy's details
~NFrank => frank's details
~NJohn => John's details
~NSally => Sally's details
два метода:
использовать компаратор по умолчанию, но использовать функцию для преобразования ключа индекса '1' на что-то вроде '000000001', преобразовать '20' до '000000020', поэтому leveldb будет размещать их рядом друг с другом;
самостоятельно определить новый компаратор, который преобразует ключ из строки типа в тип integer, тогда вы можете сравнить целое число.
с любым из вышеуказанных 2 методов, вам нужно хранить пару ключ-значение в LevelDB: current_id ----> целое число, или вы можете сохранить текущий идентификатор в новом файле с помощью ММАП.
После этого, после того, как вы определили текущий идентификатор из ключа current_id, вы можете вставить новую пару ключ-значение: id ----> значение, после чего вы можете обновить current_id до плюс один ,
- 1. Усовершенствование asort по порядку ключей
- 2. Структура данных, проходящая как по порядку вставки, так и по порядку величины
- 3. C++ побитовое копирование по порядку по порядку?
- 4. Производительность установки LevelDB
- 5. Генерировать случайные значения по порядку
- 6. Сортировать хэш по порядку ключей во вторичной массиве
- 7. Сортировка карты по заданному порядку ключей в Groovy
- 8. Как добавить и удалить значения HashMap по порядку вставки?
- 9. построить двоичное дерево по порядку и по порядку уровня.
- 10. как сериализовать векторные часы так, чтобы ваш можно сортировать по лексикографическому порядку
- 11. Сортировка файлов по порядку
- 12. Имеет ли LevelDB ограничение максимальной длины для ключей?
- 13. [Python] как я могу отсортировать список вложенных кортежей по порядку/порядку по порядку?
- 14. В SQL-сервере, как я могу упорядочить строки таблицы по порядку вставки, если первичный ключ - GUID?
- 15. Итерации по содержимому массива без знания значений ключей
- 16. Изменение размера ключа для leveldb
- 17. Сортировка Django QuerySet, не итерируя по порядку
- 18. Render Counter Коллекции Сортировать по порядку
- 19. Решения для вставки дубликатов ключей
- 20. ключа LevelDB, значение из CSV
- 21. .each петли через объект не по порядку
- 22. Сортировка коллекции по порядку массива
- 23. Возможные комбинации вектора по порядку
- 24. номера не сортируются по порядку
- 25. Linq: Сортировка по нерегулярному порядку
- 26. Как отсортировать время по порядку?
- 27. Вставка в массив по порядку
- 28. Перемещение по порядку с рекурсией?
- 29. Сравните XMLCHAR по числовому порядку
- 30. HIVE: Обратный поиск по порядку