|
| 1 | +<div align="center"><img width="500" src="../assets/dle.svg" border="0" /></div> |
| 2 | + |
| 3 | +<div align="center"><h1 align="center">Database Lab Engine (DLE)</h1></div> |
| 4 | + |
| 5 | +<div align="center"> |
| 6 | + <a href="https://twitter.com/intent/tweet?via=Database_Lab&url=https://github.com/postgres-ai/database-lab-engine/&text=Thin%20@PostgreSQL%20clones%20–%20DLE%20provides%20blazing%20fast%20database%20cloning%20to%20build%20powerful%20development,%20test,%20QA,%20staging%20environments."> |
| 7 | + <img src="https://img.shields.io/twitter/url/https/github.com/postgres-ai/database-lab-engine.svg?style=for-the-badge" alt="twitter"> |
| 8 | + </a> |
| 9 | +</div> |
| 10 | + |
| 11 | +<div align="center"> |
| 12 | + <strong>:zap: Молниеносное клонирование баз данных PostgreSQL :elephant:</strong><br> |
| 13 | + Тонкие клоны для создания dev / test / QA / staging сред.<br> |
| 14 | + <sub>Доступно для любых PostgreSQL, включая AWS RDS, GCP CloudSQL, Heroku, Digital Ocean и серверов, администрируемых пользователем</sub> |
| 15 | +</div> |
| 16 | + |
| 17 | +<br /> |
| 18 | + |
| 19 | +<div align="center"> |
| 20 | + <a href="https://postgres.ai" target="blank"><img src="https://img.shields.io/badge/Postgres-AI-orange.svg?style=flat" /></a> <a href="https://github.com/postgres-ai/database-lab-engine/releases/latest"><img src="https://img.shields.io/github/v/release/postgres-ai/database-lab-engine?color=orange&label=Database+Lab&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACYAAAAYCAYAAACWTY9zAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAPYSURBVHgBrVc9SCNBFH7JpVCrjdpotVgFES9qp8LdgaXNFWLnJY2lsVC0zIGKQeEujRw2508lNndqISKaA38a/4Io/qBGQc2B6IKgImLufYPj7W42Jsb9YNidb2ffvHnzzZsZB1mgra3to9Pp9Docjvdc9XJR3G63qm9zdXUV44fGJZZIJKKPj4+R/v7+CNkEh3wJBoPKzc1NIC8vr7WoqEgpLS2l4uJiYodEscLd3R2dnZ2Jcnh4SNvb23ByiG2E2R6cpo6Oju/s9EZfX9+Q/C8F95O5P5ITjnV2dqq5ubnz1dXVam1tLeXk5FA24CjS6uoqLS4uxtjpT729vbGLi4ujubk5lflf3IcfDuu4CHOfJbe8vKwuLCwITno7f3p6mrALBwcHCdiEba4egYP97u7uYDru8vIy0dPT8835NFg1Pz+f7MLT1Kt6DrIoKyv7ko7Dvx6Pxycdo3A4LKbirYDWRkdHLb/t7u5mxO3t7SkuWWlubhYGoa+qqiriBSBGlAkwoK2tLYhf1Ovr62lwcNDwfXJykgoLCzPiELVnx1BpaWkRK2xtbU2IGA3Bw1kWpMGZ29tb0jRNPNGmpKSE6urqxFOPgYEBcrlcwtmVlZWMOF48/x2TQJT0kZIpwQzpbKpUIuHz+YjTh4FrbGykgoKCFzmX3gGrNAHOHIXXwOwUYHbKinsWP+YWzr0VsDE+Pp7EQxZmoafisIAMGoNgkfFl1n8NMN0QP7RZU1Nj+IaOZmdnDUJ/iTOIH8LFasTHqakp0ZHUG6bTrCUpfk6I4h+0w4ACgYBoDxsAbzFUUVFBTU1NNDMzkxGH2TOIH53DORQZBdm5Ocehc6SUyspKQnJOtY21t7dnxSWtSj3MK/StQJQz4aDTZ/Fjbu2ClS1EfGdnJ4k7OTlJ4jBTLj2B1YRpzDY9SPHqp5WPUrS0tCQ64z3QwKG9FL+eM4i/oaFBkHzsoJGREeFcOvGfn5+LJ/7DO9rI7M9HKdFubGyMysvLBT8xMWHgsA1acQiQQWMwKKOFzuQBEOI35zg4gcyvKArhDCcHYIbf78+KSyl+vZN24f7+XjNzVuJHOyn+GCJjF5721pieQ+Ll8lvPoc/19fUkbnNzc1hEjC8dfj7yzHPGViH+dBtzKmC6oVEcrWETHJ+tKBqNwqlwKBQKWnCtVtw7kGxM83q9w8fHx3/ZqIdHrFxfX9PDw4PQEY4jVsBKhuhxFpuenkbR9vf3Q9ze39XVFUcb3sTd8Xj8K3f2Q/6XCeew6pBX1Ee+seD69oGrChfV6vrGR3SN22zg+sbXvQ2+fETIJvwDtXvnpBGzG2wAAAAASUVORK5CYII=" alt="Latest release" /></a> |
| 21 | + |
| 22 | + <a href="https://gitlab.com/postgres-ai/database-lab/-/pipelines" target="blank"><img src="https://gitlab.com/postgres-ai/database-lab//badges/master/pipeline.svg" alt="CI pipeline status" /></a> <a href="https://goreportcard.com/report/gitlab.com/postgres-ai/database-lab" target="blank"><img src="https://goreportcard.com/badge/gitlab.com/postgres-ai/database-lab" alt="Go report" /></a> |
| 23 | + |
| 24 | + <a href="./CODE_OF_CONDUCT.md"><img src="https://img.shields.io/badge/Contributor%20Covenant-2.1-4baaaa.svg?logoColor=black&labelColor=white&color=blue" alt="Contributor Covenant" /></a> <a href="https://slack.postgres.ai" target="blank"><img src="https://img.shields.io/badge/Chat-Slack-blue.svg?logo=slack&style=flat&logoColor=black&labelColor=white&color=blue" alt="Community Slack" /></a> <a href="https://twitter.com/intent/follow?screen_name=Database_Lab" target="blank"><img src="https://img.shields.io/twitter/follow/Database_Lab.svg?style=social&maxAge=3600" alt="Twitter Follow" /></a> |
| 25 | +</div> |
| 26 | + |
| 27 | +<div align="center"> |
| 28 | + <h3> |
| 29 | + <a href="#возможности">Возможности</a> |
| 30 | + <span> | </span> |
| 31 | + <a href="https://postgres.ai/docs">Документация</a> |
| 32 | + <span> | </span> |
| 33 | + <a href="https://postgres.ai/blog/tags/database-lab-engine">Блог</a> |
| 34 | + <span> | </span> |
| 35 | + <a href="#community-support">Сообщество и поддержка</a> |
| 36 | + <span> | </span> |
| 37 | + <a href="./CONTRIBUTING.md">Contributing</a> |
| 38 | + </h3> |
| 39 | +</div> |
| 40 | + |
| 41 | +## Зачем это нужно? |
| 42 | +- Создавайте dev-, QA-, staging-среды, основанные на полноразмерных баз данных, идентичных или приближенных к «боевым». |
| 43 | +- Получите доступ к временным полноразмерным клонам «боевой» БД для анализа запросов SQL и оптимизации (смотрите также: [чат-бот для оптимизации SQL Joe](https://gitlab.com/postgres-ai/joe)). |
| 44 | +- Автоматически тестируйте изменения БД в CI/CD-пайплайнах, чтобы не допускать инцидентов в продуктиве. |
| 45 | + |
| 46 | +Например, клонирование 1-терабайтной базы данных PostgreSQL занимает около 10 секунд. При этом десятки независимых клонов могут работать на одной машине, обеспечивая разработку и тестирование без увеличения затрат на железо. |
| 47 | + |
| 48 | +<p><img src="../assets/dle-demo-animated.gif" border="0" /></p> |
| 49 | + |
| 50 | +## Как это работает |
| 51 | +Тонкое клонирование работает сверхбыстро, так как оно базируется на технологии [Copy-on-Write (CoW)](https://en.wikipedia.org/wiki/Copy-on-write#In_computer_storage). DLE поддерживает два варианта CoW: [ZFS](https://en.wikipedia.org/wiki/ZFS) (используется по умолчанию) и [LVM](https://en.wikipedia.org/wiki/Logical_Volume_Manager_(Linux)). |
| 52 | + |
| 53 | +При работе с ZFS, DLE периодически создаёт новые снимки директории данных и поддерживает набор таких снимков, периодически зачищая старые неиспользуемые. При создании новых клонов пользователи могут выбрать, на основе какого именно снимка создавать клон. |
| 54 | + |
| 55 | +Узнать больше можно по следующим ссылкам: |
| 56 | +- [Как это работает](https://postgres.ai/products/how-it-works) |
| 57 | +- [Тестирование миграций БД](https://postgres.ai/products/database-migration-testing) |
| 58 | +- [Оптимизация SQL с чатботом Joe](https://postgres.ai/products/joe) |
| 59 | +- [Вопросы и ответы](https://postgres.ai/docs/questions-and-answers) |
| 60 | + |
| 61 | +## С чего начать |
| 62 | +- [Введение в Database Lab для любой БД на PostgreSQL](https://postgres.ai/docs/tutorials/database-lab-tutorial) |
| 63 | +- [Введение в Database Lab для Amazon RDS](https://postgres.ai/docs/tutorials/database-lab-tutorial-amazon-rds) |
| 64 | +- [Шаблон модуля Terraform (AWS)](https://postgres.ai/docs/how-to-guides/administration/install-database-lab-with-terraform) |
| 65 | + |
| 66 | +## Изучение кейсов |
| 67 | +- Qiwi: [Как Qiwi управляет данными для ускорения процесса разработки](https://postgres.ai/resources/case-studies/qiwi) |
| 68 | +- GitLab: [Как GitLab построил итерационный процесс оптимизации SQL для снижения рисков инцидентов](https://postgres.ai/resources/case-studies/gitlab) |
| 69 | + |
| 70 | +## Возможности |
| 71 | +- Молниеносное клонирование БД Postgres - создание нового клона, готового к работе, всего за несколько секунд (вне зависимости от размера БД). |
| 72 | +- Максимальное теоритическое количество снимков: 2<sup>64</sup>. ([ZFS](https://en.wikipedia.org/wiki/ZFS), вариант по умолчанию). |
| 73 | +- Максимальный теоритический размер директории данных PostgreSQL: 256 квадриллионов зебибайт или 2<sup>128</sup> байт ([ZFS](https://en.wikipedia.org/wiki/ZFS), вариант по умолчанию). |
| 74 | +- Поддерживаются все основные версии PostgreSQL: 9.6-14. |
| 75 | +- Для реализации тонкого клонирования поддерживается две технологии ([CoW](https://en.wikipedia.org/wiki/Copy-on-write)): [ZFS](https://en.wikipedia.org/wiki/ZFS) и [LVM](https://en.wikipedia.org/wiki/Logical_Volume_Manager_(Linux)). |
| 76 | +- Все компоненты работают в Docker-контейнерах. |
| 77 | +- UI для удобства ручных действий пользователя. |
| 78 | +- API и CLI для удобства автоматизации работы со снимками и клонами DLE. |
| 79 | +- По умолчанию контейнеры PostgreSQL включают огромное количество популярных расширений ([docs](https://postgres.ai/docs/database-lab/supported-databases#extensions-included-by-default)). |
| 80 | +- Контейнеры PostgreSQL могут быть кастомизированы ([docs](https://postgres.ai/docs/database-lab/supported-databases#how-to-add-more-extensions)). |
| 81 | +- БД-источник может находиться где угодно (Postgres под управлением пользователя, Яндекс.Облако, AWS RDS, GCP CloudSQL, Azure, Timescale Cloud и т.д.) и не требует никаких изменений. Нет никакий требований для установки ZFS или Docker в БД-источники (продуктивная БД). |
| 82 | +- Первоначальное получение данных может быть выполнено как на физическом (pg_basebackup или инструменты для бэкапов — такие как WAL-G, pgBackRest), так и на логичесом (dump/restore напрямую из источника или восстановление из файлов, хранящихся в AWS S3) уровнях. |
| 83 | +- Для логического режима поддерживается частичное восстановление данных (конкретные БД, таблицы). |
| 84 | +- Для физического режима поддерживвется постоянно обновляемое состояние ("sync container"), что делает DLE специализированной репликой. |
| 85 | +- Для логического режима поддерживается периодическое полное обновление данных, полностью автоматизированное и контролируемое DLE. Есть возможность использовать несколько дисков, содержащих различные версии БД, так что процесс обновления не приводит к простою в работе c DLE и клонами. |
| 86 | +- Сверхбыстрое восстановление на конкретную временную (Point in Time Recovery, PITR). |
| 87 | +- Неиспользованные клоны автоматически удаляются. |
| 88 | +- Опциональный флаг «защита от удаления» защищает клон от автоматического или ручного удаления. |
| 89 | +- В конфигурации DLE можно настроить политику зачистки снимков. |
| 90 | +- Неубиваемые клоны: клоны переживают рестарты DLE (включая случай с перезагрузкой машины). |
| 91 | +- Команда "reset" может быть использована для переключения между разными версиями данных. |
| 92 | +- Компонент DB Migration Cheecker собирает различные артифакты, полезные для тестирования БД в CI ([docs](https://postgres.ai/docs/db-migration-checker)). |
| 93 | +- SSH port forwarding для API и Postgres-соединений. |
| 94 | +- Параметры конфига Docker-контейнера могут быть специализированы в конфиге DLE. |
| 95 | +- Квоты использования ресурсов для клонов: процессор, память (любые квоты контейнеров, поддерживаемые Docker). |
| 96 | +- Параметры Postgres-конфига могут быть специализированы в конфиге DLE (отдельно для клонов, контейнеров "sync" и "promote"). |
| 97 | +- Monitoring: открытый `/healthz` (без авторизации), расширенный `/status` (требует авторизации), [Netdata-модуль](https://gitlab.com/postgres-ai/netdata_for_dle). |
| 98 | + |
| 99 | +## Как поучаствовать в развитии проекта |
| 100 | +### Поставьте проекту звёздочку |
| 101 | +Самый простой способ поддержки - поставить проекту звезду на GitHub/GitLab: |
| 102 | + |
| 103 | + |
| 104 | + |
| 105 | +### Укажите явно, что вы используете DLE |
| 106 | +Пожалуйста, опубликуйте твит с упоминанием [@Database_Lab](https://twitter.com/Database_Lab) или поделитесь ссылкой на этот репозиторий в вашей любимой социальной сети. |
| 107 | + |
| 108 | +Если вы используете DLE в работе, подумайте, где вы могли бы об этом упомянуть. Один из лучших способов упомянания - использование графики с ссылкой. Некоторые материалы можно найти в директории `./assets`. Пожалуйста, используйте их в своих документая, презентациях, интерфейсах приложений и вебсайтов, чтобы показать, что вы используете DLE. |
| 109 | + |
| 110 | +HTML-код для светлых фонов: |
| 111 | +<p> |
| 112 | + <img width="400" src="https://postgres.ai/assets/powered-by-dle-for-light-background.svg" /> |
| 113 | +</p> |
| 114 | + |
| 115 | +```html |
| 116 | +<a href="http://databaselab.io"> |
| 117 | + <img width="400" src="https://postgres.ai/assets/powered-by-dle-for-light-background.svg" /> |
| 118 | +</a> |
| 119 | +``` |
| 120 | + |
| 121 | +Для тёмных фонов: |
| 122 | +<p style="background-color: #bbb"> |
| 123 | + <img width="400" src="https://postgres.ai/assets/powered-by-dle-for-dark-background.svg" /> |
| 124 | +</p> |
| 125 | + |
| 126 | +```html |
| 127 | +<a href="http://databaselab.io"> |
| 128 | + <img width="400" src="https://postgres.ai/assets/powered-by-dle-for-dark-background.svg" /> |
| 129 | +</a> |
| 130 | +``` |
| 131 | + |
| 132 | +### Предложите идею или сообщите об ошибке |
| 133 | +Подробнее: [./CONTRIBUTING.md](./CONTRIBUTING.md). |
| 134 | + |
| 135 | +### Участвуйте в разработке |
| 136 | +Подробнее: [./CONTRIBUTING.md](./CONTRIBUTING.md). |
| 137 | + |
| 138 | +### Справочники |
| 139 | +- [Компоненты DLE](https://postgres.ai/docs/reference-guides/database-lab-engine-components) |
| 140 | +- [Справочник по конфигурации DLE](https://postgres.ai/docs/database-lab/config-reference) |
| 141 | +- [Справочник по DLE API](https://postgres.ai/swagger-ui/dblab/) |
| 142 | +- [Справочник по Client CLI](https://postgres.ai/docs/database-lab/cli-reference) |
| 143 | + |
| 144 | +### HowTo-инструкции |
| 145 | +- [Как установить Database Lab с Terraform на AWS](https://postgres.ai/docs/how-to-guides/administration/install-database-lab-with-terraform) |
| 146 | +- [Как установить и инициализировать Database Lab CLI](https://postgres.ai/docs/guides/cli/cli-install-init) |
| 147 | +- [Как управлять DLE](https://postgres.ai/docs/how-to-guides/administration) |
| 148 | +- [Как работать с клонами](https://postgres.ai/docs/how-to-guides/cloning) |
| 149 | + |
| 150 | +Вы можете найти больше в [секции "How-to guides"](https://postgres.ai/docs/how-to-guides) документации. |
| 151 | + |
| 152 | +### Разное |
| 153 | +- [Docker-образы DLE](https://hub.docker.com/r/postgresai/dblab-server) |
| 154 | +- [Extended Docker images for PostgreSQL (с огромным количеством расширений)](https://hub.docker.com/r/postgresai/extended-postgres) |
| 155 | +- [Чатбот для оптимизации SQL (чатбот Joe)](https://postgres.ai/docs/joe-bot) |
| 156 | +- [DB Migration Checker](https://postgres.ai/docs/db-migration-checker) |
| 157 | + |
| 158 | +## Лицензия |
| 159 | +Код DLE распространяется под лицензией, одобренной OSI: GNU Affero General Public License version 3 (AGPLv3). |
| 160 | + |
| 161 | +Свяжитесь с командой Postgres.ai, если вам нужна коммерческая лицензия, которая не содержит предложений GPL, а также, если вам нужна поддержка: [Контактная страница](https://postgres.ai/contact). |
| 162 | + |
| 163 | +[](https://app.fossa.io/projects/git%2Bgithub.com%2Fpostgres-ai%2Fdatabase-lab-engine?ref=badge_large) |
| 164 | + |
| 165 | +## Сообщество и Поддержка |
| 166 | +- ["Кодекс поведения сообщества Database Lab Engine"](./CODE_OF_CONDUCT.md) |
| 167 | +- Где получить помощь: [Контактная страница](https://postgres.ai/contact) |
| 168 | +- [Сообщество в Телеграм (русский язык)](https://t.me/databaselabru) |
| 169 | +- [Сообщество в Slack](https://slack.postgres.ai) |
| 170 | +- Если вам надо сообщить о проблеме безопасности, следуйте инструкциям в документе ["./SECURITY.md"](./SECURITY.md). |
| 171 | + |
| 172 | +[](./CODE_OF_CONDUCT.md) |
| 173 | + |
| 174 | + |
| 175 | +<!-- |
| 176 | +## Переводы |
| 177 | +- ... |
| 178 | +--> |
0 commit comments