Aloha mai e nā kamaʻāina o Khabrovsk. Hoʻomaka nā papa ma ka hui mua o ka papa i kēia lā
В
Ua mālama ʻia ka webinar
I ka wā liʻiliʻi nā lāʻau...
ʻO ka mea mua, e hoʻomanaʻo kākou pehea i hoʻomaka ai ke koho ʻana o DBMS i ka hopena o ke kenekulia i hala. Eia naʻe, ʻaʻole paʻakikī kēia, no ka mea, ua hoʻomaka a pau ke koho ʻana i kahi DBMS i ia mau lā kahi e'ōlelo ai.
I ka hopena o nā makahiki 90 a me nā makahiki 2, ʻaʻohe mea i koho ʻia i ka wā e pili ana i nā ʻikepili scalable ʻoihana. ʻAe, aia nā IBM DBXNUMX, Sybase a me nā ʻikepili ʻē aʻe i hele mai a hele, akā ma ka laulā ʻaʻole lākou i ʻike nui ʻia e kūʻē i ka hope o Oracle. No laila, ua pili nā mākau o nā ʻenekinia o ia mau manawa i ke koho wale nō.
Pono ʻo Oracle DBA e hiki ke:
- e hoʻouka i ka Oracle Server mai ka pahu hoʻolaha;
- hoʻonohonoho ʻo Oracle Server:
- init.ora;
- listener.ora;
- hana:
- nā papa ʻaina;
- papahana;
- mea hoʻohana;
- hana i ka hoʻihoʻi a hoʻihoʻi;
- hoʻokō i ka nānā ʻana;
- hana me nā noi suboptimal.
I ka manawa like, ʻaʻohe koi kūikawā mai Oracle DBA:
- hiki ke koho i ka DBMS maikaʻi loa a i ʻole ka ʻenehana ʻē aʻe no ka mālama ʻana a me ka hoʻoili ʻana i ka ʻikepili;
- hāʻawi i ka loaʻa kiʻekiʻe a me ka scalability ākea (ʻaʻole kēia he pilikia DBA i nā manawa a pau);
- ʻike maikaʻi i ke kumuhana, ka ʻenehana, ka hoʻolālā noi, OS;
- hoʻouka a wehe i ka ʻikepili, neʻe i ka ʻikepili ma waena o nā DBMS like ʻole.
Ma keʻano laulā, inā mākou e kamaʻilio e pili ana i ke koho i kēlā mau lā, ua like ia me ka koho ma kahi hale kūʻai Soviet i ka hopena o nā makahiki 80:
ʻO ko mākou manawa
Mai ia manawa, ʻoiaʻiʻo, ua ulu nā kumulāʻau, ua loli ka honua, a ua lilo ia i mea penei:
Ua loli hou ka mākeke DBMS, e like me ka mea i ʻike maopopo ʻia mai ka hōʻike hou loa mai Gartner:
A ma ʻaneʻi e hoʻomaopopo ʻia ʻo nā ao, ke ulu nei ka kaulana, ua noho i kā lākou niche. Inā heluhelu mākou i ka hōʻike like ʻo Gartner, e ʻike mākou i kēia mau hopena:
- Nui nā mea kūʻai aku ma ke ala e neʻe ai i nā noi i ke ao.
- Hōʻike mua ʻia nā ʻenehana hou i ke ao a ʻaʻole ia he mea ʻoiaʻiʻo e neʻe lākou i nā ʻōnaehana non-cloud.
- Ua lilo ke kumu kūʻai uku-like-you-go i mea maʻamau. Makemake nā kānaka a pau e uku wale no ka mea a lākou e hoʻohana ai, ʻaʻole kēia he ʻano, akā he ʻōlelo ʻoiaʻiʻo wale nō.
He aha kēia manawa?
I kēia lā aia mākou a pau i ke ao. A ʻo nā nīnau e kū mai nei no mākou he mau nīnau koho. A he mea nui ia, ʻoiai inā e kamaʻilio wale mākou e pili ana i ke koho ʻana o nā ʻenehana DBMS i ka format On-premises. Ua mālama pū mākou i nā lawelawe a me SaaS. No laila, ʻoi aku ka paʻakikī o ka koho i kēlā me kēia makahiki.
Me nā nīnau koho, aia pū kekahi mea kaupalena:
- ke kumukuai. Nui nā ʻenehana i ke kālā;
- mākau. Inā mākou e kamaʻilio e pili ana i nā polokalamu manuahi, a laila e kū mai ka nīnau o nā mākau, no ka mea, pono ka lako polokalamu manuahi i ka mākaukau kūpono mai ka poʻe nāna e hoʻolaha a hana;
- hana. ʻAʻole nā lawelawe āpau i loaʻa i ke ao a kūkulu ʻia, e ʻōlelo, ʻoiai ma ka Postgres like, loaʻa nā hiʻohiʻona like me Postgres On-premises. He mea koʻikoʻi kēia e pono e ʻike a hoʻomaopopo ʻia. Eia kekahi, lilo kēia mea i mea nui ma mua o ka ʻike o kekahi mau mea huna o kahi DBMS hoʻokahi.
He aha ka mea i manaʻo ʻia mai DA/DE i kēia manawa:
- ʻike maikaʻi i ke kumuhana a me ka hoʻolālā noi;
- ka hiki ke koho pololei i ka ʻenehana DBMS kūpono e noʻonoʻo ana i ka hana ma ka lima;
- ka hiki ke koho i ke ala kūpono no ka hoʻokō ʻana i ka ʻenehana i koho ʻia i loko o ka pōʻaiapili o nā palena i loaʻa;
- hiki ke hana i ka hoʻoili ʻikepili a me ka neʻe ʻana;
- ka hiki ke hoʻokō a hana i nā hāʻina i koho ʻia.
Ma lalo o ka laʻana ma muli o GCP hōʻike i ke ʻano o ke koho ʻana o kekahi ʻenehana a i ʻole no ka hana ʻana me ka ʻikepili e pili ana i kona ʻano:
E ʻoluʻolu, ʻaʻole i hoʻokomo ʻia ʻo PostgreSQL i ka schema, a no ka mea ua hūnā ʻia ma lalo o nā huaʻōlelo. Kapua SQL. A hiki mākou i Cloud SQL, pono mākou e koho hou:
Pono e hoʻomaopopo ʻia ʻaʻole maopopo mau kēia koho, no laila alakaʻi pinepine ʻia nā mea hoʻomohala noi e ka intuition.
Hōʻuluʻulu:
- ʻOi aku ka hele ʻana, ʻoi aku ka paʻakikī o ka nīnau o ke koho. A inā ʻoe e nānā wale iā GCP, nā lawelawe hoʻokele a me SaaS, a laila ʻike ʻia kekahi ʻōlelo o RDBMS ma ka pae 4th wale nō (a aia ʻo Spanner ma kahi kokoke). Eia kekahi, ʻike ʻia ka koho o PostgreSQL ma ka pae 5, a ma hope o laila aia kekahi MySQL a me SQL Server, ʻo ia hoʻi. he nui nā mea a pau, akā pono ʻoe e koho.
- ʻAʻole pono mākou e poina e pili ana i nā kaohi i ke ʻano o nā hoʻowalewale. Makemake nā kānaka a pau i kahi Spanner, akā he pipiʻi. ʻO ka hopena, ʻike ʻia kahi noi maʻamau e like me kēia: "E ʻoluʻolu e hoʻolilo iā mākou i Spanner akā no ke kumukūʻai o Cloud SQL, he poʻe ʻoihana ʻoe!"
He aha kā mākou e hana ai?
Me ka ʻōlelo ʻole ʻo ia ka ʻoiaʻiʻo hope loa, e ʻōlelo kākou penei:
Pono mākou e hoʻololi i kā mākou ala e aʻo ai:
- ʻaʻohe kumu o ke aʻo ʻana i ke ʻano o ke aʻo ʻana o nā DBA ma mua;
- ʻaʻole lawa ka ʻike o ka huahana hoʻokahi;
- akā, ʻaʻole hiki ke ʻike i nā kakini ma ka pae o hoʻokahi.
Pono ʻoe e ʻike ʻaʻole wale a ʻaʻole i ka nui o ka huahana, akā:
- hoʻohana hihia o kāna noi;
- nā ʻano hoʻolaha like ʻole;
- nā pono a me nā pōʻino o kēlā me kēiaʻano;
- nā huahana like a me nā huahana ʻē aʻe e hana i kahi koho ʻike a maikaʻi loa a ʻaʻole makemake mau i kahi huahana maʻamau.
Pono ʻoe e hiki ke neʻe i ka ʻikepili a hoʻomaopopo i nā kumu kumu o ka hoʻohui ʻana me ETL.
Ka hihia maoli
I ka wā i hala iho nei, pono e hana i kahi backend no kahi polokalamu kelepona. I ka manawa i hoʻomaka ai ka hana, ua hoʻomohala ʻia ka backend a ua mākaukau no ka hoʻokō ʻana, a ua hoʻohana ka hui hoʻomohala ma kahi o ʻelua makahiki ma kēia papahana. Ua hoʻonohonoho ʻia nā hana penei:
- kūkulu CI/CD;
- e nānā i ke kūkulu hale;
- e hoʻohana i nā mea a pau.
ʻO ka noi ponoʻī he microservices, a ua hoʻomohala ʻia ka code Python/Django mai ka ʻohi ʻana a pololei i ka GCP. No ka poʻe i manaʻo ʻia, ua manaʻo ʻia aia ʻelua mau ʻāpana - US a me EU, a ua puʻunaue ʻia ke kaʻa ma o ka Global Load balancer. Holo nā haʻahaʻa hana a pau ma ka Google Kubernetes Engine.
No ka ʻikepili, aia 3 mau hale:
- Waihona Kapua;
- hale kūʻai ʻikepili;
- Cloud SQL (PostgreSQL).
E noʻonoʻo paha kekahi no ke aha i koho ʻia ai ʻo Cloud SQL? No ka haʻi ʻana i ka ʻoiaʻiʻo, ua lilo kēia nīnau i kekahi ʻano hoʻomaha haʻahaʻa i nā makahiki i hala iho nei - aia ka manaʻo ua hilahila ka poʻe e pili ana i nā ʻikepili pili, akā naʻe, hoʻomau lākou i ka hoʻohana ʻana iā lākou ;-).
No kā mākou hihia, ua koho ʻia ʻo Cloud SQL no kēia mau kumu:
- E like me ka mea i ʻōlelo ʻia, ua hoʻomohala ʻia ka noi me ka hoʻohana ʻana iā Django, a he kumu hoʻohālike no ka palapala ʻana i ka ʻikepili mau mai kahi waihona SQL i nā mea Python (Django ORM).
- Ua kākoʻo ka framework i kahi papa inoa o nā DBMS:
- PostgreSQL;
- MariaDB;
- MySQL;
- ʻōlelo ʻōlelo;
- SQLite.
No laila, ua koho ʻia ʻo PostgreSQL mai kēia papa inoa ma ke ʻano intuitively (maikaʻi, ʻaʻole ʻo Oracle ke koho, ʻoiaʻiʻo).
He aha ka mea i nalowale:
- ua kau ʻia ka noi ma nā ʻāpana 2 wale nō, a ua ʻike ʻia kahi 3 i nā hoʻolālā (Asia);
- Aia ka waihona ma ka ʻāina ʻo ʻAmelika ʻĀkau (Iowa);
- ma ka ʻaoʻao o ka mea kūʻai aku ua hopohopo e pili ana i ka hiki hiki ke hoʻopaneʻe mai Europa a me Asia a keakea ma ka lawelawe ana i ka hihia o DBMS downtime.
ʻOiai ʻo Django ponoʻī hiki ke hana pū me nā ʻikepili like ʻole a hoʻokaʻawale iā lākou i ka heluhelu ʻana a me ke kākau ʻana, ʻaʻole i kākau nui ʻia ma ka noi (ʻoi aku ma mua o 90% ka heluhelu ʻana). A ma ka laulā, a ma ka laulā, inā hiki ke hana heluhelu-kope o ke kahua nui ma ʻEulopa a me ʻAsia, he hoʻoholo kuʻikahi kēia. ʻAe, he aha ka paʻakikī o ia mea?
ʻO ka pilikia, ʻaʻole makemake ka mea kūʻai aku e haʻalele i ka hoʻohana ʻana i nā lawelawe hoʻokele a me Cloud SQL. A ua kaupalena ʻia nā mana o Cloud SQL i kēia manawa. Kākoʻo ʻo Cloud SQL i ka loaʻa kiʻekiʻe (HA) a me Read Replica (RR), akā kākoʻo ʻia ka RR like ma hoʻokahi māhele. Ma hope o ka hana ʻana i kahi waihona ma ka ʻāina ʻAmelika, ʻaʻole hiki iā ʻoe ke hana i kahi kope heluhelu ma ka ʻāina ʻEulopa me ka hoʻohana ʻana i Cloud SQL, ʻoiai ʻaʻole ʻo Postgres e pale iā ʻoe mai ka hana ʻana i kēia. ʻAʻole i alakaʻi ʻia ka pilina me nā limahana Google a hoʻopau ʻia me nā ʻōlelo hoʻohiki ma ke ʻano "ʻike mākou i ka pilikia a ke hana nei mākou, i kekahi lā e hoʻoholo ʻia ka pilikia."
Inā mākou e papa inoa pōkole i nā mana o Cloud SQL, e like me kēia:
1. Loaʻa kiʻekiʻe (HA):
- i loko o hoʻokahi māhele;
- ma o ka kope kope;
- ʻAʻole hoʻohana ʻia nā mīkini PostgreSQL;
- hiki i ka mana 'akomi a me ka lima - failover/failback;
- Ke hoʻololi nei, ʻaʻole loaʻa ka DBMS no kekahi mau minuke.
2. Heluhelu i ke kope (RR):
- i loko o hoʻokahi māhele;
- kū wela;
- Hoʻopili hou ʻia ʻo PostgreSQL.
Eia kekahi, e like me ka mea maʻamau, i ke koho ʻana i kahi ʻenehana ke alo mau ʻoe i kekahi kaohi ana:
- ʻAʻole makemake ka mea kūʻai aku e hana i nā hui a hoʻohana iā IaaS, koe wale nō ma o GKE;
- ʻaʻole makemake ka mea kūʻai aku e hoʻokau i ka lawelawe ponoʻī PostgreSQL/MySQL;
- ʻAe, ma ka laulā, kūpono loa ʻo Google Spanner inā ʻaʻole no kāna kumukūʻai, akā naʻe, ʻaʻole hiki iā Django ORM ke hana pū me ia, akā he mea maikaʻi.
Ma ka noʻonoʻo ʻana i ke kūlana, ua loaʻa i ka mea kūʻai aku kahi nīnau hahai: "Hiki iā ʻoe ke hana i kahi mea like e like me Google Spanner, akā hana pū me Django ORM?"
Koho hoʻonā No. 0
ʻO ka mea mua i komo i ka manaʻo:
- noho i loko o CloudSQL;
- ʻaʻohe hana hou i kūkulu ʻia ma waena o nā ʻāina ma kekahi ʻano;
- e ho'āʻo e hoʻopili i kahi kope i kahi Cloud SQL e kū nei na PostgreSQL;
- e hoʻomaka i kahi postgreSQL ma kahi a me kekahi ʻano, akā ma ka liʻiliʻi mai hoʻopā i ka haku.
Auē, ua ʻike ʻia ʻaʻole hiki ke hana i kēia, no ka mea, ʻaʻohe komo i ka mea hoʻokipa (aia ma kahi papahana ʻokoʻa loa) - pg_hba a pēlā aku, a ʻaʻohe komo ma lalo o ka superuser.
Koho hoʻonā No. 1
Ma hope o ka noʻonoʻo hou ʻana a me ka noʻonoʻo ʻana i nā kūlana ma mua, ua loli iki ke ʻano o ka manaʻo:
- Ke ho'āʻo nei mākou e noho i loko o CloudSQL, akā ke hoʻololi nei mākou i MySQL, no ka mea he haku waho ʻo Cloud SQL na MySQL, ʻo ia:
- he mea koho no MySQL waho;
- like me ka MySQL laʻana;
- hana ʻia no ka neʻe ʻana i ka ʻikepili mai nā ao ʻē aʻe a i ʻole ma ka hale.
Mai ka hoʻonohonoho ʻana i ka replication MySQL ʻaʻole pono ke komo i ka mea hoʻokipa, ma ke ʻano he hana nā mea āpau, akā ʻaʻole paʻa a paʻa ʻole. A i ko mākou hele ʻana i mua, ua lilo ia i mea weliweli loa, no ka mea, ua kau mākou i ka hale holoʻokoʻa me ka terraform, a ʻike koke ʻia ʻaʻole i kākoʻo ʻia ka haku o waho e ka terraform. ʻAe, loaʻa iā Google kahi CLI, akā no kekahi kumu ua hana nā mea a pau ma aneʻi i kēlā me kēia manawa - i kekahi manawa ua hana ʻia, i kekahi manawa ʻaʻole i hana ʻia. Malia paha no ka mea i hana ʻia ka CLI no ka neʻe ʻana o ka ʻikepili o waho, ʻaʻole no ka replicas.
ʻOiaʻiʻo, i kēia manawa ua maopopo ʻaʻole kūpono ʻo Cloud SQL. E like me kā lākou e ʻōlelo nei, ua hana mākou i nā mea āpau.
Koho hoʻonā No. 2
Ma muli o ka hiki ʻole ke noho i loko o ka hoʻolālā Cloud SQL, ua hoʻāʻo mākou e hoʻokumu i nā koi no ka ʻae ʻana. Ua ʻike ʻia nā pono penei:
- hana ma Kubernetes, ka hoʻohana nui ʻana i nā kumuwaiwai a me nā hiki o Kubernetes (DCS, ...) a me GCP (LB, ...);
- nele i ka ballast mai kahi hui o nā mea pono ʻole i ke ao e like me HA proxy;
- ka hiki ke holo i ka PostgreSQL a i ʻole MySQL ma ka māhele HA nui; ma nā wahi ʻē aʻe - HA mai ka RR o ka ʻāina nui me kāna kope (no ka hilinaʻi);
- multi master (ʻaʻole wau makemake e hoʻopili iā ia, akā ʻaʻole ia he mea nui)
.
Ma muli o kēia mau koi, pDBMS kūpono a me nā koho paʻa:
- MySQL Galera;
- CockroachDB;
- Nā mea hana PostgreSQL
:
- pgpool-II;
— Patroni.
MySQL Galera
Ua hoʻomohala ʻia ka ʻenehana MySQL Galera e Codership a he plugin no InnoDB. Nā mea ʻokoʻa:
- haku lehulehu;
- hoʻopili like;
- heluhelu mai kekahi node;
- ka hoʻopaʻa ʻana i kekahi node;
- ʻenehana HA i kūkulu ʻia;
- Aia kahi palapala Helm mai Bitnami.
ʻO CockroachDB
Wahi a ka wehewehe ʻana, ʻo ia ka mea i poma a he papahana open source i kākau ʻia ma Go. ʻO ka hui nui ʻo Cockroach Labs (i hoʻokumu ʻia e nā poʻe mai Google). Ua hoʻolālā mua ʻia kēia DBMS pili e puʻunaue ʻia (me ka hoʻonui ʻana i waho o ka pahu) a me ka hoʻomanawanui hewa. ʻO kāna mau mea kākau mai ka hui i wehewehe i ka pahuhopu o "ka hoʻohui ʻana i ka waiwai o ka hana SQL me ka ʻike ākea i ʻike ʻia i nā hoʻonā NoSQL."
ʻO kahi bonus maikaʻi ke kākoʻo no ka protocol connection post-gress.
Pgpool
He mea hoʻohui kēia i PostgreSQL, ʻoiaʻiʻo, kahi hui hou e lawe i nā pili āpau a me nā hana. Loaʻa iā ia kāna mea kaulike a me ka parser, i laikini ʻia ma lalo o ka laikini BSD. Hāʻawi ia i nā manawa kūpono, akā he mea weliweli paha, no ka mea hiki i kahi hui hou ke lilo i kumu o kekahi mau hanana hou.
Patroni
ʻO kēia ka mea hope loa i hāʻule ai koʻu mau maka, a me ka mea i ʻike ʻia, ʻaʻole i makehewa. ʻO Patroni kahi mea hoʻohana open source, ʻo ia ka Python daemon e hiki ai iā ʻoe ke mālama maʻalahi i nā puʻupuʻu PostgreSQL me nā ʻano like ʻole o ka replication a me ka hoʻololi ʻana i ke kuleana. Ua lilo ka mea i mea hoihoi loa, no ka mea ua hui maikaʻi ʻo ia me ka cuber a ʻaʻole hoʻokomo i nā mea hou.
He aha kāu i koho ai i ka hopena?
ʻAʻole i maʻalahi ka koho:
- ʻO CockroachDB - ahi, akā pōʻeleʻele;
- MySQL Galera - ʻaʻole maikaʻi, hoʻohana ʻia ma nā wahi he nui, akā ʻo MySQL;
- Pgpool - ka nui o nā mea pono ʻole, ka hui pū ʻana me ke ao a me nā K8;
- Patroni - hoʻohui maikaʻi me K8s, ʻaʻohe mea pono ʻole, hoʻohui maikaʻi me GCP LB.
No laila, hāʻule ka koho iā Patrona.
haʻina
ʻO ka manawa kēia e hōʻuluʻulu pōkole. ʻAe, ua loli nui ka honua o ka ʻenehana IT, a ʻo ka hoʻomaka wale nō kēia. A inā ma mua o ke ao he ʻano hana ʻē aʻe, i kēia manawa ua ʻokoʻa nā mea a pau. Eia kekahi, ʻike mau ʻia nā mea hou i nā ao, e ʻike ʻia a, aia paha, e ʻike wale ʻia lākou i nā ao a laila wale nō, e ka hoʻoikaika ʻana o nā hoʻomaka, e hoʻoneʻe ʻia lākou i On-premises.
No SQL, ola ʻo SQL. ʻO ia ke ʻano he pono ʻoe e ʻike iā PostgreSQL a me MySQL a hiki iā ʻoe ke hana pū me lākou, akā ʻoi aku ka nui o ka hiki ke hoʻohana pono iā lākou.
Source: www.habr.com