LevelDB глупо это одна из главных причин того, что люди должны проиндексировать на Bitcoin Ядро падает. Там были предложения, чтобы заменить его, но до сих пор нет никаких планов на этом. Однако люди работают на использовании различных баз данных в Bitcoin Ядра, и те, которые реализуются и испытаны.
Это неверно.
LevelDB нужен "Уровень интерфейса файловой системы", Он не приходит с одним для окон; когда LevelDB используется в Chrome использует специальный хром специального API, чтобы поговорить с файловой системой. Вкладчик предоставил окно слой для Bitcoin, который является то, что позволило Bitcoin использовать LevelDB в первую очередь.
Этот разделительный слой окна файловой системы неверен: это не удалось очистить на диск во всех точках которой он должен. Он быстро фиксируется, как только кто-то принес инструкции по искусственному оплодотворению Владимира, и он воспроизводил его. Там было много faffing о замене его, в основном, люди, которые не способствуют часто core-- на мой взгляд, это пример плохого груза культа "инжиниринг" где вместо реальных инженерных людей шаблону матч словечки и клей черные ящики вместе: "Я HURD вам нужна база данных. Однажды кто-то сказал мне, что MYCROSAFT сиквела ЭТО БОЛЬШОЙ DATABASE. ИМЕЕТ WEBSCALE", Когда фактические инженеры системы обручились, проблема была быстро исправлена.
Это особенно раздражает, потому что LevelDB не является универсальным реляционной базой данных, это узкоспециализированный транзакционной магазин ключ / значение. LevelDB гораздо больше как эффективный диск спинок реализации MAP, чем это, как все, что вы обычно называете базу данных. Большинство других "база данных" Системы люди предполагают, не в течение трех порядков в исполнении для нашего конкретного очень узкого использования. Очевидный alternatives-- как LMDB имеют другие ограничения (в частности, LMDB должны MMAP файлов, которые в основном, позволяют использовать его на 32 битом Системы-- стыда, потому что мне нравится LMDB много для одной и той же ниши LevelDB охватывает, LevelDB также имеет большую коррупцию обнаружение, для нас важно, потому что мы не хотим, чтобы неправильно отклонить цепь из-за повреждения файловой системы).
Я думаю, что это более вероятно, что Bitcoin ядро будет в конечном итоге перейти на структуру пользовательских данных, чем другие "база данных" (Возможно своп с LMDB, если они когда-либо поддержки не-MMAP операции ... возможно); так как это было бы в принципе быть требованием для набора обязательств производительности utxo.
Большое количество этих отчетов о коррупции были также вызваны антивирусным программным обеспечением случайно _deleting_ файлы из-под Bitcoin Core. Оказывается, что есть вирус "подписи" что долго, как короткие, как 16 байтов ... и AV программы избежать удаления случайных файлов по всей системе пользователей с помощью набора сумасшедших эвристики, как согласование расширения, которые не удалось исключить информацию Bitcoin (хотя я уверен, что фактические вирусы не имеют никаких проблем злоупотребление этими эвристики, чтобы избежать обнаружения). Ядро реализована отбеливающая схема, запутать сохраненное состояние для того, чтобы избежать этих проблем или любой другой потенциал для враждебных данных blockchain взаимодействовать с фантастическими файловой системой или хранением ошибок.
Сейчас это очень трудно повредить chainstate на Windows, в Bitcoin Ядра 0.12+. Там еще могут быть некоторые примеры ошибок угловых, но теперь они достаточно редки, что их трудно отличить от сломанной аппаратных / плохих водителей, которые ненадлежащим образом кэш записи или иным образом поврежденные data-- вопросы, которые ни один здравомыслящий значение ключа магазин не может действительно иметь дело с. Если вы в состоянии воспроизвести коррупцию, как это, я бы очень хотел услышать от вас.
Мы страдали немного, как и многие другие проекты Open Source делают - в том, что сравнительно мало квалифицированных разработчиков с открытым исходным кодом использовать ОС Windows (и, что немаловажно, некоторые _continue_ использовать окна, как только они свисающие с пользователями / BSD Linux, если ничего иначе они в конечном итоге переход к Mac) - таким образом, мы дополнительные зависит от _good_ отчетов неприятности от пользователей Windows, когда есть проблема, которая для Windows конкретных ...
зачем использовать БД для инвариантного набора данных?
После N блоков, изменение blockchain оленьей кожи, верно?
Bitcoin ядро не хранит blockchain в базе данных (или LevelDB) и никогда не имеет. Blockchain хранится в предварительно выделено дописать только файлы на диске в упакованном виде необработанных блоков в том же формате, они отправленного по сети. Блоки, которые получают осиротевшие просто оставили позади (там достаточно мало, что не имеет особого значения.
[Лекция о общих причинах, чтобы использовать RDBMS]
Ни один из них не применимы к хранению диска поддерживается карта, хранящей высокой степенью сжатия информации о состоянии на основе криптографического алгоритма на основе консенсуса, но хорошие моменты в целом.