The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Выпуск высокопроизводительной встраиваемой СУБД libmdbx 0.10"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Выпуск высокопроизводительной встраиваемой СУБД libmdbx 0.10"  +/
Сообщение от opennews (ok), 09-Май-21, 22:01 
После трех месяцев разработки состоялся выпуск библиотеки libmdbx 0.10.0 (MDBX) с реализацией высокопроизводительной, компактной встраиваемой базы данных класса ключ-значение. Код libmdbx распространяется под лицензией OpenLDAP Public License. libmdbx является глубокой переработкой СУБД LMDB и по заявлению разработчиков превосходит своего прародителя по надежности, набору возможностей и производительности. Заявляется, что libmdbx до 20% быстрее LMDB в CRUD сценариях и до 30% быстрее, если при сборке libmdbx отключить внутренний контроль до сопоставимого с LMDB уровня...

Подробнее: https://www.opennet.ru/opennews/art.shtml?num=55114

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения [Сортировка по ответам | RSS]

1. Сообщение от data man (ok), 09-Май-21, 22:01   –17 +/
mdbx.c++ -> mdbx.cpp
mdbx.h++ -> mdbx.hpp

Не буду пользоваться, пока так не сделаете. :-D

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #2, #3, #4, #6, #55, #67

2. Сообщение от erthink (ok), 09-Май-21, 22:06   +2 +/
MithrilDB на Rust зарелизится раньше ;)
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1 Ответы: #18

3. Сообщение от Аноним (3), 09-Май-21, 22:06   +7 +/
mdbx.c++/h++ -> mdbx.rs

Не буду пользоваться, пока так не сделаете. :-D

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1 Ответы: #48, #68

4. Сообщение от Аноним (4), 09-Май-21, 22:08   –3 +/
бинарь же не меняется от этого. похожая ситуация и с .htm, который по факту ничем не отличается от привычного .html
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1 Ответы: #5

5. Сообщение от data man (ok), 09-Май-21, 22:24   +/
Один анонимный эксперт по факту ничем не отличается от другого.
Они очень похожи в разных ситуациях.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #4

6. Сообщение от Аноним (6), 09-Май-21, 22:31   –5 +/
Какая гадость, должно быть cxx/hxx чтобы не вызывать отвращения.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1 Ответы: #29

7. Сообщение от Аноним (6), 09-Май-21, 22:33   +1 +/
А у сабжа тоже компайлтайм лимиты? Вот у leveldb их нет (во всяком случае не 100 байт или сколько там).
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #10

10. Сообщение от erthink (ok), 09-Май-21, 23:07   +1 +/
$ make options
## TIP: Use `make V=1` for verbose.
  INSTALL      =install
  DESTDIR      =
  prefix       =/usr/local
  mandir       =/usr/local/man
  suffix       =

  CC           =cc
  CFLAGS_EXTRA =
  CFLAGS       =-std=gnu11 -O2 -g -Wall -Werror -Wextra -Wpedantic -ffunction-sections -fPIC -fvisibility=hidden -pthread -Wno-error=attributes
  CXX          =g++
  CXXSTD       =-std=gnu++2a
  CXXFLAGS     =-std=gnu++2a -O2 -g -Wall -Werror -Wextra -Wpedantic -ffunction-sections -fPIC -fvisibility=hidden -pthread -Wno-error=attributes

  LD           =ld
  LDFLAGS      =-Wl,--gc-sections,-z,relro,-O1
  EXE_LDFLAGS  =-pthread
  LIBS         = -lrt

  MDBX_BUILD_OPTIONS =-DNDEBUG=1

## Assortment items for MDBX_BUILD_OPTIONS:
##   Note that the defaults should already be correct for most platforms;
##   you should not need to change any of these. Read their descriptions
##   in README and source code (see src/options.h) if you do.
  MDBX_DISABLE_GNU_SOURCE
  MDBX_OSX_SPEED_INSTEADOF_DURABILITY
  MDBX_ENV_CHECKPID
  MDBX_TXN_CHECKOWNER
  MDBX_TRUST_RTC
  MDBX_ENABLE_REFUND
  MDBX_ENABLE_PGOP_STAT
  MDBX_ENABLE_MADVISE
  MDBX_DISABLE_PAGECHECKS
  MDBX_PNL_PREALLOC_FOR_RADIXSORT
  MDBX_DPL_PREALLOC_FOR_RADIXSORT
  MDBX_WITHOUT_MSVC_CRT
  MDBX_ENVCOPY_WRITEBUF
  MDBX_FORCE_ASSERTIONS
  MDBX_ASSUME_MALLOC_OVERHEAD
  MDBX_DEBUG
  MDBX_USE_VALGRIND
  MDBX_HAVE_C11ATOMICS
  MDBX_LOCKING
  MDBX_USE_OFDLOCKS
  MDBX_USE_SENDFILE
  MDBX_USE_COPYFILERANGE
  MDBX_USE_SYNCFILERANGE
  MDBX_CPU_WRITEBACK_INCOHERENT
  MDBX_MMAP_INCOHERENT_FILE_WRITE
  MDBX_MMAP_INCOHERENT_CPU_CACHE
  MDBX_64BIT_ATOMIC
  MDBX_64BIT_CAS
  MDBX_UNALIGNED_OK
  MDBX_CACHELINE_SIZE

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #7 Ответы: #12

11. Сообщение от YetAnotherOnanym (ok), 09-Май-21, 23:20   –1 +/
А есть какий-нибудь носкуль сервер на сабже?
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #13, #15

12. Сообщение от Аноним (6), 09-Май-21, 23:20   –1 +/
Я не вижу тут MAXKEYSIZE, сколько там захадкожено? 4кб хотя бы влезет?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #10 Ответы: #14

13. Сообщение от Ilya Evseev (?), 09-Май-21, 23:34   +1 +/
> А есть какий-нибудь носкуль сервер на сабже?

ardb умеет использовать LMDB.
Скорее всего, после небольшой доработки mdbx тоже сумеет.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #11 Ответы: #16

14. Сообщение от erthink (ok), 09-Май-21, 23:40   +1 +/
см. https://github.com/erthink/libmdbx/blob/master/README.md#lim...

Т.е. "немного лучше" чем у Oracle, см. https://blogs.oracle.com/sql/how-to-fix-ora-01450-maximum-ke...

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #12 Ответы: #19

15. Сообщение от erthink (ok), 09-Май-21, 23:54   +1 +/
Когда-то давно Ховард баловался с https://github.com/LMDB/sqlightning.
Там что-то вполне рабочее, но много собственных тестов SQLite не проходит.

Потом (вроде-бы) по мотивам этого PoC сделали https://github.com/LumoSQL/lumosql.
Сам не пробовал, но теоретически оно рабочее и за пару дней можно пересадить с LMDB на MDBX.

Еще есть https://github.com/PositiveTechnologies/libfpta с табличками, колонками, индексами..., но без SQL.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #11 Ответы: #17

16. Сообщение от YetAnotherOnanym (ok), 09-Май-21, 23:54   +1 +/
Спасибо!
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #13

17. Сообщение от YetAnotherOnanym (ok), 10-Май-21, 00:08   +/
Спасибо!
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #15

18. Сообщение от data man (ok), 10-Май-21, 00:28   –9 +/
Неужели необходимо объяснять, что это не общепринятые расширения, и куча программ по-умолчанию их просто не поддерживает?

Спасибо за минусы, ничего другого тут и не ожидалось.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #2 Ответы: #21, #26

19. Сообщение от Аноним (6), 10-Май-21, 00:33   +/
Насколько негативно скажется увеличение размера страницы, в частности, на производительности? 65к это вроде бы достаточно для большинства применений.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #14 Ответы: #20

20. Сообщение от Аноним (6), 10-Май-21, 00:36   +/
Хотя всё равно ограничения, у левелдб хоть мегабайты пихай.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #19 Ответы: #22

21. Сообщение от erthink (ok), 10-Май-21, 01:12   +3 +/
> Неужели необходимо объяснять, что это не общепринятые расширения, и куча программ их
> просто не поддерживает?
> Спасибо за минусы, ничего другого тут и не ожидалось.

Минусы не мои.

с++ и h++ = один из _стандартных_ вариантов для файлов с исходными текстами на C++.
Исторически эти расширения не получили распространения из-за унаследованных ограничений на всяких старых и (теперь уже) вымерших системах.
Весь приличный софт давно их поддерживает, например gcc и clang автоматически выбирают/запускают компилятор С++.

Если по какой-то причине это вам неудобно, то вы всегда можете переименовать файлы локально, и т.п.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #18

22. Сообщение от erthink (ok), 10-Май-21, 01:36   +1 +/
> у левелдб хоть мегабайты пихай.

Ну засунуть-то можно, толку только мало.
Этакий неуловимый джо наоборот ;)

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #20

23. Сообщение от Аноним (48), 10-Май-21, 05:48   –1 +/
В чём отличие от RocksDB? Можно ли использовать как storage backend для SQL или Object базы данных?
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #33

24. Сообщение от Аноним (48), 10-Май-21, 06:50   +/
Это, конечно, впечатляет https://www.github.com/lmdbjava/benchmarks/tree/master/resul...

Интересно посмотреть что-нибудь посвежее и для SSD

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #35

25. Сообщение от Аноним (48), 10-Май-21, 06:57   +/
На 20-30% быстрее чем master LMDB? Мне кажется вы не тестировали давно, а берёте старые цифры.

Что насчёт новейших версий LMDB? Там же тоже код активно пилится, как я понял.

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #36

26. Сообщение от Ordu (ok), 10-Май-21, 07:23   +3 +/
> Неужели необходимо объяснять, что это не общепринятые расширения, и куча программ по-умолчанию их просто не поддерживает?

Да, надо. Приведи пример программы, которая это не поддерживает.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #18 Ответы: #30

27. Сообщение от Аноним (48), 10-Май-21, 07:40   –1 +/
Что скажете про это https://github.com/spacejam/sled? Сравнивали, тестировали?
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #39

28. Сообщение от Аноним (28), 10-Май-21, 08:06   –2 +/
> введённые правительством США санкции против Positive Technologies не оказывают какого-либо заметного влияния.

GitHub еще не заблокировали?... недоработка...

Ответить | Правка | Наверх | Cообщить модератору

29. Сообщение от bergentroll (ok), 10-Май-21, 08:32   +/
c××
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #6 Ответы: #32

30. Сообщение от data man (ok), 10-Май-21, 09:28   –9 +/
> Да, надо.
> Приведи

На сегодня бисер закончился. Может быть, завтра.
После *вежливой* просьбы.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #26 Ответы: #41

32. Сообщение от немосапиенс (?), 10-Май-21, 09:45   +1 +/
.сипп или .си++
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #29

33. Сообщение от erthink (ok), 10-Май-21, 10:10   +1 +/
> В чём отличие от RocksDB?

RocksDB - это ДЫЬ (https://ru.wikipedia.org/wiki/LSM-%D0%B4%D0&#... с дополнительними читами и фичами.

MDBX - это B+Tree (https://ru.wikipedia.org/wiki/B%E2%81%BA-... со своими читами и фичами.
Отличий как в плюс, так и в минус, очень много чтобы писать здесь, но в Сети есть масса информации.
Можете начать с https://github.com/erthink/libmdbx#comparison-with-other-dat... и https://www.opennet.ru/openforum/vsluhforumID3/121987.html#43

> Можно ли использовать как storage backend для SQL или Object базы данных?

Да можно, если что-то "прикрутить", см https://www.opennet.ru/openforum/vsluhforumID3/124185.html#15

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #23 Ответы: #40

35. Сообщение от erthink (ok), 10-Май-21, 10:21   +3 +/
Принципиально ничего не изменилось.

Если вычесть ожидание дисковых операций (например запустить в /dev/shm или на RAM-диске), то MDBX/LMDB как-правило оказываются быстрее, ибо
- OlogN от b+tree;
- очень мало лишних действий (оверхеда);
- zerocopy и неблокируемое чтение с масштабированием по ядрам.

С учетом дисковых операций всё в них родимых и упирается. При этом у MDBX/LMDB амплификация записи в точности равна высоте дерева, т.е. тоже OlogN.

Соответственно, принципиальных изменений в бенчмарках нет, так как не меняются эти слагаемые и их пропорции.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #24

36. Сообщение от erthink (ok), 10-Май-21, 10:42   +1 +/
> На 20-30% быстрее чем master LMDB? Мне кажется вы не тестировали давно, а берёте старые цифры.
> Что насчёт новейших версий LMDB? Там же тоже код активно пилится, как я понял.

Во-первых, на всякий (чтобы не упрекали в читерстве): 20-30% получается если оценивать скорость работы самих движков (без учета дисков) и отключить в MDBX дополнительный контроль (корректности операций и данных в БД).

В новых версиях нет ничего, чтобы позволяло LMDB становиться быстрее.
Буквально там примерно следующее:
- поддержка чтения больших БД на 32-битных системах (MDB_VL32), что существенно замедляет движок, так как требуете поддерживать кеш "окон отображения" файла БД в ОЗУ.
- поддержка шифрования, что требует дополнительных затрат на поддержку кеша прочитанных/расшифрованных страниц БД.
- добавление txn_id в заголовок страниц для определения их "грязного" статуса, но в MDBX txn_id был добавлен давным-давно.

А различных багов и недочетов куча, их можно перечислять очень долго.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #25

39. Сообщение от erthink (ok), 10-Май-21, 12:22   +2 +/
> то скажете про это https://github.com/spacejam/sled? Сравнивали, тестировали?

80% ответа есть в https://github.com/spacejam/sled?#known-issues-warnings

Остальные 20% примерно такие:

1) В сценариях с интенсивным чтением превосходство будет у MDBX, ибо оверхеда и блокировок примерно 0.

2) В MDBX нет WAL - это принципиальный осознанный архитектурный выбор (унаследованный от LMDB) со своими минусами и плюсами.
Поэтому MDBX будет ожидаемо проигрывать в одних сценариях  и выигрывать в других.
Соответственно, вопрос тут не в том "кто круче/быстрее", а насколько некий (условно ваш) сценарий использования соответствует свойствам/назначению того или иного движка.

3) Авторы sled пускаются во все тяжкие с lockfree, rw-локами и atomic-операциями ради более-менее параллельного выполнения читающих и пишущих транзакций..., и всё это поверх смеси b-tree с lsm, приправленное массой дополнительных фишек и фичей.
Теоретически такое можно отладить, довести до production стабильность и производительность.
На практике же буду баги, время воспроизведения которых в разы больше времени жизни соответствующей версии кода.

Другими словами, sled = концептуально интересно и действительно может дать существенный "выхлоп", но есть существенные риски что проект никогда не дойдет до production-готовности (см https://github.com/spacejam/sled/issues).

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #27

40. Сообщение от erthink (ok), 10-Май-21, 12:25   +1 +/
s/ДЫЬ/LSM-tree/
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #33

41. Сообщение от Ordu (ok), 10-Май-21, 13:00   +2 +/
> На сегодня бисер закончился. Может быть, завтра.

В смысле тебе подумать надо, потому что ни одного примера программы навскидку привести не можешь? Ну вот я тоже не могу, и поэтому...

> После *вежливой* просьбы.

... вежливо сообщаю тебе, что ты несёшь bullshit.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #30

42. Сообщение от Lefsha (ok), 10-Май-21, 13:40   +/
Не совсем в тему, но...

git clone https://abf.io/erthink/ReOpenLDAP.git reopenldap
Cloning into 'reopenldap'...
remote: Enumerating objects: 43000, done.
remote: Counting objects: 100% (43000/43000), done.
remote: Compressing objects: 100% (10332/10332), done.
remote: Total 43000 (delta 33292), reused 42174 (delta 32471)
Receiving objects: 100% (43000/43000), 19.13 MiB | 8.62 MiB/s, done.
Resolving deltas: 100% (33292/33292), done.
fatal: bad object 00000000000000007c000000770000006e000000
fatal: remote did not send all necessary objects

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #44, #45

44. Сообщение от Урри (ok), 10-Май-21, 13:41   +/
У тебя место на диске закончилось.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #42 Ответы: #46

45. Сообщение от Lefsha (ok), 10-Май-21, 13:44   –1 +/
Тоже самое на github
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #42 Ответы: #47

46. Сообщение от Lefsha (ok), 10-Май-21, 13:48   –1 +/
Не похоже.
Другие работают в этом же месте.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #44

47. Сообщение от erthink (ok), 10-Май-21, 14:01   +2 +/
> Тоже самое на github

$ git clone https://github.com/erthink/ReOpenLDAP.git
Клонирование в «ReOpenLDAP»…
remote: Enumerating objects: 43000, done.
remote: Counting objects: 100% (3/3), done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 43000 (delta 0), reused 1 (delta 0), pack-reused 42997
Получение объектов: 100% (43000/43000), 24.88 MiB | 2.04 MiB/s, готово.
Определение изменений: 100% (32830/32830), готово.

$ cd ReOpenLDAP/
$ git fsck
Проверка каталогов объектов: 100% (256/256), готово.
Проверка объектов: 100% (43000/43000), готово.

$ git --version
git version 2.27.0

Аналогично с https://abf.io/erthink/ReOpenLDAP.git и git 2.31.1

---

На всякий: я не занимался ReOpenLDAP-ом два года, в частности туда не портировались важные правки из OpenLDAP, и также движок хранения там совсем старый.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #45 Ответы: #49

48. Сообщение от Аноним (48), 10-Май-21, 15:25   –2 +/
Только после того как на Zig перепишут
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #3

49. Сообщение от Lefsha (ok), 10-Май-21, 17:39   +1 +/
Кажется выяснилось. проблема проявляется в следущих версиях GIT

=dev-vcs/git-2.31.1
=dev-vcs/git-2.31.0-r1

Откат на 2.30.2 устранил проблему.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #47

52. Сообщение от Аноним (48), 10-Май-21, 19:01   +/
Я так понимаю ACID работает для многопоточности.

А как быть с многопроцессорностью - например когда запускается два экземпляра одного приложения (GUI)? И оба, естественно, полезут в одну БД (по одному пути)

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #53

53. Сообщение от erthink (ok), 10-Май-21, 19:30   +2 +/
> Я так понимаю ACID работает для многопоточности.
>  А как быть с многопроцессорностью - например когда запускается два экземпляра
> одного приложения (GUI)? И оба, естественно, полезут в одну БД (по
> одному пути)

RTFM https://github.com/erthink/libmdbx/blob/master/README.md#lib...

- в 1-ов пункте: "Allows a swarm of multi-threaded processes to ACIDly read and update several key-value maps and multimaps in a locally-shared database.", т.е. с много-процессностью всё также хорошо как и с много-поточностью.

- в 5-ом пункте: "Enforces serializability for writers... affords wait-free for parallel readers without atomic/interlocked operations, while writing and reading transactions do not block each other", т.е. все пишущие транзакции выполняются строго последовательно, а читающие не блокируются.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #52 Ответы: #54

54. Сообщение от Аноним (48), 10-Май-21, 20:00   +1 +/
Беру! Спасибо за подробные ответы, очень полезно
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #53

55. Сообщение от adolfus (ok), 10-Май-21, 21:13   +/
с++ -- си-кросс-кросс
а cpp -- это что?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1 Ответы: #63

56. Сообщение от adolfus (ok), 10-Май-21, 21:15   +/
курсоры и вторичные ключи есть?

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #57

57. Сообщение от erthink (ok), 10-Май-21, 21:22   +/
> курсоры и вторичные ключи есть?

Курсоры есть, а вторичных ключей в key-value не бывает (для этого есть https://github.com/erthink/libfpta).

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #56 Ответы: #65

58. Сообщение от Аноним (58), 10-Май-21, 22:10   –2 +/
>а введённые правительством США санкции против Positive Technologies не оказывают какого-либо заметного влияния.

Ну это пока ... В уважаемых транснациональных компаниях давно уже требуют перед заключением договора заявления, что сама фирма не внесена ни в один санкционный список, и что продукция и услуги, поставленные по договорам, не будут переданы в руки лиц и компаний, находящихся в санкционных списках. Так что вангую, что с GH вас рано или поздно выкинут, а вместо врнды придётся довольствоваться реактосью. В прочем это к лучшему, наконец-то реактось до юзабельного состояния допилят.

P. S. Не брат ты мне.

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #59, #60

59. Сообщение от erthink (ok), 10-Май-21, 22:46   +/
>>а введённые правительством США санкции против Positive Technologies не оказывают какого-либо заметного влияния.
> Ну это пока ... В уважаемых транснациональных компаниях давно уже требуют перед
> заключением договора заявления, что сама фирма не внесена ни в один
> санкционный список, и что продукция и услуги, поставленные по договорам, не
> будут переданы в руки лиц и компаний, находящихся в санкционных списках.

Воистину, причём все эти (само)уважаемые "транснациональные компании" целиком где-то на "глобусе украины".

> Так что вангую, что с GH вас рано или поздно выкинут,
> а вместо врнды придётся довольствоваться реактосью. В прочем это к лучшему,
> наконец-то реактось до юзабельного состояния допилят.

Обязательно, ведь каждый украинский хомячок - лев, и племянник Ванги, ибо еще не гриб, пока выкапывает черное море!
Ну и в завтрашний день не все могут смотреть.
Вернее смотреть могут не только лишь все, мало кто может это делать!

;)

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #58 Ответы: #62

60. Сообщение от erthink (ok), 10-Май-21, 22:50   +/
А если серьезно, то см https://tv.rbc.ru/archive/ekskluziv/609155ee2ae596b067b3745b

Юрий там очень хорошо всё рассказал.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #58 Ответы: #61

61. Сообщение от Аноним (58), 10-Май-21, 23:19   +/
>Some results may have been delisted consistent with local laws

А телек я не смотрю ни в каком виде.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #60 Ответы: #64

62. Сообщение от Аноним (58), 10-Май-21, 23:25   +/
>Воистину, причём все эти (само)уважаемые "транснациональные компании" целиком где-то на "глобусе украины".

Ну верно, це Європа ведь, соответственно и глобус с Европой и Гермашкой. Не то что глобус Великой прекрасной России с Нашим Севером.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #59

63. Сообщение от funny.falcon (?), 11-Май-21, 09:38   +/
p - в смайликах это высунутый язык. Типа, "беее".

Т.о. cpp - сибеебее

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #55

64. Сообщение от bOOster (ok), 11-Май-21, 09:38   +1 +/
Поведение в стиле одноименного действия страуса никогда никого к добру не приводило.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #61 Ответы: #70

65. Сообщение от adolfus (ok), 11-Май-21, 10:45   +/
Нет руководства по программированию с использованием этого ПО
Также настораживает:
> Операции изменения данных никак не блокируют читателей.

Это не очень понятно. Что прочитает "читатель" если "писатель" не завершит изменение? Запись в объект должна блокировать чтение из объекта на время исполнения записи. Тем более, если, как Вы говорите, имеется поддержка вторичных ключей.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #57 Ответы: #66

66. Сообщение от erthink (ok), 11-Май-21, 12:06   +/
> Нет руководства по программированию с использованием этого ПО.

RTFM https://erthink.github.io/libmdbx/usage.html#starting

> Также настораживает:
> > Операции изменения данных никак не блокируют читателей.

RTFM https://github.com/erthink/libmdbx/blob/master/README.md#fea... среди прочего, там есть строки:
- Fully ACID-compliant, through to MVCC and CoW.
- Readers are non-blocking, notwithstanding snapshot isolation.

Со ссылками на пояснения что такое ACID, MVCC, CoW и snapshot isolation.
Кроме этого, см. https://ru.bmstu.wiki/LMDB_(Lightning_Memory-Mapped_Database) - вся эта информация в принципе применима к libmdbx, ибо "Historically, libmdbx is a deeply revised and extended descendant of the Lightning Memory-Mapped Database" (https://github.com/erthink/libmdbx/blob/master/README.md#his....

> Это не очень понятно. Что прочитает "читатель" если "писатель" не завершит изменение?

RTFM: ACID предполагает транзакции с изоляцией, т.е. читатели видят результаты только успешно завершенных транзакций.

> Запись в объект должна блокировать чтение из объекта на время исполнения записи.

RTFM: MVCC, snapshot isolation, page shadowing and CoW.
До фиксации транзакции писатель изменяет копию данных, которая не видна читателям.
Примерно как https://ru.wikipedia.org/wiki/Read-copy-update

> Тем более, если, как Вы говорите, имеется поддержка вторичных ключей.

Еще раз:
- в key-value не может быть вторичны ключей, ибо тогда это не key-value просто по определению.
- типизированные колонки, nullable, вторичные ключи, составные индексы - реализованы в https://github.com/PositiveTechnologies/libfpta поверх libmdbx.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #65

67. Сообщение от Аноним (68), 11-Май-21, 12:49   +/
>mdbx.c++ -> mdbx.cpp
>mdbx.h++ -> mdbx.hpp

Windows(TM) в такие имена не может?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1 Ответы: #71

68. Сообщение от Аноним (68), 11-Май-21, 12:52   –1 +/
mdbx.c++/h++ -> mdbx.js
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #3

70. Сообщение от Аноним (68), 11-Май-21, 13:01   –3 +/
А, ну смотрите регулярно шоу Соловьёва, станете добрее.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #64 Ответы: #72

71. Сообщение от erthink (ok), 11-Май-21, 15:35   +/
>>mdbx.c++ -> mdbx.cpp
>>mdbx.h++ -> mdbx.hpp
> Windows(TM) в такие имена не может?

Может давным-давно, и всё это проверяется на CI.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #67

72. Сообщение от bOOster (ok), 12-Май-21, 06:44   +/
> А, ну смотрите регулярно шоу Соловьёва, станете добрее.

Ну и зачем нам врать про "не смотрю ТВ ни в каком виде" если в курсе за такие ШОУ? Я, например, смотрю ТВ, но ниразу не в курсе за такие ШОУ.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #70


Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру