Delete README.md
This commit is contained in:
parent
577a1c753b
commit
bcb457be43
295
README.md
295
README.md
@ -1,295 +0,0 @@
|
|||||||
<!-- Improved compatibility of К началу link: See: https://github.com/othneildrew/Best-README-Template/pull/73 -->
|
|
||||||
<a id="readme-top"></a>
|
|
||||||
<!--
|
|
||||||
*** Thanks for checking out the Best-README-Template. If you have a suggestion
|
|
||||||
*** that would make this better, please fork the repo and create a pull request
|
|
||||||
*** or simply open an issue with the tag "enhancement".
|
|
||||||
*** Don't forget to give the project a star!
|
|
||||||
*** Thanks again! Now go create something AMAZING! :D
|
|
||||||
-->
|
|
||||||
|
|
||||||
|
|
||||||
<!-- PROJECT LOGO -->
|
|
||||||
<br />
|
|
||||||
<div align="center">
|
|
||||||
<!-- <a href="https://github.com/othneildrew/Best-README-Template"> -->
|
|
||||||
<img src="Logo.png" height=100 alt="Logo.png"></img>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<p align="center">
|
|
||||||
<h3> <b>Futriis-это легковесная, распределённая wait-free и lock-free дружественная in-memory СУБД,
|
|
||||||
реализованная на Go с поддержкой плагинов на языке lua для операционных систем на базе Solaris (ядра Illumos)</b> <br></h3>
|
|
||||||
<br />
|
|
||||||
<br />
|
|
||||||
<!-- <a href="">Сообщить об ошибке</a>
|
|
||||||
·
|
|
||||||
<!-- <a href="">Предложение новой функциональности</a> -->
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
## Краткая документация проекта FutriiS
|
|
||||||
|
|
||||||
<!-- TABLE OF CONTENTS -->
|
|
||||||
<br>
|
|
||||||
<!-- <details> -->
|
|
||||||
<summary><b>Содержание</b></summary></br>
|
|
||||||
<ol>
|
|
||||||
<li>
|
|
||||||
<a href="#о-проекте">О проекте</a>
|
|
||||||
<li><a href="#лицензия">Лицензия</a></li>
|
|
||||||
<li><a href="#глоссарий">Глоссарий</a></li>
|
|
||||||
<li><a href="#системные-требования">Системные требования</a></li>
|
|
||||||
<li><a href="#подготовка">Подготовка</a></li>
|
|
||||||
<li><a href="#компиляция">Компиляция</a></li>
|
|
||||||
<li><a href="#тестирование">Тестирование</a></li>
|
|
||||||
<li><a href="#примеры-команд-субд">Примеры команд субд</a></li>
|
|
||||||
<li><a href="#репликация">Репликация</a></li>
|
|
||||||
<li><a href="#резервное-копирование">Резервное копирование</a></li>
|
|
||||||
<li><a href="#индексы">Индексы</a></li>
|
|
||||||
<li><a href="#транзакции">Транзакции</a></li>
|
|
||||||
<li><a href="#шардинг">Шардинг</a></li>
|
|
||||||
<li><a href="#кластеризация">Кластеризация</a></li>
|
|
||||||
<li><a href="#lua-скрипты">Lua-скрипты</a></li>
|
|
||||||
<li><a href="#сферы-применения">Сферы применения</a></li>
|
|
||||||
<li><a href="#дорожная-карта">Дорожная карта</a></li>
|
|
||||||
<li><a href="#контакты">Контакты</a></li>
|
|
||||||
</ol>
|
|
||||||
<!-- </details> -->
|
|
||||||
|
|
||||||
|
|
||||||
# futriis - Распределённая in-memory СУБД
|
|
||||||
|
|
||||||
futriis - это легковесная, распределённая wait-free и lock-free дружественная in-memory СУБД,
|
|
||||||
реализованная на Go с поддержкой плагинов на языке lua.
|
|
||||||
|
|
||||||
## Архитектура
|
|
||||||
|
|
||||||
СУБД реализует три основных типа данных:
|
|
||||||
- **Таппл (Tapple)** - аналог базы данных в РСУБД
|
|
||||||
- **Слайс (Slice)** - аналог таблицы
|
|
||||||
- **Кортеж (Tuple)** - аналог записи в таблице
|
|
||||||
|
|
||||||
|
|
||||||
## Системные требования
|
|
||||||
|
|
||||||
> [!WARNING]
|
|
||||||
> - Процессор: Intel или AMD
|
|
||||||
> - Оперативная память: 4ГБ (Для Linux) 8ГБ (Для Illumos sytems)
|
|
||||||
> - Только Unix-подобная ОС (Solaris, OpenIndiana, Linux)
|
|
||||||
> - Go 1.25.6 или выше
|
|
||||||
|
|
||||||
> [!CAUTION]
|
|
||||||
> **Важно: Windows и MacOS X не поддерживаются!**
|
|
||||||
|
|
||||||
## Установка и сборка
|
|
||||||
|
|
||||||
1. Клонируйте репозиторий:
|
|
||||||
```bash
|
|
||||||
git clone https://github.com/futriis/db.git
|
|
||||||
cd futriis
|
|
||||||
```
|
|
||||||
|
|
||||||
2. Скомпилируйте и запустите:
|
|
||||||
```bash
|
|
||||||
./build.sh
|
|
||||||
./futriis
|
|
||||||
```
|
|
||||||
|
|
||||||
## Файл futriisd
|
|
||||||
|
|
||||||
futriisd - это демон (сервис) СУБД Futriis, расположенный в /futriis/build/futriisd. Этот файл является:
|
|
||||||
|
|
||||||
- Основным исполняемым файлом сервера - запускает ядро СУБД в фоновом режиме как демон (daemon)
|
|
||||||
- Точкой входа для кластерного узла - каждый узел кластера запускается через этот бинарный файл
|
|
||||||
- Фоновым процессом - работает независимо от терминала, обрабатывая сетевые запросы
|
|
||||||
- Управляющим процессом - отвечает за инициализацию всех компонентов: хранилища, кластера, репликации, AOF
|
|
||||||
- Сетевым сервером - слушает порты для координации кластера и обработки клиентских подключений
|
|
||||||
|
|
||||||
**Пример использования демона "futriisd"**
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Запуск узла кластера
|
|
||||||
./futriisd --config /path/to/config.toml --node-id node-1
|
|
||||||
|
|
||||||
# Запуск координатора
|
|
||||||
./futriisd --config /path/to/config.toml --coordinator
|
|
||||||
|
|
||||||
# Запуск в фоновом режиме
|
|
||||||
./futriisd --daemon
|
|
||||||
```
|
|
||||||
|
|
||||||
## Базовые команды (Tapple/Slice/Tuple)
|
|
||||||
|
|
||||||
### Создание объектов
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Создать таппл (базу данных)
|
|
||||||
create tapple users
|
|
||||||
|
|
||||||
# Создать слайс (таблицу) в таппле
|
|
||||||
create slice users user_profiles
|
|
||||||
|
|
||||||
# Создать кортеж (запись) с полями
|
|
||||||
create tuple users user_profiles user1 name=John age=30 email=john@example.com
|
|
||||||
create tuple users user_profiles user2 name=Jane age=25 city=NYC
|
|
||||||
```
|
|
||||||
|
|
||||||
### Просмотр списков
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Показать все тапплы
|
|
||||||
list tapples
|
|
||||||
|
|
||||||
# Показать все слайсы в таппле
|
|
||||||
list slices users
|
|
||||||
|
|
||||||
# Показать все кортежи в слайсе
|
|
||||||
show tuples users user_profiles
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
## Индексы
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Создать первичный индекс для таппла
|
|
||||||
add.prime.index users
|
|
||||||
|
|
||||||
# Удалить первичный индекс
|
|
||||||
delete.prime.index users
|
|
||||||
|
|
||||||
# Создать вторичный индекс по полю
|
|
||||||
add.secondary.index users email
|
|
||||||
add.secondary.index users age
|
|
||||||
|
|
||||||
# Удалить вторичный индекс
|
|
||||||
delete.secondary.index users email
|
|
||||||
```
|
|
||||||
|
|
||||||
### Обновление и удаление
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Обновить поля кортежа
|
|
||||||
update tuple users user_profiles user1 age=31 city=Boston
|
|
||||||
|
|
||||||
# Удалить кортеж
|
|
||||||
delete tuple users user_profiles user2
|
|
||||||
|
|
||||||
# Удалить слайс
|
|
||||||
delete slice users user_profiles
|
|
||||||
|
|
||||||
# Удалить таппл
|
|
||||||
delete tapple users
|
|
||||||
```
|
|
||||||
|
|
||||||
## Транзакции
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Начать транзакцию
|
|
||||||
begin
|
|
||||||
|
|
||||||
# Выполнить операции внутри транзакции
|
|
||||||
create tuple users user_profiles user3 name=Bob age=28
|
|
||||||
update tuple users user_profiles user1 city=Chicago
|
|
||||||
|
|
||||||
# Зафиксировать транзакцию
|
|
||||||
commit
|
|
||||||
|
|
||||||
# Или откатить транзакцию
|
|
||||||
rollback
|
|
||||||
```
|
|
||||||
|
|
||||||
## Кластеринг и шардинг
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Показать статус кластера
|
|
||||||
cluster.status
|
|
||||||
|
|
||||||
# Добавить узел в кластер
|
|
||||||
add.node 192.168.1.101:8080
|
|
||||||
add.node 192.168.1.102:8080
|
|
||||||
|
|
||||||
# Удалить узел из кластера
|
|
||||||
evict.node node-123
|
|
||||||
|
|
||||||
# Ребалансировка кластера
|
|
||||||
cluster.rebalance
|
|
||||||
|
|
||||||
# Показать статус шардинга
|
|
||||||
sharding.status
|
|
||||||
```
|
|
||||||
|
|
||||||
## Сжатие данных
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Показать статистику сжатия по колонкам
|
|
||||||
compression.stats
|
|
||||||
```
|
|
||||||
|
|
||||||
## AOF (Append-Only File)
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Показать информацию о AOF файле
|
|
||||||
aof.info
|
|
||||||
|
|
||||||
# Восстановить данные из AOF файла
|
|
||||||
aof.recover
|
|
||||||
aof.recover /path/to/custom/file.aof
|
|
||||||
```
|
|
||||||
|
|
||||||
## Lua-плагины
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Выполнить Lua плагин
|
|
||||||
lua my_plugin
|
|
||||||
lua analytics_script
|
|
||||||
```
|
|
||||||
|
|
||||||
## Служебные команды
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Показать справку
|
|
||||||
help
|
|
||||||
|
|
||||||
# Выйти из СУБД
|
|
||||||
exit
|
|
||||||
# или
|
|
||||||
quit
|
|
||||||
```
|
|
||||||
|
|
||||||
## Комплексный пример рабочей сессии
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Создаём структуру данных
|
|
||||||
create tapple ecommerce
|
|
||||||
create slice ecommerce products
|
|
||||||
create slice ecommerce customers
|
|
||||||
create slice ecommerce orders
|
|
||||||
|
|
||||||
# Создаём индексы
|
|
||||||
add.secondary.index ecommerce price
|
|
||||||
add.secondary.index ecommerce email
|
|
||||||
|
|
||||||
# Добавляем данные (в транзакции)
|
|
||||||
begin
|
|
||||||
create tuple ecommerce products prod1 name=Laptop price=999.99 stock=10
|
|
||||||
create tuple ecommerce products prod2 name=Mouse price=29.99 stock=50
|
|
||||||
create tuple ecommerce customers cust1 name=Alice email=alice@mail.com
|
|
||||||
create tuple ecommerce orders order1 customer=cust1 product=prod1 quantity=1
|
|
||||||
commit
|
|
||||||
|
|
||||||
# Просматриваем данные
|
|
||||||
show tuples ecommerce products
|
|
||||||
show tuples ecommerce customers
|
|
||||||
|
|
||||||
# Обновляем данные
|
|
||||||
update tuple ecommerce products prod1 stock=9
|
|
||||||
|
|
||||||
# Проверяем статус кластера
|
|
||||||
cluster.status
|
|
||||||
|
|
||||||
# Смотрим статистику сжатия
|
|
||||||
compression.stats
|
|
||||||
|
|
||||||
# Выходим
|
|
||||||
exit
|
|
||||||
```
|
|
||||||
Loading…
x
Reference in New Issue
Block a user