Ох уж этот StarRocks DB
StarRocks, a Linux Foundation project, is a next-generation sub-second MPP OLAP database for full analytics scenarios, including multi-dimensional analytics, real-time analytics, and ad-hoc queries. InfoWorld’s 2023 BOSSIE Award for best open source software.
BI как код – Rill
Качаем, ставим, запускаем:
curl -s https://cdn.rilldata.com/install.sh | bash
rill start my-rill-project
Можно еще статейку полистать:
https://a.gavrilov.info/data/posts/Unlocking%20Data%20Insights%20with%20Rill:%20A%20Comprehensive%20Guide%20to%20Streamlined%20Data%20Analytics%20%7C%20by%20Felix%20Gu.pdf
🤌 DuckDB inside
Выбираем базы данных
Статья с хабра про выбор баз данных
https://habr.com/ru/articles/775574/
Визуализация изменения ценности 1$ на протяжении 20 лет
Смотрим тут: https://perthirtysix.com/tool/visualizing-american-inflation
Или копию pdf тут: https://a.gavrilov.info/data/posts/How%20Far%20Would%20$1%20From%201999%20Go%20Today%3F.pdf
Открытые данные о перелетах во всем мире
https://github.com/adsblol/globe_history
✈️🗄 Historical data for all aircrafts traces known to adsb.lol. Openly licensed.

https://github.com/adsblol/globe_history/
This is a database for the day of 2023-12-09 of all aircraft known to adsb.lol.
GitHub Release: v2023.12.09-planes-readsb-staging-0
GitHub Download Link: https://github.com/adsblol/globe_history/releases/tag/v2023.12.09-planes-readsb-staging-0
Uploaded on: 2023-12-10
Original Path: /var/globe_history/2023/12/09
Pod of origin: planes-readsb-staging-0
It was made by readsb (https://github.com/wiedehopf/readsb)
This database is made available under the Open Database License:
http://opendatacommons.org/licenses/odbl/1.0/.
Attached locally: LICENSE-ODbL.txt
This is made possible by the adsb.lol feeders.
If you want to help, please consider increasing coverage by adding a feeder:
https://adsb.lol/feed
By feeding adsb.lol, you agree to the extent possible under law,
to waive all copyright and related or neighboring rights to your data, associating your work with the CC0 license.
https://creativecommons.org/publicdomain/zero/1.0/
Attached locally: LICENSE-CC0.txt
ps: может понадобиться декодер https://github.com/wiedehopf/readsb
Запускаем Garage S3 в Docker
Создаем проект, просто папку, где все будем хранить:
mkdir garage
cd garage
Создаем файл настроек томл:
nano garage.toml
Пишем туда этот текст:
metadata_dir = "/var/lib/garage/meta"
data_dir = "/var/lib/garage/data"
db_engine = "lmdb"
replication_mode = "none"
rpc_bind_addr = "[::]:3901"
rpc_public_addr = "127.0.0.1:3901"
rpc_secret = "3e59650cc67421460a80eafc4d45611ebb63a214296d8f32f51135041ff514f5"
[s3_api]
s3_region = "garage"
api_bind_addr = "[::]:3900"
root_domain = "localhost"
[s3_web]
bind_addr = "[::]:3902"
root_domain = "localhost"
index = "index.html"
[k2v_api]
api_bind_addr = "[::]:3904"
[admin]
api_bind_addr = "0.0.0.0:3903"
admin_token = "472070e320469b2f048f77dcad4149e0c608ef01ecf0ac863c416287a1127a9e"
Далее создаем папку для хранения метаданных и самих данных:
mkdir meta
mkdir data
Теперь запускаем docker:
docker run \
-d \
--name garaged \
--restart always \
-p 3900:3900 -p 3901:3901 -p 3902:3902 -p 3903:3903 -p 3904:3904 \
-v ./garage.toml:/etc/garage.toml \
-v ./meta:/var/lib/garage/meta \
-v ./data:/var/lib/garage/data \
dxflrs/garage:v0.9.0
Проверяем, что все хорошо:
Для удобства зарегистрируем alias так:
alias garage="docker exec -ti garaged /garage"
Теперь можно запускать команды быстрее.
garage status
==== HEALTHY NODES ====
ID Hostname Address Tags Zone Capacity DataAvail
851017ec5989840f e3428f26541f 127.0.0.1:3901 NO ROLE ASSIGNED
Добавим роль:
garage layout assign -z dc1 -c 1G 851017ec5989840f
Role changes are staged but not yet commited.
Use `garage layout show` to view staged role changes,
and `garage layout apply` to enact staged changes.
Применим роль:
garage layout apply --version 1
==== COMPUTATION OF A NEW PARTITION ASSIGNATION ====
Partitions are replicated 1 times on at least 1 distinct zones.
Optimal partition size: 3.9 MB
Usable capacity / total cluster capacity: 1000.0 MB / 1000.0 MB (100.0 %)
Effective capacity (replication factor 1): 1000.0 MB
dc1 Tags Partitions Capacity Usable capacity
851017ec5989840f 256 (256 new) 1000.0 MB 1000.0 MB (100.0%)
TOTAL 256 (256 unique) 1000.0 MB 1000.0 MB (100.0%)
New cluster layout with updated role assignment has been applied in cluster.
Data will now be moved around between nodes accordingly.
Можно создавать бакет:
garage bucket create gavrilov
Bucket gavrilov was created.
Генерируем ключи:
garage key create gavrilov-key
Key name: gavrilov-key
Key ID: GK6d2fd5f2bb22374c2b626fb2
Secret key: 5118548e77dcd660705662f18742e4d9f0cd5d37409c2e3bfa53a50f00e33886
Can create buckets: false
Key-specific bucket aliases:
Authorized buckets:
Добавляем доступ ключей в бакет:
garage bucket allow \
--read \
--write \
--owner \
gavrilov \
--key gavrilov-key
New permissions for GK6d2fd5f2bb22374c2b626fb2 on gavrilov: read true, write true, owner true.
И последний штрих доступ через web:
garage bucket website gavrilov --allow
Website access allowed for gavrilov
Теперь можно настроить доступ s3 клиента и что то положить в бакет:
mc alias set garage http://localhost:3900 GK6d2fd5f2bb22374c2b626fb2 5118548e77dcd660705662f18742e4d9f0cd5d37409c2e3bfa53a50f00e33886
echo "hello world from s3" | mc pipe garage/gavrilov/index.html
Открываем браузер и смотрим файлик: http://gavrilov.localhost:3902/

ps: На официальном сайте docker запускают с аргументом
--network host
, но у меня почему-то так не работало. Порты закрыты были все. Потом разберусь ¯\_(ツ)_/¯ .
S3 Storage
- Garage – Французский опенсорс для домашнего использования и небольшой нагрузки. Но написан на Rust
garagehq.deuxfleurs Тут можно почитать, как утверждают разраотчики, то это можно напускать даже на тостере :), в прочем они скорее всего правы, учитывая язык разработки.
- SeaweedFS – А этот написан на Go. Вот, что они про себя пишут: быстрая распределенная система хранения больших двоичных объектов, файлов и озер данных для миллиардов файлов! Хранилище BLOB-объектов имеет поиск на диске O(1) и многоуровневое облако. Filer поддерживает Cloud Drive, активно-активную репликацию между DC, Kubernetes, монтирование POSIX FUSE, S3 API, S3 Gateway, Hadoop, WebDAV, шифрование, Erasure Coding. Есть хорошее сравнение с другими решениями тут: https://github.com/seaweedfs/seaweedfs#compared-to-other-file-systems. И есть статья на Медиуме
Seaweedfs – part1
Seaweedfs – part2
Seaweedfs – part3
- JuiceFS – Кажется китайский софт, написан на GO, есть комьюнити версия и платная для высоконагруженных решений. Подходит для big data.