diff --git a/README.md b/README.md index 5203954..e98a5c9 100644 --- a/README.md +++ b/README.md @@ -215,14 +215,14 @@ futriix — это лёгкая распределённая NoSQL‑СУБД н |----------|----------|----------| | **Хранилище (Storage)** | `sync.Map` | Конкурентная хэш‑таблица для хранения баз данных, обеспечивает wait‑free чтение и запись | | | Атомарные счётчики (`atomic.Int64`) | Для отслеживания общего количества документов без блокировок | -| **База данных (Database)** | `sync.Map` коллекций | Синоним термнина "база данных" в реляционных СУБД | +| **База данных (Database)** | `sync.Map` коллекций | Синоним термина "база данных" в реляционных СУБД | | | Мьютексы (`sync.RWMutex`) | Для операций изменения структуры (создание/удаление коллекций) | | **Коллекция (Collection)** | `sync.Map` документов | Ключ: ID документа, значение: указатель на `Document` | | | `sync.Map` индексов | Отдельное хранилище для инвертированных индексов | | | Атомарные счётчики | Количество документов (`docCount`) и размер в байтах (`sizeBytes`) | -| **Индекс (Index)** | `sync.Map` (значение → ID) | Реализация инвертированного индекса | -| | Уникальный индекс | Прямая lookup‑операция $O(1)$ | -| | Неуникальный индекс | Range‑сканирование с оптимизированным сравнением | +| **Индекс (Index)** | **`lock-free skip-list`** (значение → ID) | Реализация инвертированного индекса. Заменяет `sync.Map`: устраняет внутренние блокировки, даёт упорядоченный обход и эффективный префиксный поиск | +| | Уникальный индекс | Прямая lookup‑операция $O(\log n)$ в среднем (было $O(1)$ у `sync.Map`, но без упорядоченности и с внутренними блокировками) | +| | Неуникальный индекс | Range‑сканирование в порядке возрастания ключей (детерминированный результат) | | | Составной индекс | Конкатенация значений полей с разделителем `"|"` | | **Документ (Document)** | `map[string]interface{}` | Динамическая схема полей | | | Версия (`uint64`) | Для оптимистичных блокировок |