В 2013 году было выпущено новое ядро биткойнов, и одним из предполагаемых улучшений был переход с Berkeley DB на LevelDB. Согласно примечаниям к выпуску на bitcoin.org :
LevelDB, быстрая нереляционная база данных с открытым исходным кодом от Google, теперь используется для хранения индексов транзакций и блоков. LevelDB работает намного лучше на машинах с медленным вводом-выводом и в целом быстрее .
Аналогичные заявления были сделаны разработчиками ядра биткойна :
LevelDB — переработанная версия собственной системы баз данных Google с открытым исходным кодом — была разработана для обеспечения эффективности и согласованности на массовом оборудовании и превосходит BDB на порядок в некоторых настройках. Предварительные тесты с LevelDB показывают очень хорошие результаты .
Однако в настоящее время в Интернете есть несколько комментариев, критикующих LevelDB. Согласно странице LevelDB в Википедии :
LevelDB широко известен своей ненадежностью, а базы данных, которыми он управляет, подвержены повреждению. Научные исследования прошлых версий LevelDB показали, что в некоторых файловых системах данные, хранящиеся в этих версиях LevelDB, могут стать несогласованными после системного сбоя или сбоя питания. Повреждение LevelDB настолько распространено, что обнаружение повреждения должно быть встроено в приложения, которые его используют.
Таким образом, жалобы на LevelDB таковы:
Вопрос 1
Верны ли эти жалобы на LevelDB?
Вопрос 2.
Каков окончательный баланс миграции Bitcoin Core с Berkeley DB на LevelDB? Работает ли LevelDB должным образом? Эта миграция была правильным выбором?
Как человек, который в то время участвовал в этой миграции, я считаю, что это было правильное решение. LevelDB далек от совершенства, но я не знаю, что еще использовать.
Особенно:
Reviewing the Lock subsystem statistics is the best way to determine this value.
, что я считаю, что это неприемлемо для нашего варианта использования.Хотя в наши дни о повреждениях баз данных сообщают относительно часто, я считаю, что в основном это аппаратные сбои или проблемы с драйверами. Bitcoin Core, как правило, нагружает диски, память и ЦП гораздо больше, чем большинство программ, что приводит к появлению невидимых в противном случае проблем.
Ник Оделл
Марк Месса
Ник Оделл
Донн Ли