Synmetrix

Веб-сайтДокументацияДокументация моделей Cube.jsDocker HubСообщество в Slack

# Synmetrix Synmetrix (ранее MLCraft) - это открытая платформа для инженерии данных и семантический слой для централизованного управления метриками. Она предоставляет полный фреймворк для моделирования, интеграции, трансформации, агрегации и распределения данных метрик в больших масштабах. ### Ключевые возможности - **Моделирование данных и трансформации**: Гибко определяйте метрики и измерения с помощью SQL и моделей данных [Cube](https://github.com/cube-js/cube). Применяйте трансформации и агрегации. - **Семантический слой**: Объедините метрики из различных источников в единую, управляемую модель данных. Устраните различия в определениях метрик. - **Планирование отчетов и оповещений**: Мониторьте метрики и получайте уведомления о изменениях через настраиваемые отчеты и оповещения. - **Версионирование**: Отслеживайте изменения схемы данных со временем для прозрачности и возможности аудита. - **Контроль доступа на основе ролей**: Управляйте разрешениями для доступа к моделям данных и метрикам. - **Исследование данных**: Анализируйте метрики через пользовательский интерфейс или интегрируйте с любым инструментом BI через SQL API. - **Кэширование**: Оптимизируйте производительность с помощью предварительных агрегаций и кэширования от [Cube](https://github.com/cube-js/cube). - **Команды**: Сотрудничайте в моделировании метрик по всей вашей организации. ![Synmetrix – Открытый семантический слой](https://synmetrix.org/assets/6542558ce0ae954c7fb97894_Open%20Graph-min.webp) ## Обзор Synmetrix использует [Cube (Cube.js)](https://github.com/cube-js/cube) для реализации гибких моделей данных, которые могут объединять метрики из различных хранилищ, баз данных, API и т. д. Этот единый семантический слой устраняет различия в определениях и расчетах, обеспечивая единственный источник истины. Модель данных метрик затем может быть распространена вниз по потоку любому потребителю через SQL API, позволяя интеграцию в инструменты BI, отчетность, панели инструментов, науку о данных и т. д. Объединив лучшие практики из инженерии данных, такие как кэширование, оркестровка и трансформация, с возможностями самообслуживания аналитики, Synmetrix ускоряет рабочие процессы, основанные на данных, от определения метрик до их использования. ### Примеры использования 1. **Демократизация данных**: Synmetrix делает данные доступными для неспециалистов, позволяя каждому в организации легко принимать решения, основанные на данных. 2. **Бизнес-аналитика (BI) и отчетность**: Интеграция Synmetrix с любым инструментом BI для продвинутой отчетности и аналитики, улучшая визуализацию данных и инсайты. - [Интеграция Synmetrix с Apache Superset](https://github.com/mlcraft-io/examples/tree/main/superset) ([Видео](https://www.youtube.com/watch?v=TzLy88IAYZo)) 3. **Встроенная аналитика**: Используйте API Synmetrix для интеграции аналитики непосредственно в приложения, обеспечивая пользователей данными в реальном времени в рамках их рабочих процессов. - [Интеграция Synmetrix с Observable: Быстрое руководство](https://github.com/mlcraft-io/examples/tree/main/observable) ([Видео](https://www.youtube.com/watch?v=VcAP4vrL8cY)) - [Руководство по подключению Synmetrix к DBeaver с использованием SQL API](https://github.com/mlcraft-io/examples/tree/main/dbeaver) ([Видео](https://www.youtube.com/watch?v=8l_Ud3IM0OQ)) 4. **Семантический слой для LLM**: Повышение точности LLM в обработке данных и формулировании запросов с помощью семантического слоя Synmetrix, улучшая взаимодействие с данными и точность. - [Пример использования Synmetrix с моделью обработки естественного языка (LLM)](https://github.com/mlcraft-io/examples/tree/main/langchain) ([Видео](https://www.youtube.com/watch?v=TtH-pFGDK84)) # Начало работы ### Необходимое программное обеспечение Перед началом работы убедитесь, что установлено следующее программное обеспечение: - [Docker](https://docs.docker.com/install) - [Docker Compose](https://docs.docker.com/compose/install) ### Шаг 1: Загрузка файла docker-compose Репозиторий [mlcraft-io/mlcraft/install-manifests](https://github.com/mlcraft-io/mlcraft/tree/main/install-manifests) содержит все необходимые манифесты для установки Synmetrix. Вы можете скачать файл docker-compose из этого репозитория: Выполните следующую команду в новой директории: ``` wget https://raw.githubusercontent.com/mlcraft-io/mlcraft/main/install-manifests/docker-compose/docker-compose.yml ``` Или используйте `curl`: ``` curl https://raw.githubusercontent.com/mlcraft-io/mlcraft/main/install-manifests/docker-compose/docker-compose.yml -o docker-compose.yml ``` ПРИМЕЧАНИЕ: Убедитесь, что вы проверили [переменные окружения](docs/environments.md) в файле docker-compose.yml и при необходимости измените их. ### Шаг 2: Запуск Synmetrix Выполните следующую команду для запуска Synmetrix вместе с базой данных Postgres для хранения данных: ``` docker-compose pull stack && docker-compose up -d ``` Проверьте, работают ли контейнеры: ``` docker ps ``` Вывод: ``` CONTAINER ID IMAGE ... CREATED STATUS PORTS ... c8f342d086f3 synmetrix/stack ... 1m ago Up 1m 80->8888/tcp ... 30ea14ddaa5e postgres:12 ... 1m ago Up 1m 5432/tcp ``` Установка всех зависимостей займет примерно 5-7 минут. Подождите, пока не увидите сообщение `Synmetrix Stack is ready`. Вы можете просмотреть логи с помощью команды `docker-compose logs -f`, чтобы убедиться, что процесс завершен. #### Запуск Synmetrix на архитектуре ARM64v8 Сначала рекомендуется установить [Rosetta 2](https://support.apple.com/en-gb/102527) на ваш Mac. Это позволит Docker запускать контейнеры ARM64v8. Начиная с версии Docker [4.25](https://www.docker.com/blog/docker-desktop-4-25/) поддерживается нативный запуск контейнеров ARM64v8, но некоторые пользователи все еще сталкиваются с проблемами без установленного Rosetta. Для ARM64v8 Cubestore требует определенной версии. Обновите версию Cubestore в файле docker-compose, добавив суффикс `-arm64v8`. Например, используйте `v0.35.33-arm64v8` (смотрите [теги Cubestore на Docker Hub](https://hub.docker.com/r/cubejs/cubestore/tags) для последней версии). Чтобы запустить файл docker-compose для ARM64v8, используйте следующую команду: ``` docker-compose pull stack && CUBESTORE_VERSION=v0.35.33-arm64v8 docker-compose up -d ``` Видеоруководство (MacOS, процессор M3 Max): [![Видеоруководство](https://img.youtube.com/vi/nLorFq-WpGw/0.jpg)](https://youtu.be/nLorFq-WpGw) ### Шаг 3: Изучите Synmetrix * Вы можете получить доступ к Synmetrix по адресу [http://localhost/](http://localhost/) * Точка доступа GraphQL находится по адресу [http://localhost/v1/graphql](http://localhost/v1/graphql) * Консоль администратора (Hasura Console) доступна по адресу [http://localhost/console](http://localhost/console) * Swagger API Cube доступен по адресу [http://localhost:4000/docs](http://localhost:4000/docs) #### Важные замечания 1. **Доступ к административной консоли**: Обязательно проверьте `HASURA_GRAPHQL_ADMIN_SECRET` в файле docker-compose. Это необходимо для доступа к административной консоли. Значение по умолчанию — `adminsecret`. Не забудьте изменить это значение в производственной среде. 2. **Переменные окружения**: Настройте все необходимые [переменные окружения](docs/environments.md). Synmetrix будет работать с значениями по умолчанию, но для полной функциональности добавьте ключи SMTP и S3. 3. **Предзагруженные начальные данные**: Проект оснащен предзагруженными начальными данными. Используйте указанные ниже учетные данные для входа: - Электронная почта: `demo@synmetrix.org` - Пароль: `demodemo` Этот аккаунт предварительно настроен с двумя демонстрационными источниками данных и доступом к их SQL API. Для операций с SQL вы можете использовать следующие учетные данные с любым PostgreSQL-клиентом, например, DBeaver или TablePlus: | Хост | Порт | База данных | Пользователь | Пароль | | --------- | -------- | --------------------- | ------------------------ | -------------------- | | localhost | 15432 | db | demo_pg_user | demo_pg_pass | | localhost | 15432 | db | demo_clickhouse_user | demo_clickhouse_pass | ## Документация - [Официальная документация](https://docs.synmetrix.org/) - [Документация Cube](https://cube.dev/docs) --- ## Демо онлайн Демо: [app.synmetrix.org](https://app.synmetrix.org) * Логин: `demo@synmetrix.org` * Пароль: `demodemo` ### Базы данных для демонстрации | Тип базы данных | Хост | Порт | База данных | Пользователь | Пароль | SSL | | ---------------------------- | ------------------------- | -------- | --------------------- | ------------------------ | ------------------- | ----- | | ClickHouse | gh-api.clickhouse.tech | 443 | default | play | без пароля | true | | PostgreSQL | demo-db-examples.cube.dev | 5432 | ecom | cube | 12345 | false | --- ## Моделирование данных Synmetrix использует Cube для гибкого моделирования данных и трансформаций. Cube реализует многоступенчатую архитектуру моделирования данных SQL: - Исходные данные находятся в исходной базе данных, такой как Postgres, MySQL и т. д. - Исходные данные моделируются в повторно используемые хранилища данных с помощью файлов моделей данных Cube. Эти модели позволяют определять метрики, измерения, гранулярности и отношения. - Модели действуют как абстракционный слой между исходными данными и кодом приложения. - Cube затем генерирует оптимизированные аналитические SQL-запросы против исходных данных на основе модели. - Распределенный кэш Cube Store оптимизирует производительность запросов, кэшируя результаты запросов. Эта архитектура моделирования позволяет легко создавать быстрые и сложные аналитические запросы с Cube, которые оптимизированы для работы с большими наборами данных. Единая модель данных может объединять метрики из различных баз данных и систем, обеспечивая консистентный семантический слой для конечных пользователей. ## Cube Store Для производственных рабочих нагрузок Synmetrix использует Cube Store в качестве кэширующего слоя и слоя выполнения запросов. Cube Store - это специализированная база данных для операционной аналитики, оптимизированная для быстрых агрегаций и данных временных рядов. Она обеспечивает: - Распределенные запросы для масштабируемости - Продвинутое кэширование для быстрых запросов - Колоночное хранение для производительности аналитики - Интеграцию с Cube для моделирования Используя Cube Store и Cube вместе, Synmetrix получает отличную производительность аналитики и гибкость в моделировании метрик. #### Бенчмарки - [Synmetrix с Cube: Кэширование и Высокая Нагрузка](https://github.com/mlcraft-io/examples/tree/main/benchmarks) --- ## Экосистема | Репозиторий | Описание | | ------------------------------------------------------------ | ---------------------------------------- | | [mlcraft-io/mlcraft](https://github.com/mlcraft-io/mlcraft) | Монорепозиторий Synmetrix | | [mlcraft-io/client-v2](https://github.com/mlcraft-io/client-v2) | Клиент Synmetrix | | [mlcraft-io/docs](https://github.com/mlcraft-io/docs) | Документация Synmetrix | | [mlcraft-io/examples](https://github.com/mlcraft-io/examples) | Примеры Synmetrix | ## Поддержка сообщества Для общей помощи в использовании Synmetrix, пожалуйста, обратитесь к официальной документации Synmetrix. Для дополнительной помощи вы можете использовать один из этих каналов, чтобы задать вопрос: * [Slack](https://join.slack.com/t/mlcraft/shared_invite/zt-1x2gxwn37-J3tTvCR5xSFVfxwUU_YKtg) / Для живого обсуждения с сообществом и командой Synmetrix * [GitHub](https://github.com/mlcraft-io/mlcraft) / Отчеты об ошибках, вклад в проект ## Дорожная карта Ознакомьтесь с нашей [дорожной картой](https://github.com/mlcraft-io/mlcraft/projects), чтобы узнать, над чем мы в настоящее время работаем, и что мы планируем на следующие недели, месяцы и годы. ## Лицензия Основная часть Synmetrix доступна под [лицензией Apache 2.0](https://github.com/mlcraft-io/mlcraft/blob/main/LICENSE) (Apache-2.0). **Все остальные материалы** доступны под [лицензией MIT](LICENSE-community). ## Системные требования | Компонент | Требование | | ----------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Процессор (CPU) | 3.2 ГГц или выше, современный процессор с поддержкой многопоточности и виртуализации. | | Оперативная память (RAM) | 8 ГБ или более для выполнения вычислительных задач и обработки данных. | | Дисковое пространство | Как минимум 30 ГБ свободного места для установки программного обеспечения и хранения рабочих данных. | | Сеть | Требуется подключение к интернету для облачных сервисов и обновлений программного обеспечения. | ## Авторы [@ifokeev](https://github.com/ifokeev), [@Libertonius](https://github.com/Libertonius), [@ilyozzz](https://github.com/ilyozzz)