LevelDB против std::map

В нашем приложении мы используем std::map для хранения данных (ключ, значение) и используем сериализацию для хранения этих данных на диске. При таком подходе мы обнаружили, что дисковый ввод-вывод является узким местом в производительности, а поиск значений по ключу не очень быстрый.

Я наткнулся на LevelDB и думаю использовать его. Но у меня есть несколько вопросов.

  1. В документации LevelDB говорится, что она создана для пар ключ-значение (строка, строка). Значит ли это, что я не могу использовать для пользовательских пар ключ-значение?
  2. Похоже, разница между std::map и LevelDB в том, что LevelDB постоянна, а std::map работает в памяти. Значит ли это, что узкое место дискового ввода-вывода будет более проблематичным для LevelDB.

Более конкретно, может ли кто-нибудь объяснить, может ли LevelDB быть лучшим выбором, чем std::map?

PS: Я пробовал использовать hash_maps, но он кажется медленнее, чем std::map

6
задан Lightness Races with Monica 18 October 2011 в 10:14
поделиться