futriix/Черновик Readme.txt

174 lines
5.7 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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 данных.