174 lines
5.7 KiB
Plaintext
174 lines
5.7 KiB
Plaintext
|
|
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 <space_name>
|
|||
|
|
|
|||
|
|
# Создание документа
|
|||
|
|
create <collection> <key> <json_value>
|
|||
|
|
create users user1 '{"name": "John", "age": 30}'
|
|||
|
|
create products prod1 '{"title": "Laptop", "price": 999.99}'
|
|||
|
|
|
|||
|
|
# Создание кортежа
|
|||
|
|
create.tuple <space> <tuple_id> <json_value>
|
|||
|
|
create.tuple users profile1 '{"type": "user_profile", "premium": true}'
|
|||
|
|
|
|||
|
|
# Чтение документа
|
|||
|
|
read <collection> <key>
|
|||
|
|
read users user1
|
|||
|
|
read products prod1
|
|||
|
|
|
|||
|
|
# Обновление документа
|
|||
|
|
update <collection> <key> <json_value>
|
|||
|
|
update users user1 '{"name": "John Doe", "age": 31}'
|
|||
|
|
|
|||
|
|
# Удаление документа
|
|||
|
|
delete <collection> <key>
|
|||
|
|
delete users user1
|
|||
|
|
|
|||
|
|
Команды управления пользователями (ACL)
|
|||
|
|
|
|||
|
|
# Вход под пользователем
|
|||
|
|
login <username>
|
|||
|
|
login admin
|
|||
|
|
login guest
|
|||
|
|
|
|||
|
|
# Добавление пользователя
|
|||
|
|
add-user <username> <permissions>
|
|||
|
|
add-user alice read,write
|
|||
|
|
add-user bob read,write,admin
|
|||
|
|
|
|||
|
|
# Удаление пользователя
|
|||
|
|
remove-user <username>
|
|||
|
|
remove-user bob
|
|||
|
|
|
|||
|
|
# Список пользователей
|
|||
|
|
list-users
|
|||
|
|
|
|||
|
|
Команды статуса и кластера
|
|||
|
|
|
|||
|
|
# Статус системы
|
|||
|
|
status
|
|||
|
|
cluster-status
|
|||
|
|
|
|||
|
|
Команды шардинга
|
|||
|
|
|
|||
|
|
# Добавление шард-узла
|
|||
|
|
add-shard-node <node_url>
|
|||
|
|
add-shard-node http://node1.example.com:8080
|
|||
|
|
add-shard-node http://node2.example.com:8080
|
|||
|
|
|
|||
|
|
# Удаление шард-узла
|
|||
|
|
remove-shard-node <node_url>
|
|||
|
|
remove-shard-node http://node1.example.com:8080
|
|||
|
|
|
|||
|
|
# Список шард-узлов
|
|||
|
|
list-shard-nodes
|
|||
|
|
|
|||
|
|
Команды индексов (новая функциональность)
|
|||
|
|
|
|||
|
|
# Создание первичного индекса
|
|||
|
|
create-primary-index <collection>
|
|||
|
|
create-primary-index users
|
|||
|
|
create-primary-index products
|
|||
|
|
|
|||
|
|
# Создание вторичного индекса
|
|||
|
|
create-secondary-index <collection> <field_name> <index_type>
|
|||
|
|
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 <collection> <index_name>
|
|||
|
|
drop-index users users_email_idx
|
|||
|
|
|
|||
|
|
# Список индексов коллекции
|
|||
|
|
list-indexes <collection>
|
|||
|
|
list-indexes users
|
|||
|
|
|
|||
|
|
# Поиск по индексу
|
|||
|
|
query-by-index <collection> <index_name> <value>
|
|||
|
|
query-by-index users users_email_idx "alice@example.com"
|
|||
|
|
query-by-index users users_age_idx "25"
|
|||
|
|
|
|||
|
|
Команды Raft кластера
|
|||
|
|
# Добавление узла
|
|||
|
|
add-node <node_url>
|
|||
|
|
add-node http://raft1.example.com:8090
|
|||
|
|
|
|||
|
|
# Удаление узла
|
|||
|
|
remove-node <node_id>
|
|||
|
|
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 данных.
|
|||
|
|
|
|||
|
|
|
|||
|
|
|