Quomodo superesse database SQL in saeculo XXI: nubes, Kubernetes et PostgreSQL multimaster

Salve, Khabrovsk habitant. Classes in primo cursu incipit hodie "PostgreSQL". Hac de re volumus tibi dicere quomodo aperta telaris cursus in hoc facto est.

Quomodo superesse database SQL in saeculo XXI: nubes, Kubernetes et PostgreSQL multimaster

Π’ deinde aperta lectio locuti sumus de provocationibus SQL databases faciem in temporibus nubium et Kubernetarum. Simul inspeximus quomodo SQL databases accommodare et mutare sub influxu harum provocationum.

Webinar tenebatur Valerius Bezrukov, Google Cloud Practice Traditio Procurator apud EPAM Systems.

Cum arbores parvae erant...

Primum meminerimus quomodo electio DBMS exeunte saeculo superiore incepta sit. Sed hoc non erit difficile, quia electio DBMS in diebus illis incepit et finivit Oraculum.

Quomodo superesse database SQL in saeculo XXI: nubes, Kubernetes et PostgreSQL multimaster

In proximis 90s et primis 2s annis nulla electio facta est cum ad databases industriales scalabiles venit. Etiam IBM DBXNUMX, Sybase et nonnulla alia database quae veniebant et ibant, generaliter autem non tam notabiles erant in curriculo Oraculi. Itaque artificiorum illorum temporum artes ad solum electionem, quae erat, quodammodo devinctae erant.

Oraculum DBA esse posse;

  • oracula Servo install a ornamento distributio;
  • Servo oraculum configurare:

  • init.ora;
  • auditor.ora;

β€” creare;

  • tabulae;
  • schema;
  • utentes;

β€” tergum praestare et restituere;
- magna exsequere;
- agere petitiones suboptimal.

Eodem tempore nulla ex Oraculo DBA postulatio specialis fuit;

  • poterit eligere meliorem DBMS vel alias technologias pro repono et dispensando data;
  • altam disponibilitatem et scalam horizontalem (hoc non semper fuit exitus DBA);
  • bona cognitio de re area, infrastructura, application architectura, OS;
  • onere et exonerare data, migrare data inter diversas DBMSs.

In genere, si loquimur de electione in diebus illis, assimilat electionem Sovietici in nuper 80s;

Quomodo superesse database SQL in saeculo XXI: nubes, Kubernetes et PostgreSQL multimaster

diebus nostris

Ex eo nimirum creverunt arbores, mundus mutatus est, et simile quiddam factum est;

Quomodo superesse database SQL in saeculo XXI: nubes, Kubernetes et PostgreSQL multimaster

Forum DBMS etiam mutatum est, ut ex recentissima relatione Gartner perspici potest:

Quomodo superesse database SQL in saeculo XXI: nubes, Kubernetes et PostgreSQL multimaster

Et hic notandum est, quod nubes, quorum gratia crescit, angulum suum occupaverunt. Si eandem Gartner legamus relationem, sequentes conclusiones videbimus;

  1. Multi clientes in via sunt ad applicationes ad nubes movendas.
  2. Novae technologiae in nube primum apparent et non factum est ut ad infrastructuram non-nubem movebunt.
  3. Mercedem ut-te-ire pretium Morbi communis locus factus est. Quisque velit nisi id quod utuntur, et hoc non est inclinatio, sed solum factum.

Quid nunc?

Hodie omnes in nube sumus. Quaestiones autem quae nobis nascuntur sunt electionum. Estque ingens, etsi tantum loquimur de electione DBMS technologiarum in forma praemissarum. Nos quoque officia saas procuravimus. Ita electio difficilior fit quotannis.

Cum electionis quaestiones sunt etiam cautum factors:

  • price. Multae technologiae adhuc pecunia constant;
  • artes. Si loquimur de libero programmate, quaestio artium oritur, cum liber programmatis sufficientem competentiam requirit ab hominibus qui eam explicant et agunt;
  • operando. Non omnia officia quae in nube praesto sunt et aedificata, dicunt, etiam in eodem Postgres, easdem notas habere ac Postgres On-praemissas. Hoc elementum essentiale cognosci et intelligi debet. Hoc factor autem gravior fit quam cognitio aliquarum facultatum occultarum unius DBMS.

Quid expectatur DA/DE nunc:

  • intellectus boni subiecti area et applicatio architecturae;
  • facultas recte eligendi DBMS technologiae attentis negotii praesentis;
  • facultas eligendi methodum meliorem ad exsequendam technologiam delectorum in contextu limitum existentium;
  • facultas data translationis et migrationis praestandi;
  • facultatem ad effectum deducendi et operandi selectae solutiones.

Infra exemplum secundum GCP * monstrat quomodo electio unius vel alterius technologiae ad operandum cum notitia opera secundum suam structuram;

Quomodo superesse database SQL in saeculo XXI: nubes, Kubernetes et PostgreSQL multimaster

Nota quod PostgreSQL in schemate non includitur, et hoc est quia latet sub terminologia nubes SQL. Et cum ad Cloud SQL accessimus, iterum electionem facere oportet:

Quomodo superesse database SQL in saeculo XXI: nubes, Kubernetes et PostgreSQL multimaster

Notandum est, hanc electionem non semper esse manifestam, ideo applicationes tincidunt saepe per intuitum diriguntur.

summa

  1. Quo longius abis, pressior quaestio de electione fit. Etiam si solum GCP spectes, officia administrata et Saas, aliqua mentio RDBMS tantum in 4 gradu apparet (et ibi Spanner prope est). Plus, electio PostgreSQL in 5th gradu apparet, et iuxta eam sunt etiam MySQL et SQL Servo, id est. Multum est omnia, sed eligere debes.
  2. Oblivisci non debemus de restrictionibus contra tentationum curriculum. Plerumque quisque Spanner velit, sed pretiosus. Quam ob rem postulatio typica aliquid simile hoc spectat: "Quaeso nobis Spanner, sed pretio Cloud SQL, professionales es!"

Quomodo superesse database SQL in saeculo XXI: nubes, Kubernetes et PostgreSQL multimaster

Dicentes quid faciemus?

Sine veritate ultimam esse affirmans, sequentia dicamus;

Oportet nos ad discendum aditum mutare;

  • nihil est quod doceas viam DBAs prius edocti;
  • cognitio unius producti non est satis;
  • sed cognoscere justos in uno gradu est impossibile.

Scire debes non solum, non quantum opus sit, sed;

  • uti casu applicationis;
  • diversis instruere modis;
  • commodis et incommodis cuiusque methodi;
  • similia et alia producta facere electionem informatam et meliorem et non semper in favorem operis familiaris.

Etiam necessaria notitias migrare poteris et principia integrationis cum ETL intelligere.

Verus casus

In praeterito, necesse erat mobilem applicationem backend creare. Per tempus incohatum opus, backend iam elaboratum est et ad exsequendum paratus erat, et bigae progressionis circa biennium in hoc incepto consumpta sunt. Sequuntur officia positi;

  • aedificare CI/CD;
  • architectura recensere;
  • omnia exer.

Ipsa applicatio microservices erat, et Python/Django signum a scabro et directe in GCP elaboratum est. Ad scopum audientium assumptum est duas regiones - US et EU fore, et negotiatio per libratorem Global Lond librarium distributa est. Omnia inposuit et inposuit computare cucurrit in Google Kubernetes Engine.

In notitia, structurae erant 3;

  • Cloud Storage;
  • Triticum aestivum;
  • Nubes SQL (PostgreSQL).

Quomodo superesse database SQL in saeculo XXI: nubes, Kubernetes et PostgreSQL multimaster

Posset mirari quare Cloud SQL electus est? Ut verum fatear, talis quaestio in annis hisce mora quadam inconcinne morata est - affectus est quem homines timidi facti sunt de databases relationibus relativis, sed nihilominus pergunt ad active uti illis ;-).

Quod ad nos attinet, Cloud SQL ob has causas electus est:

  1. Ut memoravimus, applicationis usus Django evoluta est, et exemplum habet ad destinata notitia pertinacia ab obiectis SQL database ad Python (Django ORM).
  2. Ipsa compages indicem satis finitum DBMSs sustentabat:

  • PostgreSQL;
  • MariaDB;
  • MySQL;
  • Oraculum;
  • SQLite.

Itaque, PostgreSQL ex hoc indice magis intuitive electus est (bene, oraculum non est vere eligere).

Quid defuit;

  • applicatio tantum in 2 regiones explicabatur, et 3 una in consiliis apparuit (Asia);
  • database in regione Americae Septentrionalis sita erat (Iowa);
  • ex parte mos erant curam de possibilibus aditus moras ex Europa et Asia et interpellatio in servitio in casu DBMS downtime.

Quamvis Django ipsum laborare possit cum pluribus databases in parallelis et in legendis et scribendis dividendis, non tam scribens in applicatione (quam 90% legit). Et generaliter et generaliter si fieri posset legere-replica basis principalis in Europa et Asiahoc esset compromissum. Hem, quid tam perplexum est?

Difficultas erat quod emptorem operas administratas et Cloud SQL cedere nolebat. Facultates autem Cloud SQL nunc circumscriptae sunt. Cloud SQL sustinet dispositibilitatem altam (HA) et Replica (RR), sed idem RR in una tantum regione sustinetur. Cum database in regione Americana creavisse non potes imaginem legere in regione Europaea Cloud SQL utens, quamvis Postgres ipsa te hoc facere non impedit. Correspondentia cum Google conductis nusquam ducitur et promissionibus finitur stilo "novimus problema et operamur in eo, aliquando exitus solvendus est".

Si facultates Cloud SQL breviter recenseamus, aliquid simile spectabit:

1. High disponibilitate (HA);

  • intra unam regionem;
  • per orbem replicatio;
  • PostgreSQL tormenta non sunt usus;
  • automatic et manu manuali possibilis - failover/facultates;
  • Cum commutatione, DBMS per aliquot minutas unavailable est.

2. Replica Read (RR);

  • intra unam regionem;
  • calidum sto;
  • PostgreSQL effusis replicatio.

Praeterea, ut moris est, technologiam eligens semper tibi adversatur modum:

  • emptorem entia et usus IaaS creare noluit, nisi per GKE;
  • emptorem suum servitium PostgreSQL/MySQL explicandi non amo;
  • Bene, generatim Google Spanner satis idoneus esset si pretio non esset, tamen Django ORM cum eo laborare non potest, sed bonum est.

Considerata condicionem, emptor quaestionem sequentem accepit: "Potesne simile aliquid facere ut Google Spanner simile sit, sed etiam cum Django ORM laborat?"

Solutio optionis 0

Primum illud in mentem venit;

  • intus CloudSQL;
  • nulla erit replicatio inter regiones aliqua forma constructa;
  • per PostgreSQL nubem SQL existentem imaginem apponere conantur;
  • exempli gratia PostgreSQL alicubi et aliquo modo deducas, sed saltem dominum ne attingas.

Heu, evenit ut hoc fieri non possit, quia non est aditus ad exercitum (in alio prorsus projecto) - pg_hba et sic porro, nec etiam sub superusore accessus est.

Solutio optionis 1

Postquam ulterius perpensis et attentis praecedentium rerum adiunctis, ordo mentis aliquantum immutatus est;

  • Adhuc in CloudSQL manere conamur, sed ad MySQL mutandum sumus, quia Cloud SQL per MySQL dominum externum habet, quod:

β€” procuratorem ad externum MySQL;
β€” MySQL exempli gratia similis est;
β€” Inventa ad migrandum data ex aliis nubibus seu sc-pra.

Cum replicatio MySQL erigens accessum ad exercitum non requirit, in principio omnia operata, sed valde instabilis et incommodus erat. Et cum ulterius ivimus, facta est prorsus FORMIDULOSUS, quia totam structuram cum terraformi explicuimus, et subito evenit quod dominus externus terraformi non sustentaretur. Ita Google habet CLI, sed aliqua de causa omnia hic subinde operata sunt - interdum creatur, interdum non creatur. Fortassis quia CLI inventa est ad migrationem externam datam, et non ad replicas.

Profecto hoc loco claruit Cloud SQL omnino non esse aptum. Ut aiunt, omnia potuimus.

Solutio optionis 2

Cum intra Cloud SQL compage manere non posset, solutionem compromissi requisita edicere conati sumus. Requisita evasit quae sequuntur:

  • in Kubernetes, maximum usum opum ac facultatum Kubernetensium (DCS, ...) et GCP (LB, ...);
  • defectum saburrae fasciculum superfluum in nube sicut HA procuratorem;
  • facultas concurrendi PostgreSQL vel MySQL in regione principali HA; in aliis regionibus - HA e RR regionis maioris exemplari suo (ad firmitatem);
  • multi magister (eum contactum nolebam, sed non erat magni momenti)

.
Qua de causa postulata haec, pidoneam DBMS et ligandi optiones:

  • MySQL Galera;
  • CockroachDB;
  • Instrumenta PostgreSQL

:
- pgpool-II;
β€” Patroni.

MySQL Galera

MySQL Galera technologia ab Codership evoluta est et est plugin pro InnoDB. Peculiarities:

  • mulli dominum;
  • replicatio synchrona;
  • legebat ab aliquo nodo;
  • notare aliquem nodi;
  • fabricatur in HA mechanism;
  • Est Helm chart ex Bitnami.

cockroachDB

Iuxta descriptionem, res bomba absolute est ac fons aperta est in Go scriptum. Cockroach Labs est particeps principalis (fundata ab hominibus de Google). Haec relativa DBMS initio destinata erat distribuenda (cum scalis horizontalibus e archa) et culpa toleranti. Auctores eius e societate propositum delinearunt "coniungendi divitiarum SQL functionalitatis cum accessibilitate horizontali familiari solutionibus NoSQL".

Bellus bonus sustentatur pro nexu protocollo post-gresso.

pgpool

Hoc ad PostgreSQL adiunctum est, re vera, novum ens quod omnes nexus et processus illos occupat. Librarium suum et parser onus suum habet, licentiatus sub BSD licentia. Magnas opportunitates praebet, sed aliquantum FORMIDULOSUS intuetur, quia praesentia novae entis fons aliquorum additorum adventuum fieri potuit.

Patroni

Extremum hoc mihi oculi cecidit, et, quod evenit, non frustra. Patroni fons est aperta utilitas, quae per se a Pythone daemone permittit te automatice conservare uvas PostgreSQL cum varias replicationis et activitatis partes mutandi. Res admodum interesting evasit, quia bene cum cubo integrat nec nova aliqua inducit.

Quid vis in finem?

Facilis optio erat;

  1. cockroachDB β€” Ignis, at obscurus;
  2. MySQL Galera β€” item non male, multis locis usurpatur, sed MySQL;
  3. pgpool β€” multa superflua, sic- integratio cum nube et K8s;
  4. Patroni β€” Egregia integratio cum K8s, res non necessariae, bene integrat cum GCP LB.

Ita cecidit Patroni.

Inventiones

Tempus est breviter perorare. Ita, infrastructurae IT mundus signanter mutavit, et hoc solum initium est. Et si ante nubes aliud genus infrastructurae erant, nunc omnia alia sunt. Praeterea, novationes in nubibus constanter apparent, apparebunt et forte apparebunt nisi in nubibus, et tunc demum, ex industria satum, transferentur ad praemissa.

Quod ad SQL, SQL vivet. Hoc significat quod PostgreSQL et MySQL scire debes et cum illis operari poteris, sed etiam maius est recte eis uti posse.

Source: www.habr.com