1.0년간의 개발 끝에 두 번째 libmdbx XNUMX 릴리스 후보가 출시되었습니다.

사용 가능 для тестирования второй кандидат в релизы библиотеки libmdbx с реализацией высокопроизводительной, компактной встраиваемой базой данных класса ключ-значение. Текущая версия (0.5) является техническим релизом, отмечает завершение каких-либо доработок и переход к фазе публичного финального тестирования и стабилизации, с последующем формированием первого полноценного релиза библиотеки. Код libmdbx 배포자 под лицензией OpenLDAP Public License.

Библиотека MDBX является существенно переработанным ответвлением от LMDB — "키-값" 클래스의 트랜잭션 내장형 DBMS 트리B+ без 사전 예방적 로깅, которая позволяет многопоточным процессам конкурентно и эффективно работать с локально-разделяемой (не сетевой) БД. В свою очередь MDBX быстрее и надёжнее LMDB, и при этом сохраняет все ключевые возможности своего прародителя, такие как ACID и неблокирующее чтение с линейным масштабированием по ядрам CPU.

MDBX와 LMDB의 가장 중요한 차이점은 다음과 같습니다.

  • 기본적으로 코드 품질, 테스트 및 자동 검사에 더 많은 관심을 기울입니다.
  • 매개변수 확인부터 데이터베이스 구조 내부 감사에 이르기까지 운영 중에 훨씬 더 많은 제어가 가능합니다.
  • 자동 압축 및 자동 데이터베이스 크기 관리.
  • 32비트 및 64비트 어셈블리를 위한 단일 데이터베이스 형식입니다.
  • 범위별 샘플량 추정(범위 쿼리 추정)
  • 팬케이크보다 두 배 큰 키와 사용자가 선택할 수 있는 데이터베이스 페이지 크기를 지원합니다.

Выпущенный кандидат в релизы libmdbx является результатом принятого в августе 2019 решения о разделении проектов MDBX и MithrilDB. При этом в libmdbx было решено устранить (рациональный) максимум технического долга и стабилизировать библиотеку. По факту в обозначенном направлении сделано в 2-3 раза больше, чем оценивалось и планировалось исходно:

  • Реализована поддержка macOS и платформ «второго эшелона»: FreeBSD, Solaris, DragonFly BSD, OpenBSD, NetBSD. Поддержка AIX и HP-UX может быть добавлена при необходимости.
  • Проведена санация кода при помощи Undefined Behavior Sanitizer и Address Sanitizer, устранены все предупреждения при сборке с «-Wpedantic», все предупреждения Coverity Static Analyzer и т.д.
  • 업데이트 API 설명.
  • Слияние (амальгамация) исходного кода для удобства встраивания.
  • CMake 지원.
  • 중첩 트랜잭션 지원.
  • bootid를 사용하여 OS가 재부팅되었는지 확인합니다(더티 데이터베이스 중지).
  • Сквозной подсчёт обновлённых/старых страниц и расширенная информация о транзакциях.
  • 호환 모드에서 이미 열려 있는 데이터베이스에 연결하기 위한 MDBX_ACCEDE 옵션입니다.
  • 사용 OFD 차단 가능할 때.
  • 파이프의 핫 백업.
  • Специализированный оптимизированный алгоритм внутренней сортировки (до 2-3 раз быстрее «qsort()» и до 30% быстрее «std::sort()»).
  • 최대 키 길이가 늘어났습니다.
  • 미리 읽기 자동 제어(메모리의 데이터베이스 파일 캐싱 전략)
  • 더욱 공격적이고 빠른 자동 압축.
  • B+ 트리 페이지를 병합하기 위한 보다 최적의 전략입니다.
  • Контроль нелокальных файловых систем (NFS, Samba и т.п.) для предотвращения повреждения БД при неверном использовании.
  • 테스트 세트가 확장되었습니다.

libmdbx의 "다음" 버전 개발은 별도의 프로젝트로 계속됩니다. 미스릴DB, MDBX "현재" 버전의 개발 벡터는 기능 세트를 동결하고 안정화하는 것을 목표로 합니다. 이 결정은 다음 세 가지 이유로 내려졌습니다.

  • 완전히 호환되지 않음: MithrilDB는 계획된 모든 기능을 구현하기 위해 다른(호환되지 않는) 데이터베이스 파일 형식과 다른(호환되지 않는) API가 필요합니다.
  • 새로운 소스 코드: MithrilDB 소스 코드는 LMDB와 독립적으로 라이선스가 부여되었으며 프로젝트 자체는 다른 라이선스(승인)로 게시될 예정입니다. OSI лицензией Apache 2.0, а не OpenLDAP 공개 라이센스).
  • Разделение позволяет избежать потенциальную путаницу, внести больше определённости и обеспечить независимость пути развития проектов.

MDBX와 마찬가지로 MithrilDB도 다음을 기반으로 합니다. 트리 B+ 또한 MDBX 및 LMDB의 여러 가지 근본적인 단점을 제거하면서 매우 높은 성능을 제공합니다. 특히, 긴 읽기 트랜잭션으로 인해 가비지 처리가 차단되어 데이터베이스의 "팽창"으로 나타나는 "긴 읽기" 문제가 제거됩니다. 새로운 MithrilDB 기능은 다음과 같습니다.

  • Поддержка размещения БД на нескольких разнородных носителях: HDD, SSD и энергонезависимой памяти.
  • Оптимальные стратегии для «ценных» и «малоценных», для «горячих», «теплых» и «холодных» данных.
  • Использование Merkle tree для контроля целостности БД.
  • Опциональное использование WAL и существенно более высокая производительно в сценариях с интенсивной записью и гарантиями на целостность данных.
  • Ленивая догоняющая фиксация данных на дисках.

출처 : opennet.ru

코멘트를 추가