1. Zip-архів із базою даних на 841 млн показань (791 МБ) можна скачати за посиланням https://drive.google.com/file/d/18oks6STkVpg4-TT2WyCIBBpCgRyF29L2

В архіві 5 файлів:
2.changes
2.snapshot
test.data
test.index
metrics.info

Після розпаковки їх необхідно перемістити в директорію testdir.


2. Якщо є бажання експериментувати з пустою базою даних, краще створити нову. Наприклад, назвемо її "x": створюємо директорію xdir, створюємо файл x.ini із такими налаштуваннями:
tcpPort      = 12345
dir          = xdir
redoDir      = xdir
databaseName = x

Запускаємо СУБД із термінала:
./database_linux -c x.ini

Всі операції виконуємо в кореневій директорії проєкту.

3. Файли *.ini:
database.ini - налаштування СУБД (database);
loadtest.ini - налаштування навантажувального тесту (loadtest);
requests.ini - налаштування прикладів запитів (requests).


4. Скомпільоване ПО для Linux (64-бітна архітектура):
database_linux - СУБД;
loadtest_linux - навантажувального тест;
requests_linux - приклади запитів.


5. Скомпільоване ПО для Windows (64-бітна архітектура):
database_windows - СУБД;
loadtest_windows - навантажувального тест;
requests_windows - приклади запитів.


6. Директорія examples має три вкладені директорії із вихідними кодами:
database - запуску СУБД;
loadtest - навантажувального тесту;
requests - різних типів запитів, що підтримуються СУБД.


7. Якщо на комп'ютері встановлено компілятор Go, можна скомпілювати згадані вище програми за допомогою bash-скриптів:

./linux_build.sh
./windows_build.sh

Скомпільовані версії програм опиняться в кореневій директорії проєкту.


8. Файли з даними розміщуються в директорії datadir. В базі даних вже записано 841 млн. показань. Сумарний розмір трохи більше 1.3 GB.


9. Налаштування навантажувального тесту можна змінити, відредагувавши файл loadtest.ini.
Опція connections - це кількість одночасно відкритих підключень до СУБД.
Опція requestsPerConn - це кількість запитів, які відправляє потік через одне відкрите підключення.

Звіт виглядає наступним чином:

TEST RESULTS:
Time: 2 seconds
Connections: 100
Requests per conn: 500
Total requests: 50000
AVG request time: 3.121022ms
RPS: 26891

listCumulativeMeasures: 3099 (6.2%), AVG request time: 3.785916ms
listCumulativePeriods: 12055 (24.1%), AVG request time: 2.726391ms
listInstantMeasures: 1974 (3.9%), AVG request time: 6.726605ms
listInstantPeriods: 7710 (15.4%), AVG request time: 2.9808ms
listCurrentValues: 25162 (50.3%), AVG request time: 2.988301ms

last day: 20382 (82.1%), AVG request time: 2.954718ms
last week: 2993 (12.1%), AVG request time: 4.050662ms
last month: 708 (2.9%), AVG request time: 8.248486ms
random time range: 755 (3.0%), AVG request time: 3.540239ms

Навантажувальний тест відправляє випадкові запити до випадкових метрик. Оскільки на реальному проєкті запити та часові діапазони мають різну ймовірність - я реалізував це в навантажувальному тесті. 

Приклад 1:
listCurrentValues: 25162 (50.3%) , AVG request time: 2.988301ms 
означає що відправлено 25162 запитів listCurrentValues, що склало 50.3% від загальної кількості запитів. Середній час виконання (Latency) запитів listCurrentValues склав 2.99 міллісекунди.

Приклад 2:
last month: 708 (2.9%), AVG request time: 8.248486ms
означає що відправлено 708 запитів на отримання даних за останній місяць, що склало 2.9% від загальної кількості. Середній час виконання (Latency) таких запитів склав 8.25 міллісекунди. Часовий діапазон задається для всіх запитів окрім listCurrentValues.

10. Запуск навантажувального тесту:
Виконуємо пункт 1.

Запускаємо СУБД із термінала:
./database_linux

Запускаємо тест із іншого термінала:
./loadtest_linux

Чекаємо завершення. Звіт буде надруковано у терміналі після завершення тесту.

Команди для Windows:
./database_windows
./loadtest_windows

11. Запуск прикладів запитів:
Можна запускати на пустій базі даних (без скачування Zip-архіва із показаннями).

Запускаємо СУБД із термінала:
./database_linux

Запускаємо тест із іншого термінала:
./requests_linux

Результат виконання запитів друкується у терміналі.

Команди для Windows:
./database_windows
./requests_windows


12. Подивитись HELP:
./database_linux -h
./loadtest_linux -h
./requests_linux -h


13. Зупинити СУБД, перервати навантажувальний тест:
Ctrl + C
