Konard / LinksPlatform

Holistic system for storage and transformation of information based on associative model of data. Целостная система для хранения и обработки информации, основанная на ассоциативной модели данных.
https://linksplatform.github.io/Documentation/
GNU Lesser General Public License v3.0
57 stars 9 forks source link

Isolation / MultiThread support #8

Open Konard opened 9 years ago

Konard commented 9 years ago

Allow to execute multiple transactions at the same time.

lubyagin commented 9 years ago

Какие операции над базой не требуют глобальной блокировки? см. Global Locks.

Konard commented 9 years ago

Всё зависит от того, требует ли блокировки BST, где-то я видел, есть реализации так называемых lookfree деревьев. Если операции вставки, удаления можно выполнять параллельно над деревом, то реализовать поддержку многопоточности в целом уже проще. Сейчас самое узкое место это бинарное дерево. Для транзакций есть дополнительная специфика, нужно учитывать чтобы они не конфликтовали друг с другом, и если одна транзакция поменяла данные, на которых основывалась другая (читала например), то вторую вероятно нужно откатить и попробовать выполнить заново.

Konard commented 8 years ago

https://github.com/nbronson/snaptree

Konard commented 8 years ago

One possible solution for intensive multithread usage is to disable update and delete operations, and make two separate collections of trees for read-only and create-only operations.

Konard commented 4 years ago

If it is possible to have lock-free linked list operation, then it is possible to have lock-free trees that use locking only on rebalancing and the rebalancing happens only ones for N inserts/removals.