ਵਿਕਾਸ ਦੇ ਪੰਜ ਸਾਲਾਂ ਬਾਅਦ, ਦੂਜਾ libmdbx 1.0 ਰੀਲੀਜ਼ ਉਮੀਦਵਾਰ ਪ੍ਰਕਾਸ਼ਿਤ ਕੀਤਾ ਗਿਆ ਹੈ

ਉਪਲੱਬਧ для тестирования второй кандидат в релизы библиотеки 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 ਸਹਿਯੋਗ.
  • ਨੇਸਟਡ ਟ੍ਰਾਂਜੈਕਸ਼ਨਾਂ ਲਈ ਸਮਰਥਨ।
  • ਇਹ ਨਿਰਧਾਰਤ ਕਰਨ ਲਈ ਕਿ ਕੀ OS ਰੀਬੂਟ ਹੋਇਆ ਹੈ (ਗੰਦਾ ਡਾਟਾਬੇਸ ਸਟਾਪ) bootid ਦੀ ਵਰਤੋਂ ਕਰਨਾ।
  • Сквозной подсчёт обновлённых/старых страниц и расширенная информация о транзакциях.
  • ਅਨੁਕੂਲ ਮੋਡ ਵਿੱਚ ਪਹਿਲਾਂ ਤੋਂ ਖੁੱਲ੍ਹੇ ਡੇਟਾਬੇਸ ਨਾਲ ਜੁੜਨ ਲਈ ਵਿਕਲਪ MDBX_ACCEDE।
  • ਵਰਤੋਂ ਕਰੋ OFD ਬਲਾਕਿੰਗ ਜਦੋਂ ਉਪਲਬਧ ਹੋਵੇ।
  • ਪਾਈਪ ਵਿੱਚ ਗਰਮ ਬੈਕਅੱਪ.
  • Специализированный оптимизированный алгоритм внутренней сортировки (до 2-3 раз быстрее «qsort()» и до 30% быстрее «std::sort()»).
  • ਅਧਿਕਤਮ ਕੁੰਜੀ ਦੀ ਲੰਬਾਈ ਵਧਾਈ ਗਈ ਹੈ।
  • ਅੱਗੇ ਪੜ੍ਹਨ ਦਾ ਆਟੋਮੈਟਿਕ ਨਿਯੰਤਰਣ (ਮੈਮੋਰੀ ਵਿੱਚ ਡੇਟਾਬੇਸ ਫਾਈਲ ਕੈਚਿੰਗ ਰਣਨੀਤੀ)।
  • ਵਧੇਰੇ ਹਮਲਾਵਰ ਅਤੇ ਤੇਜ਼ ਆਟੋ-ਸੰਕੁਚਿਤੀਕਰਨ।
  • B+ ਟ੍ਰੀ ਪੰਨਿਆਂ ਨੂੰ ਮਿਲਾਉਣ ਲਈ ਇੱਕ ਹੋਰ ਅਨੁਕੂਲ ਰਣਨੀਤੀ।
  • Контроль нелокальных файловых систем (NFS, Samba и т.п.) для предотвращения повреждения БД при неверном использовании.
  • ਟੈਸਟਾਂ ਦੇ ਸਮੂਹ ਦਾ ਵਿਸਤਾਰ ਕੀਤਾ ਗਿਆ ਹੈ।

libmdbx ਦੇ "ਅਗਲੇ" ਸੰਸਕਰਣ ਦਾ ਵਿਕਾਸ ਇੱਕ ਵੱਖਰੇ ਪ੍ਰੋਜੈਕਟ ਵਜੋਂ ਜਾਰੀ ਰਹੇਗਾ MithrilDB, ਜਦੋਂ ਕਿ MDBX ਦੇ "ਮੌਜੂਦਾ" ਸੰਸਕਰਣ ਦੇ ਵਿਕਾਸ ਵੈਕਟਰ ਦਾ ਉਦੇਸ਼ ਵਿਸ਼ੇਸ਼ਤਾ ਸੈੱਟ ਨੂੰ ਫ੍ਰੀਜ਼ ਕਰਨਾ ਅਤੇ ਇਸਨੂੰ ਸਥਿਰ ਕਰਨਾ ਹੈ। ਇਹ ਫੈਸਲਾ ਤਿੰਨ ਕਾਰਨਾਂ ਕਰਕੇ ਲਿਆ ਗਿਆ ਸੀ:

  • ਪੂਰੀ ਤਰ੍ਹਾਂ ਅਸੰਗਤ: MithrilDB ਨੂੰ ਸਾਰੀਆਂ ਯੋਜਨਾਬੱਧ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਨੂੰ ਲਾਗੂ ਕਰਨ ਲਈ ਇੱਕ ਵੱਖਰੇ (ਅਸੰਗਤ) ਡੇਟਾਬੇਸ ਫਾਈਲ ਫਾਰਮੈਟ ਅਤੇ ਇੱਕ ਵੱਖਰੇ (ਅਸੰਗਤ) API ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ।
  • ਨਵਾਂ ਸਰੋਤ ਕੋਡ: MithrilDB ਸੋਰਸ ਕੋਡ ਨੂੰ LMDB ਤੋਂ ਸੁਤੰਤਰ ਲਾਇਸੰਸਸ਼ੁਦਾ ਬਣਾਇਆ ਗਿਆ ਹੈ, ਅਤੇ ਪ੍ਰੋਜੈਕਟ ਨੂੰ ਖੁਦ ਇੱਕ ਵੱਖਰੇ ਲਾਇਸੈਂਸ ਦੇ ਤਹਿਤ ਪ੍ਰਕਾਸ਼ਿਤ ਕਰਨ ਦੀ ਯੋਜਨਾ ਹੈ (ਇਸ ਦੁਆਰਾ ਮਨਜ਼ੂਰ ਓ.ਐੱਸ.ਆਈ. лицензией Apache 2.0, а не ਓਪਨਐਲਡੀਏਪੀ ਪਬਲਿਕ ਲਾਇਸੈਂਸ).
  • Разделение позволяет избежать потенциальную путаницу, внести больше определённости и обеспечить независимость пути развития проектов.

MithrilDB, MDBX ਵਾਂਗ, ਵੀ ਆਧਾਰਿਤ ਹੈ ਰੁੱਖ B+ ਅਤੇ MDBX ਅਤੇ LMDB ਦੇ ਬਹੁਤ ਸਾਰੇ ਬੁਨਿਆਦੀ ਨੁਕਸਾਨਾਂ ਨੂੰ ਖਤਮ ਕਰਦੇ ਹੋਏ, ਬਹੁਤ ਉੱਚ ਪ੍ਰਦਰਸ਼ਨ ਵੀ ਪੇਸ਼ ਕਰੇਗਾ। ਖਾਸ ਤੌਰ 'ਤੇ, "ਲੰਬੀ ਰੀਡਿੰਗ" ਦੀ ਸਮੱਸਿਆ ਨੂੰ ਖਤਮ ਕਰ ਦਿੱਤਾ ਜਾਵੇਗਾ, ਜੋ ਆਪਣੇ ਆਪ ਨੂੰ ਡੇਟਾਬੇਸ ਦੀ "ਸੋਜ" ਦੇ ਰੂਪ ਵਿੱਚ ਪ੍ਰਗਟ ਕਰਦਾ ਹੈ ਕਿਉਂਕਿ ਇਸ ਤੱਥ ਦੇ ਕਾਰਨ ਕਿ ਕੂੜੇ ਦੀ ਪ੍ਰਕਿਰਿਆ ਨੂੰ ਲੰਬੇ ਪੜ੍ਹਨ ਦੇ ਲੈਣ-ਦੇਣ ਦੁਆਰਾ ਬਲੌਕ ਕੀਤਾ ਗਿਆ ਹੈ। ਨਵੇਂ MithrilDB ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਵਿੱਚ ਸ਼ਾਮਲ ਹਨ:

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

ਸਰੋਤ: opennet.ru

ਇੱਕ ਟਿੱਪਣੀ ਜੋੜੋ