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 открытым кодом, в котором старается воплотить некоторые описываемые идеи.

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