Comment un développeur backend sait-il qu'une requête SQL fonctionnera bien en production? Dans les grandes entreprises ou à croissance rapide, tout le monde n'a pas accès au «produit». Et même avec un accès, toutes les demandes ne peuvent pas être vérifiées sans douleur, et la création d'une copie de base de données prend souvent des heures. Pour résoudre ces problèmes, nous avons créé un DBA artificiel - Joe. Il a déjà été implémenté avec succès dans plusieurs entreprises et a aidé des dizaines de développeurs.
Vidéo:
salut! Je m'appelle Anatoly Stansler. Je travaille pour la société Postgres.ai . Nous nous engageons à accélérer le processus de développement en supprimant les retards Postgres des développeurs, des DBA et des QA.
Nous avons d'excellents clients, et aujourd'hui une partie du rapport sera consacrée aux cas que nous avons rencontrés en travaillant avec eux. Je vais vous dire comment nous les avons aidés à résoudre des problèmes assez graves.
, : « ?». review, , DBA-. – .
, , , . , . , , .
- prod - ? . , ? . , .
– prod. , , , - . prod, .
, . , .
?
staging - prod. prod, . , , staging.
- , . . prod.
?
- , staging . , - , – , . Staging . , . . , .
- , , , . . .
, , , - , , . - , , .
, , , - production.
, ? , , .
, ? , .
, , production, , .
, , , , , , . . .
, – . , cloud. 200 . , , . .
, prod .
? , .
.
, , . , 10 , 10 . , , . .
:
– 4,5 .
30 .
, . . , .
. .
OpenZFS.
OpenZFS – copy-on-write , . . . .
:
LVM,
(, Pure Storage).
Database Lab, , . . OpenZFS, LVM .
? , , , , , , .
, - , : «, , - ».
. , .
. , , , , .
, :
– , . production. , , . WAL-E, WAL-G Barman. , - Cloud-, , RDS Cloud SQL, . - , , , production, , .
– , Database Lab. Cloud, On-premise. , ZFS . .
, , , - dev. dev . , 4,5 , ZFS 3,5 . . dev .
.
, DBA , .
QA- , prod. environment QA , . , , , , - , .
. , , .
:
«», .
, .
, . . , .
. prod. .
. .
- , .
, ?
.
, , , . .
, . , ? .
? , , Slack-. .
? . . . . . , - , . .
Slack . , thread , , DBA, .
, , . , , , , .
, - .
, . . . .
production, .
Postgres . . Postgres, . . Shared Buffer Cache.
, Shared Buffer Cache Postgres , .
.
, , . - Shared Buffer Cache – 25 % , .
, , 4 instance, . . 4 . , , , .
, Buffer Cache , , . . , . , .
, prod , Postgres . , SeqScan. , ?
, Postgres Shared Buffer , effective_cache_size.
Effective_cache_size – , , . . Buffer Cache . . .
Postgres, , - , . , production.
. , , :
, prod.
.
, , , .
, , prod, , , , . , . . , , – ( ) , .
, Joe .
. – 1 . , 10 .
, . , 2,5 . , .
B Joe , .
, , . - , , .
, . , , . , 142 .
, , index scan , , ( ), .
- , .
, .
, , 2,5 156 , . 6 .
index only scan.
, - . Flame Graphs.
, . Flame Graphs : , , . . .
. , , .
, explain.depesz.com. , - , , .
, , explain.depesz.com, , .
– explain.dalibo.com. , . , , , -, .
, , Slack . , , , , thread Slack .
, . Update Database Lab, open source. Joe . . .
, - , Delphix, enterprise-. , . Postgres. open source. !
. !
! ! , , . . , .
, ? , . , 10 , , 10 . , . . , , ?
. . - , , , , fail-.
, . . . ? . ?
- ttl . , ttl.
, ?
1 , . . idle – 1 . , . , . , – .
, , , . ZFS? LVM? , c LVM . ? , , .
ZFS? , , . . instances . , . , . . LVM?
LVM meetup. – . ZFS . . . ZFS , Linux . . . . ZFS . , , . , , . . . . , . community, . ZFS – .
: ? , . , – . Pure Storage . .
, . – , , . . , .
ZFS . DelPhix, 300 . fortune 100 — 50 , . . NASA . . . open source Core. , open source. , . , . , . SELECT , . , DBA . . , . , . ZFS, . community , open source . .*
! ! . . . ? : , , - , - job . CPU , IO, ? .
. , ZFS , prod ZFS, ext4, . ?
. , . . , staging . , - , - . . prod. - , - – , , , - .
, , . , , , -, . , . , - .
. . , production , , ? - ? – - MySQL?
. , . Joe, , . ? Joe . , . , – . , .
MySQL. , state . Postgres, Postgres. . Postgres. , , . .
, MySQL. . , . .. MySQL . , ZFS.
! . , , , . , ?
, . , Postgres. ?
, , . , , , prod . - . prod, , prod , .
, , . , , .
?
, , , . . . , .
, , , , . , . . .
. cloud- , , Google, Amazon . .
. MySQL . , , , , . , , , , Postgres, , , instance.
. , . , , , . . , . 100 , . ? , , , , ?
, ZFS . , . , . , .
, , , , ?
, .
, , , ?
, .
. ?
, . - . . , . , . . data corruption . , , . . , .
, ! Joe . , . , Explain Analyze, .
. , : «SELECT FROM WHERE email = ». . . , - . . . , , , . - , .
! ! . Slack , - instances, ?
Maintenant, il y a une liaison avec Slack, c'est-à -dire qu'il n'y a pas d'autre messager, mais je veux vraiment soutenir d'autres messagers aussi. Que pouvez-vous faire? Vous pouvez déployer DB Lab sans Joe, marcher en utilisant l'API REST ou en utilisant notre plateforme et créer des clones et vous connecter avec PSQL. Mais vous pouvez le faire si vous êtes prêt à donner à vos développeurs l'accès aux données, car il n'y aura plus d'écran.
Je n'ai pas besoin de cette couche, mais j'ai besoin d'une telle opportunité.
Alors - oui, cela peut ĂŞtre fait.