|
|
|
Key-value много-процессная база для Delphi
|
|||
|---|---|---|---|
|
#18+
(памятка для себя) в начале топика была ссылка на Symas LMDB Не в рамках моей задачи (я уже к MySQL пришел), а в далеком будущем задумался над портированием библиотеки на Delphi. Вот список всех оберток на сегодняшний день: https://symas.com/lmdb/technical/#wrappers Там в .NET - обертке есть скомпилированные DLLки, которые можно было бы взять за основу. Symas LMDB An ultra-fast, ultra-compact, crash-proof key-value embedded data store. Symas LMDB is an extraordinarily fast, memory-efficient database we developed for the OpenLDAP Project. With memory-mapped files, it has the read performance of a pure in-memory database while retaining the persistence of standard disk-based databases. Bottom line, with only 32KB of object code, LMDB may seem tiny. But it’s the right 32KB. Compact and efficient are two sides of a coin; that’s part of what makes LMDB so powerful. Explore Capabilities Ordered-map interface - keys are always sorted; range lookups are supported Fully-transactional - full ACID semantics with MVCC Reader/writer transactions - readers don’t block writers; writers don’t block readers Fully serialized writers - writes are always deadlock-free Extremely cheap read transactions can be performed using no mallocs or any other blocking calls Multi-thread and multi-process concurrency supported - Environments may be opened by multiple processes on the same host Multiple sub-databases may be created - transactions cover all sub-databases Memory-mapped - allows for zero-copy lookup and iteration Maintenance-free - no external process or background cleanup or compaction required Crash-proof - no logs or crash recovery procedures required No application-level caching - LMDB fully exploits the operating system’s buffer cache 32KB of object code and 6KLOC of C - fits in CPU L1 cache for maximum performance ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2018, 15:46 |
|
||
|
Key-value много-процессная база для Delphi
|
|||
|---|---|---|---|
|
#18+
Всегда удивляло как какая-то технология становится модной, ее сразу начинают пользовать везде, даже там где она нафик не уперлась :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2018, 16:19 |
|
||
|
Key-value много-процессная база для Delphi
|
|||
|---|---|---|---|
|
#18+
makhaon, Если коннект к локалхосту - это не значит, что нет сетевых технологий И дело здесь не в скорости развёртывания. TDictionary вообще не нужно разворачивать. Дело в том, что решение не подходит под задачу. Или не соответствует. Кому как удобнее ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2018, 16:36 |
|
||
|
Key-value много-процессная база для Delphi
|
|||
|---|---|---|---|
|
#18+
энди, "везде пихают" не всегда из-за модности технологии, а из-за её знакомости в коллективе. Для более легкого саппорта возможно более широким кругом программистов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2018, 16:37 |
|
||
|
Key-value много-процессная база для Delphi
|
|||
|---|---|---|---|
|
#18+
makhaon...FB Embedded, если процесс один... А если не один - что будет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2018, 21:40 |
|
||
|
Key-value много-процессная база для Delphi
|
|||
|---|---|---|---|
|
#18+
От версии зависит. В 2.5 и выше - катастрофы не случится. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2018, 09:26 |
|
||
|
Key-value много-процессная база для Delphi
|
|||
|---|---|---|---|
|
#18+
Хотя если БД каждый раз отдельная будет - в любой версии работать будет, IIRC. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2018, 09:47 |
|
||
|
Key-value много-процессная база для Delphi
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOU, Один TDictionary на несколько процессов? Можно, скорее всего. Но я представлю уже обвязку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2018, 11:38 |
|
||
|
Key-value много-процессная база для Delphi
|
|||
|---|---|---|---|
|
#18+
makhaon, Ну давайте замутим тестовое сравнение. И решим Я ванговал производительность x10 в пользу TDictionary. Посмотрим, как это будет на практике ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2018, 12:31 |
|
||
|
Key-value много-процессная база для Delphi
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOUmakhaon, Ну давайте замутим тестовое сравнение. И решим Я ванговал производительность x10 в пользу TDictionary. Посмотрим, как это будет на практике Можно и больше, но это уже программировать надо) Уменьшить тормоза на критической секции помогут несколько TDictionary, по числу процессоров или в 2..4 раза больше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2018, 12:54 |
|
||
|
Key-value много-процессная база для Delphi
|
|||
|---|---|---|---|
|
#18+
Aleksandr Sharahov, Есть у меня идея синхронизируемых контейнеров. В рамках этой идеи для хеша есть 1024 слота, открываемых на чтение или запись. А там уже указатели на локальные хеши. Но конечно для ТС и TDictionary c крит секцией будет огонь решение ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2018, 13:11 |
|
||
|
Key-value много-процессная база для Delphi
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOUAleksandr Sharahov, Есть у меня идея синхронизируемых контейнеров. В рамках этой идеи для хеша есть 1024 слота, открываемых на чтение или запись. А там уже указатели на локальные хеши. Но конечно для ТС и TDictionary c крит секцией будет огонь решение Дык и реализация есть. Если читал мой опус внимательно, то наверняка заметил, что хеширование можно выполнять отдельно, до поиска/вставки. Т.е., например, по старшим битам хеша определяешь в какую таблицу надо смотреть, и все. Все уже написано. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2018, 13:21 |
|
||
|
Key-value много-процессная база для Delphi
|
|||
|---|---|---|---|
|
#18+
Aleksandr Sharahov, У меня и свой TDictionary есть А в твоём нет главного - слотов :) На чтение и запись который. Забыл как называется примитив ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2018, 14:10 |
|
||
|
Key-value много-процессная база для Delphi
|
|||
|---|---|---|---|
|
#18+
defecatorпри использовании ODAC клиентская часть Oracle равна нулюПравда при смене версии оракла тогда приходится покупать новый одак. Но это мелочи по сравнению с экономией полгига места на диске ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2018, 15:22 |
|
||
|
Key-value много-процессная база для Delphi
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOUAleksandr Sharahov, У меня и свой TDictionary есть А в твоём нет главного - слотов :) На чтение и запись который. Забыл как называется примитив Вот склероз проклятый, что с людьми делает, неужто array забыл? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2018, 21:31 |
|
||
|
Key-value много-процессная база для Delphi
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_defecatorпри использовании ODAC клиентская часть Oracle равна нулюПравда при смене версии оракла тогда приходится покупать новый одак. Но это мелочи по сравнению с экономией полгига места на диске не придётся. протокол совместим снизу вверх ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2018, 22:08 |
|
||
|
Key-value много-процессная база для Delphi
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOUТолько сейчас заметил, что ТС говорит а многопроцессной базе, а не о многопоточной Таки да, тут уже простым напильником не обойтись, лучше взять готовый инструмент :) На самом деле пока неясно, зачем автору это нужно. У меня есть только одно объяснение, но хотелось бы из первых уст. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2018, 09:30 |
|
||
|
Key-value много-процессная база для Delphi
|
|||
|---|---|---|---|
|
#18+
Aleksandr SharahovSOFT FOR YOUТолько сейчас заметил, что ТС говорит а многопроцессной базе, а не о многопоточной Таки да, тут уже простым напильником не обойтись, лучше взять готовый инструмент :) На самом деле пока неясно, зачем автору это нужно. У меня есть только одно объяснение, но хотелось бы из первых уст. из первых уст Потому что на сервере каждая активная пользовательская сессия представлена отдельным процессом. А складывать результаты (и читать их) мои плагины должны в общую корзину. Отсюда и требование к мультипроцессности было. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2018, 11:52 |
|
||
|
Key-value много-процессная база для Delphi
|
|||
|---|---|---|---|
|
#18+
Кроик СемёнAleksandr Sharahovпропущено... На самом деле пока неясно, зачем автору это нужно. У меня есть только одно объяснение, но хотелось бы из первых уст. из первых уст Потому что на сервере каждая активная пользовательская сессия представлена отдельным процессом. А складывать результаты (и читать их) мои плагины должны в общую корзину. Отсюда и требование к мультипроцессности было. Все еще неясно, почему именно процессом, а не потоком? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2018, 12:32 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39638521&tid=2040946]: |
0ms |
get settings: |
6ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
193ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
70ms |
get tp. blocked users: |
2ms |
| others: | 243ms |
| total: | 541ms |

| 0 / 0 |
