Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Максим Грамин — Database as a Code!

Максим Грамин — Database as a Code!

В последнее время во все сферы разработки ПО все больше проникает концепция "Everything as a Code" — CI (Jenkins pipeline), инфраструктура (Ansible playbooks), тестирование (сценарии Cucumber и Spock), документация (AsciiDoc(tor)) и многое другое.

Весь этот код, наряду с основным кодом разрабатываемого приложения, так же находится под управлением системы контроля версий, собирается на билд-серверах, участвует в автотестах.

В докладе попробуем показать применимость подхода к разработке и сопровождению БД, под эту схему подходят не только старые-добрые инкрементальные миграции (liquibase, flyway), а также исходный код объектов (baseline), код манипуляции объектами и самим сервером (инстансом) БД.

Кроме того, Максим расскажет о своем проекте c открытым кодом, в котором старается воплотить некоторые описываемые идеи.

Avatar for Moscow JUG

Moscow JUG

June 07, 2018
Tweet

More Decks by Moscow JUG

Other Decks in Programming

Transcript

  1. 10

  2. Infrastructure as Code  SCM Ansible, Chef, Puppet, etc 

    DSL Ansible Playbooks, Chef Recipes  Markets Ansible Galaxy, Chef Supermarket  COMMUNITY! 12
  3. Everything as Сode  Continuous integration Jenkins pipeline  Documentation

    DocBook, LaTeX, AsciiDoc  Network octodns, dnscontrol  etc etc 13
  4. Pyrseas  Describe db-schema as YAML  Compare with another

    db-scheme  Generate modifying SQL https://github.com/perseas/Pyrseas 19
  5. 2bass - DB schema as code tool  Idempotent DDL

    scripts  Modify your database schema  Run:  bass init  bass plan  bass apply https://github.com/CourseOrchestra/2bass 20
  6. pgbedrock Manage a Postgres:  Cluster's roles  Role memberships

     Schema ownership  Privileges https://github.com/Squarespace/pgbedrock 21
  7. А что еще конфигурировать кроме схемы БД?  DBA-tasks (start/stop

    db, etc)  Space Management (create TS, move table, shrink table, etc)  Performance Tuning (set system params, on/off trace, etc)  Security and Auditing (grant/revoke priv, RLS, on/off audit etc)  Metrics (cpu, ram, read/write, connections, etc)  Preventing the problem (fk without indexes, table without stats, etc) 22
  8. The Information Schema is an ANSI-standard Support:  Microsoft SQL

    Server  MySQL  PostgreSQL  HSQLDB Not support:  Oracle Database  IBM DB2  SQLite  Sybase ASE 31
  9. Не только схема данных Oracle:  v$session  v$process 

    v$bh  user_tables Postgresql:  pg_database  pg_user  pg_stat_activity  pg_stat_replication MySQL:  processlist  partitions  statistics  etc 32
  10. В т.ч. и для NoSQL Cassandra:  tables  keyspaces

     sessions  hints ClickHouse:  tables  database  processes  merges Cockroach:  tables  schemata  columns  statistics 33
  11. Сайты со скриптами  dbrnd.com/postgresql-dba-scripts  dbrnd.com/category/mysql-dba-script  orafaq.com/wiki/Scripts 

    oracle-base.com/dba/scripts  dba-oracle.com/oracle_dba_scripts.htm  red-gate.com/products/dba/sql-scripts-manager/scripts 39
  12. Репозитории со скриптами  dataegret/pg-utils Useful DBA tools by PostgreSQL-Consulting.com

     pgexperts/pgx_scripts A collection of useful little scripts for database analysis and administration  gwenshap/Oracle-DBA-Scripts Scripts that make my job as a DBA a bit easier 40
  13. 41

  14. Идея  «Управляемые» скрипты github.com/sql-boot/sql-boot-postgresql github.com/sql-boot/sql-boot-oracle github.com/sql-boot/sql-boot-clickhouse github.com/v_pooupkin/my-postgresql-conf  REST-интерфейс

    github.com/sql-boot/sql-boot  Интеграция «со всем» Мониторинг, визуализация данных, безопасность, etc 42
  15. Rest query examples  GET table/persons  DROP table/persons 

    GET table/bookings/size?select=row_estimate  GET table/bookings/size/limit=10  GET table/bookings/size/limit=10&top=100  GET table/bookings/count?cache=true 46
  16. 51

  17. Chatops «SQL-BOOT» > /db-bot show process on postgres_test > /db-bot

    show process on oracle_prod > /db-bot analyze persons on postgres_test > /db-bot analyze persons on oracle_prod http 59
  18. Выводы  Конфигурирование БД – это не только миграции схемы

     SQL – это тоже код  Интеграция с другими инструментами 63