2025-06-22 18:13:59 +03:00
rc2
2025-06-22 17:57:49 +03:00
rc1
2025-06-03 05:04:18 +03:00
rc1
2025-06-03 05:04:18 +03:00
rc1
2025-06-03 05:04:18 +03:00
rc2
2025-06-22 17:57:49 +03:00
rc1
2025-06-03 05:04:18 +03:00
rc2
2025-06-22 18:13:59 +03:00
rc1
2025-06-03 05:04:18 +03:00
rc2
2025-06-22 18:13:59 +03:00
rc1
2025-06-03 05:04:18 +03:00
rc2
2025-06-22 17:57:49 +03:00
rc1
2025-06-03 05:04:18 +03:00
rc1
2025-06-03 05:04:18 +03:00
rc2
2025-06-22 18:13:59 +03:00
rc1
2025-06-03 05:04:18 +03:00
rc2
2025-06-22 18:13:59 +03:00
rc2
2025-06-22 18:13:59 +03:00
rc1
2025-06-03 05:04:18 +03:00
rc2
2025-06-22 17:57:49 +03:00
rc2
2025-06-22 17:57:49 +03:00
rc2
2025-06-22 17:57:49 +03:00
rc1
2025-06-03 05:04:18 +03:00
rc2
2025-06-22 18:13:59 +03:00
rc2
2025-06-22 18:13:59 +03:00
rc1
2025-06-03 05:04:18 +03:00
2025-06-03 05:08:57 +03:00
rc2
2025-06-22 18:13:59 +03:00
rc2
2025-06-22 18:13:59 +03:00
rc1
2025-06-03 05:04:18 +03:00
rc1
2025-06-03 05:04:18 +03:00

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. 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
Description
спеціалізована СУБД для зберігання та обробки показань датчиків та лічильників
Readme 60 MiB
Languages
Go 99.7%
Shell 0.3%