1. Команды для заполнения WAL файла Для заполнения файла futrum.wal нужно выполнить операции записи в базу данных. Вот последовательность команд: # Переход в режим базы данных inbox.start # Создание пространства (коллекции) create.space users # Создание документов - эти операции записываются в WAL create users user1 '{"name": "Alice", "age": 25, "email": "alice@example.com"}' create users user2 '{"name": "Bob", "age": 30, "email": "bob@example.com"}' create users user3 '{"name": "Charlie", "age": 35, "email": "charlie@example.com"}' # Обновление документов - также записывается в WAL update users user1 '{"name": "Alice Smith", "age": 26, "email": "alice.smith@example.com"}' # Удаление документов - записывается в WAL delete users user3 # Создание кортежей в пространстве create.tuple users tuple1 '{"type": "profile", "data": {"premium": true, "settings": {"theme": "dark"}}}' # Выход из режима базы данных exit После выполнения этих команд файл futrum.wal будет содержать записи всех операций создания, обновления и удаления. 2. Все реализованные команды во встроенной СУБД Базовые команды # Выход из приложения exit # Переключение между режимами inbox.start # Переход в режим базы данных exit # Возврат в режим Lua из режима базы данных Команды CRUD операций # Создание пространства (коллекции) create.space # Создание документа create create users user1 '{"name": "John", "age": 30}' create products prod1 '{"title": "Laptop", "price": 999.99}' # Создание кортежа create.tuple create.tuple users profile1 '{"type": "user_profile", "premium": true}' # Чтение документа read read users user1 read products prod1 # Обновление документа update update users user1 '{"name": "John Doe", "age": 31}' # Удаление документа delete delete users user1 Команды управления пользователями (ACL) # Вход под пользователем login login admin login guest # Добавление пользователя add-user add-user alice read,write add-user bob read,write,admin # Удаление пользователя remove-user remove-user bob # Список пользователей list-users Команды статуса и кластера # Статус системы status cluster-status Команды шардинга # Добавление шард-узла add-shard-node add-shard-node http://node1.example.com:8080 add-shard-node http://node2.example.com:8080 # Удаление шард-узла remove-shard-node remove-shard-node http://node1.example.com:8080 # Список шард-узлов list-shard-nodes Команды индексов (новая функциональность) # Создание первичного индекса create-primary-index create-primary-index users create-primary-index products # Создание вторичного индекса create-secondary-index create-secondary-index users email hash create-secondary-index users age btree create-secondary-index users name fulltext create-secondary-index locations coordinates spatial # Типы индексов: # - hash : для точных поисков # - btree : для диапазонных запросов # - fulltext: для полнотекстового поиска # - spatial : для пространственных данных # Удаление индекса drop-index drop-index users users_email_idx # Список индексов коллекции list-indexes list-indexes users # Поиск по индексу query-by-index query-by-index users users_email_idx "alice@example.com" query-by-index users users_age_idx "25" Команды Raft кластера # Добавление узла add-node add-node http://raft1.example.com:8090 # Удаление узла remove-node remove-node node123 Пример полной сессии работы # Запуск в режиме Lua lua> inbox.start # Переход в режим базы данных futriiX:~> create.space customers futriiX:~> create customers cust1 '{"name": "Company A", "city": "Moscow", "balance": 5000}' futriiX:~> create customers cust2 '{"name": "Company B", "city": "SPb", "balance": 3000}' futriiX:~> create-secondary-index customers city hash futriiX:~> create-secondary-index customers balance btree futriiX:~> list-indexes customers futriiX:~> query-by-index customers customers_city_idx "Moscow" futriiX:~> update customers cust1 '{"name": "Company A LLC", "city": "Moscow", "balance": 5500}' futriiX:~> status futriiX:~> exit # Возврат в режим Lua lua> exit Все эти команды логируются в WAL файл при операциях записи (create, update, delete), что обеспечивает durability данных.