Google Cloud Spanner: Maikaʻi, ʻino, ʻino

Aloha mai e nā Khabrovites. ʻO ka mea maʻamau, hoʻomau mākou e kaʻana like i nā mea hoihoi i ka pō o ka hoʻomaka ʻana o nā papa hou. I kēia lā, ʻoi loa iā ʻoe, ua unuhi mākou i kahi ʻatikala e pili ana iā Google Cloud Spanner, i hoʻohālikelike ʻia me ka hoʻomaka ʻana o ka papa. "AWS no nā mea hoʻomohala".

Google Cloud Spanner: Maikaʻi, ʻino, ʻino

Ua paʻi mua ʻia ma blog Lightspeed HQ.

Ma ke ʻano he hui e hāʻawi ana i nā ʻano hoʻonā POS e pili ana i ke ao no nā mea kūʻai aku, restaurateurs, a me nā mea kūʻai aku pūnaewele a puni ka honua, hoʻohana ʻo Lightspeed i nā ʻano ʻano like ʻole o ka waihona waihona no nā ʻano transactional, analytics, a me nā hihia hoʻohana ʻimi. Loaʻa i kēlā me kēia o kēia mau waihona waihona kona mau ikaika a me kona nāwaliwali. No laila, i ka wā i hoʻolauna ai ʻo Google Cloud Spanner i ka mākeke - nā hiʻohiʻona hoʻohiki ʻaʻole i ʻike ʻia ma ka honua o nā ʻikepili pili, e like me ka scalability ākea ākea ʻole a me ka 99,999% service level agreement (SLA) , ʻAʻole hiki iā mākou ke hoʻolilo i ka manawa kūpono e loaʻa iā ia ma ko mākou mau lima!

No ka hāʻawi ʻana i kahi ʻike piha o kā mākou ʻike me Cloud Spanner, a me nā pae loiloi a mākou i hoʻohana ai, e uhi mākou i nā kumuhana aʻe:

  1. ʻO kā mākou loiloi loiloi
  2. Cloud Spanner ma kahi pōkole
  3. ʻO kā mākou loiloi
  4. ʻO kā mākou mea i loaʻa

Google Cloud Spanner: Maikaʻi, ʻino, ʻino

1. ʻO kā mākou mau loiloi loiloi

Ma mua o ka luʻu ʻana i nā kikoʻī o Cloud Spanner, kona mau like a me nā ʻokoʻa me nā hopena ʻē aʻe ma ka mākeke, e kamaʻilio mua mākou e pili ana i nā hihia hoʻohana nui a mākou i noʻonoʻo ai i ka wā e noʻonoʻo ai i kahi e kau ai i ka Cloud Spanner i kā mākou ʻoihana:

  • Ma ke ʻano he pani no ka (loaʻa) kuʻuna SQL database solution
  • Ma ke ʻano he hoʻonā OLTP hiki i ka OLAP

'Ōlelo Aʻo: No ka maʻalahi o ka hoʻohālikelike, hoʻohālikelike kēia ʻatikala iā Cloud Spanner me nā ʻano MySQL o nā ʻohana hoʻonā GCP Cloud SQL a me Amazon AWS RDS.

Ke hoʻohana nei i Cloud Spanner ma ke ʻano he pani no kahi hoʻonā ʻikepili SQL kuʻuna

I ke kaiapuni kuʻuna ʻikepili, ke hoʻokokoke a ʻoi aku paha ka manawa pane no kahi nīnau noiʻi waihona i nā paepae noi i koho mua ʻia (ma muli o ka hoʻonui ʻana i ka helu o nā mea hoʻohana a/a i ʻole nā ​​noi), aia kekahi mau ala e hōʻemi ai i ka manawa pane i nā pae ʻae. Eia naʻe, ʻo ka hapa nui o kēia mau hoʻonā e pili ana i ka hana lima.

No ka laʻana, ʻo ka hana mua e hana ai, ʻo ia ka nānā ʻana i nā hoʻonohonoho ʻikepili pili i ka hana a hoʻolohe iā lākou i mea hoʻohālikelike maikaʻi loa i nā hiʻohiʻona hiʻohiʻona hoʻohana. Inā ʻaʻole lawa kēia, hiki iā ʻoe ke koho i ka hoʻonui ʻana i ka waihona ma ka ʻaoʻao a i ʻole.

ʻO ka hoʻonui ʻana i kahi palapala noi e pili ana i ka hoʻonui ʻana i ka laʻana kikowaena, maʻamau ma ka hoʻohui ʻana i nā kaʻina hana/cores, ʻoi aku ka nui o RAM, ka mālama wikiwiki ʻana, a me nā mea ʻē aʻe. Pūnaehana waihona waihona pili (e hoʻohana ana i kahi ʻano hiʻohiʻona multi-threaded) e like me ka pālākiō MySQL ma ke kū pololei.

Nui nā drawbacks i kēia ala, akā ʻo ka mea maopopo loa ʻo ka nui o ka server nui ma ka mākeke. Ke hiki i ka palena nui loa o ka Server Instance, hoʻokahi wale nō ala i koe: scale out.

ʻO Scale-out kahi ala e hoʻohui ai i nā kikowaena hou aʻe i kahi pūʻulu e hoʻonui maikaʻi i ka hana linearly ke hoʻohui ʻia nā kikowaena hou aku. ʻO ka hapa nui kuʻuna ʻAʻole maikaʻi nā ʻōnaehana waihona a i ʻole ʻaʻole paʻa iki. No ka laʻana, hiki i ka MySQL ke hoʻonui i nā hana heluhelu ma ka hoʻohui ʻana i nā mea heluhelu kauā, akā ʻaʻole hiki ke hoʻonui i ka hana kākau.

Ma ka ʻaoʻao ʻē aʻe, ma muli o kona ʻano, hiki ke maʻalahi ʻo Cloud Spanner me ka liʻiliʻi.

Hōʻike piha DBMS ma ke ʻano he lawelawe pono e loiloi ʻia mai nā manaʻo like ʻole. Ma ke kumu, ua lawe mākou i ka DBMS kaulana loa i ke ao - no Google, GCP Cloud SQL a no Amazon, AWS RDS. I kā mākou loiloi, ua kālele mākou i nā ʻāpana:

  • Palapala hiʻona: ka laulā SQL, DDL, DML; nā hale waihona puke pili, nā kākoʻo kālepa, a pēlā aku.
  • Kākoʻo Hoʻomohala: Maʻalahi o ka hoʻomohala ʻana a me ka hoʻāʻo.
  • Kākoʻo hoʻokele: ʻO ka hoʻokele ʻana e like me ka hoʻonui ʻana a me ka hoʻonui ʻana i nā manawa; SLA, hoʻihoʻi a hoʻihoʻi; palekana / ʻae ʻana.

Ke hoʻohana nei i Cloud Spanner ma ke ʻano he OLAP-Enabled OLTP Solution

ʻOiai ʻaʻole ʻōlelo ʻo Google ʻo Cloud Spanner no ka analytics, hāʻawi ʻo ia i kekahi mau ʻano me nā mīkini ʻē aʻe e like me Apache Impala & Kudu a me YugaByte i hoʻolālā ʻia no nā hana OLAP.

ʻOiai he wahi liʻiliʻi wale nō i hoʻokomo ʻia ʻo Cloud Spanner i kahi ʻenekini HTAP (Hybrid Transactional/Analytic Processing) me kahi hoʻonohonoho hiʻohiʻona OLAP (ʻoi aʻe a liʻiliʻi paha), manaʻo mākou he mea kūpono ia i kā mākou nānā.

Me ka noʻonoʻo, ua nānā mākou i kēia mau ʻāpana:

  • Hoʻouka ʻikepili, nā kuhikuhi a me ke kākoʻo ʻāpana
  • Hana nīnau a me DML

2. ʻO Cloud Spanner ma kahi pōkole

ʻO Google Spanner kahi ʻōnaehana hoʻonohonoho hoʻokele waiwai pili pili (RDBMS) i hoʻohana ʻia e Google no kāna mau lawelawe ponoʻī. Ua hoʻolaha aku ʻo Google i nā mea hoʻohana Google Cloud Platform i ka hoʻomaka ʻana o 2017.

Eia kekahi mau hiʻohiʻona Cloud Spanner:

  • Kūpaʻa Kiʻekiʻe, Scalable RDBMS Cluster: Hoʻohana i ka hoʻonohonoho manawa manawaleʻa e hōʻoia i ka kūlike o ka ʻikepili.
  • Kākoʻo kālepa pākaukau kea: Hiki i nā hana ke hoʻonui i nā papa he nui - ʻaʻole i kaupalena ʻia i ka papa hoʻokahi (ʻaʻole like me Apache HBase a i ʻole Apache Kudu).
  • Nā Papa Kiʻi Māmā: Pono nā papa a pau i hōʻike ʻia i ke kī kumu mua (PC), hiki ke loaʻa i nā kolamu papa he nui. Hoʻopaʻa ʻia ka ʻikepili tabular ma ka hoʻonohonoho PC, kahi e hana maikaʻi ai a wikiwiki hoʻi no ka ʻimi PC. E like me nā ʻōnaehana PC ʻē aʻe, pono e hoʻohālikelike ʻia ka hoʻokō ʻana i nā hihia hoʻohana mua i mea e hoʻokō ai hana maikaʻi loa.
  • Nā papa ʻoniʻoni: Hiki i nā papa ke hilinaʻi kino kekahi i kekahi. Hiki ke hoʻohālikelike ʻia nā lālani o ka papaʻaina keiki me nā lālani o ka pākaukau makua. Hoʻonui kēia ala i ka ʻimi ʻana i nā pilina i hiki ke hoʻoholo ʻia ma ka pae hoʻohālike ʻikepili, no ka laʻana, i ka wā e hoʻokomo pū ai i nā mea kūʻai aku a me kā lākou invoice.
  • Nā Papa kuhikuhi: Kākoʻo ʻo Cloud Spanner i nā papa kuhikuhi lua. Aia ka papa kuhikuhi i nā kolamu kuhikuhi a me nā kolamu PC a pau. ʻO ke koho, hiki i ka papa kuhikuhi ke komo i nā kolamu ʻē aʻe i kuhikuhi ʻole ʻia. Hiki ke hoʻopili ʻia ka papa kuhikuhi me ka papa makua no ka wikiwiki ʻana i nā nīnau. Hoʻopili ʻia kekahi mau palena i nā kuhikuhi, e like me ka helu nui o nā kolamu ʻē aʻe i hiki ke mālama ʻia i kahi papa kuhikuhi. Eia kekahi, ʻaʻole maʻalahi nā nīnau ma o nā kuhikuhi e like me nā RDBMS ʻē aʻe.

"E koho maʻalahi ʻo Cloud Spanner i kahi index i nā hihia liʻiliʻi wale nō. ʻO ka mea nui, ʻaʻole koho ʻokoʻa ʻo Cloud Spanner i kahi papa kuhikuhi lua inā noi ka nīnau i nā kolamu i mālama ʻole ʻia i loko. kuhikuhi ".

  • Kuʻikahi Papa Hana (SLA): Hoʻolālā ʻāina hoʻokahi me 99,99% SLA; hoʻolālā ʻāina he nui me 99,999% SLA. ʻOiai ʻo ka SLA ponoʻī he ʻaelike a ʻaʻole ia he hōʻoiaʻiʻo o kēlā me kēia ʻano, ke manaʻoʻiʻo nei au he mau ʻikepili paʻakikī ka poʻe Google e hana i kahi koi ikaika. (No ka ʻike, ʻo 99,999% ʻo ia ka 26,3 kekona o ka manawa haʻahaʻa o ka lawelawe i kēlā me kēia mahina.)
  • Nui aʻe: https://cloud.google.com/spanner/

'Ōlelo Aʻo: Hoʻohui ka papahana Apache Tephra i ke kākoʻo kālepa holomua iā Apache HBase (i hoʻokō ʻia i kēia manawa ma Apache Phoenix ma ke ʻano he beta).

3. ʻO kā mākou loiloi

No laila, ua heluhelu mākou a pau i nā ʻōlelo a Google e pili ana i nā pōmaikaʻi o Cloud Spanner - ʻaneʻane palena ʻole ʻia ka hoʻonui ʻana me ka mālama ʻana i ke kūpaʻa kiʻekiʻe a me kahi SLA kiʻekiʻe loa. ʻOiai he paʻakikī loa kēia mau ʻōlelo i ka hoʻokō ʻana, ʻaʻole kā mākou pahuhopu e hōʻole iā lākou. Akā, e kālele kākou i nā mea ʻē aʻe i mālama nui ʻia e ka hapa nui o nā mea hoʻohana: parity a me ka hoʻohana.

Ua helu mākou iā Cloud Spanner i mea pani no Sharded MySQL

ʻO Google Cloud SQL a me Amazon AWS RDS, ʻelua o nā ʻikepili OLTP kaulana loa i ka mākeke ao, loaʻa kahi hiʻohiʻona nui loa. Eia nō naʻe, i mea e hoʻonui ai i kēia mau ʻikepili ma mua o ka nui o ka node hoʻokahi, pono ʻoe e hana i ka hoʻokaʻawale noi. Hoʻokumu kēia ala i ka paʻakikī hou no nā noi a me ka hoʻokele. Ua nānā mākou i ke kūpono o Spanner i ke ʻano o ka hoʻohui ʻana i nā ʻāpana he nui i hoʻokahi laʻana a me nā hiʻohiʻona (inā loaʻa) e pono ke kaumaha ʻia.

Kākoʻo no SQL, DML a me DDL, a me ka mea hoʻohui a me nā hale waihona puke?

ʻO ka mea mua, i ka hoʻomaka ʻana me kekahi waihona, pono ʻoe e hana i kahi kumu hoʻohālike. Inā manaʻo ʻoe hiki iā ʻoe ke hoʻohui iā JDBC Spanner i kāu hāmeʻa SQL punahele, e ʻike ʻoe hiki iā ʻoe ke nīnau i kāu ʻikepili me ia, akā ʻaʻole hiki iā ʻoe ke hoʻohana ia mea no ka hana ʻana i kahi papaʻaina a i ʻole ka hoʻopou (DDL) a i ʻole kekahi mea hoʻokomo/hōʻano/ holoi. nā hana (DML). ʻAʻole kākoʻo ka JDBC mana o Google.

"ʻAʻole kākoʻo nā mea hoʻokele i nā ʻōlelo DML a i ʻole DDL i kēia manawa."
Palapala Spanner

ʻAʻole maikaʻi ke kūlana me ka console GCP - hiki iā ʻoe ke hoʻouna wale i nā nīnau SELECT. ʻO ka mea pōmaikaʻi, aia kahi mea hoʻokele JDBC me ke kākoʻo DML a me DDL mai ke kaiāulu me nā kālepa github.com/olavloite/spanner-jdbc. ʻOiai he mea maikaʻi loa kēia mea hoʻokele, ʻo ka nele o ka mea hoʻokele JDBC ponoʻī a Google he mea kupanaha. ʻO ka mea pōmaikaʻi, hāʻawi ʻo Google i ke kākoʻo waihona mea kūʻai aku ākea ākea (e pili ana i ka gRPC): C#, Go, Java, node.js, PHP, Python, a me Ruby.

ʻO ka hoʻohana kokoke ʻana i nā API maʻamau o Cloud Spanner (ma muli o ka nele o DDL a me DML ma JDBC) ka hopena i kekahi mau palena no nā wahi pili o ke code e like me ka hoʻopili ʻana i ka pilina a i ʻole nā ​​papa hana paʻa waihona (e like me Spring MVC). ʻO ka maʻamau, ke hoʻohana ʻoe iā JDBC, hiki iā ʻoe ke koho i kāu kolamu pili punahele (e laʻa me HikariCP, DBCP, C3PO, etc.) i hoʻāʻo ʻia a hana maikaʻi. I ka hihia o nā API Spanner maʻamau, pono mākou e hilinaʻi i nā kiʻi paʻa/nā pūnāwai a mākou i hana ai iā mākou iho.

ʻO ke kiʻi kumu mua (PC) hoʻolālā e hiki ai iā Cloud Spanner ke wikiwiki loa i ke komo ʻana i ka ʻikepili ma o ka PC, akā hoʻopuka pū kekahi i nā pilikia nīnau.

  • ʻAʻole hiki iā ʻoe ke hōʻano hou i ka waiwai o kahi kī mua; Pono ʻoe e holoi mua i ke komo ʻana o ka PC mua a hoʻokomo hou me ka waiwai hou. (Ua like kēia me nā ʻenekini hoʻopaʻa waihona / waihona waihona PC ʻē aʻe.)
  • Pono nā ʻōlelo UPDATE a DELETE e kuhikuhi i ka PC ma WHERE, no laila, ʻaʻole hiki ke hoʻokaʻawale ʻia DELETE i nā ʻōlelo āpau - pono e loaʻa kahi subquery, no ka laʻana: UPDATE xxx WHERE id IN (SELECT id FROM table1)
  • Loaʻa i kahi koho hoʻonui auto-increment a i ʻole kekahi mea like e hoʻonohonoho i ke kaʻina no ke kahua PC. No kēia hana, pono e hana ʻia ka waiwai kūpono ma ka ʻaoʻao noi.

Nā helu helu lua?

Ua kākoʻo ʻia ʻo Google Cloud Spanner no nā papa kuhikuhi lua. He hiʻohiʻona maikaʻi loa kēia ʻaʻole i loaʻa mau i nā ʻenehana ʻē aʻe. ʻAʻole kākoʻo ʻo Apache Kudu i nā ʻōlelo kuhikuhi lua, a ʻaʻole kākoʻo pololei ʻo Apache HBase i nā kuhikuhi, akā hiki ke hoʻohui iā lākou ma o Apache Phoenix.

Hiki ke hoʻohālikelike ʻia nā papa kuhikuhi ma Kudu a me HBase ma ke ʻano he papa ʻokoʻa me nā ʻano ʻokoʻa o nā kī nui, akā pono e hana ʻia ka atomicity o nā hana i hana ʻia ma ka papa makua a me nā papa kuhikuhi pili i ka pae noi a ʻaʻole ia he mea liʻiliʻi ke hoʻokō pono.

E like me ka mea i ʻōlelo ʻia ma ka loiloi Cloud Spanner, ʻokoʻa paha kāna mau kuhikuhi mai nā ʻōlelo kuhikuhi MySQL. No laila, pono e mālama pono i ke kūkulu ʻana i ka nīnau a me ka hoʻopili ʻana e hōʻoia i ka hoʻohana ʻia ʻana o ka kuhikuhi pololei ma kahi e pono ai.

Lunamakaainana?

ʻO kahi mea kaulana a maikaʻi hoʻi i loko o kahi waihona ʻike ʻike. Hiki iā lākou ke hoʻohana no ka nui o nā hihia hoʻohana; ʻO kaʻu mau mea punahele ʻelua, ʻo ia ka logical abstraction layer a me ka pale palekana. ʻAʻole kākoʻo ʻo Cloud Spanner i nā manaʻo. Eia nō naʻe, ʻo kēia wale nō ka mea i kaupalena ʻia iā mākou, no ka mea, ʻaʻohe kolamu-level granularity no ka ʻae ʻana i kahi e hiki ai i nā manaʻo ke lilo i mea ʻae ʻia.

E ʻike i ka palapala Cloud Spanner no kahi ʻāpana e wehewehe ana i nā quota a me nā palena (kīʻaha/quota), aia kekahi i pilikia no kekahi mau noi: ʻO Cloud Spanner ma waho o ka pahu he 100 ka nui o nā ʻikepili i kēlā me kēia manawa. ʻIke loa, hiki i kēia ke lilo i mea pilikia nui no kahi waihona i hoʻolālā ʻia e hoʻonui i ka 100 ʻikepili. ʻO ka mea pōmaikaʻi, ma hope o ke kamaʻilio ʻana me kā mākou ʻelele loea Google, ua ʻike mākou e hiki ke hoʻonui ʻia kēia palena i kahi waiwai ma o ke kākoʻo Google.

Kākoʻo hoʻomohala?

Hāʻawi ʻo Cloud Spanner i ke kākoʻo ʻōlelo hoʻolālā maikaʻi no ka hana ʻana me kāna API. Aia nā hale waihona puke i kākoʻo ʻia ma kahi o C#, Go, Java, node.js, PHP, Python, a me Ruby. He kikoʻī loa ka palapala, akā e like me nā ʻenehana ʻokiʻoki ʻē aʻe, liʻiliʻi loa ke kaiāulu i hoʻohālikelike ʻia i nā ʻenehana waihona punahele kaulana loa, hiki ke hopena i ka nui o ka manawa i hoʻohana ʻia no nā hihia hoʻohana maʻamau a i ʻole nā ​​pilikia.

No laila pehea ke kākoʻo hoʻomohala kūloko?

ʻAʻole i loaʻa iā mākou kahi ala e hana ai i kahi laʻana Cloud Spanner ma ka hale. ʻO kahi kokoke loa i loaʻa iā mākou he kiʻi Docker ʻO CockroachDBhe mea like ma ke kumu, aka, he okoa loa ka hana. No ka laʻana hiki iā CockroachDB ke hoʻohana iā PostgreSQL JDBC. No ka mea e pili kokoke ana ka hoʻomohala ʻana i ka ʻenehana hana, ʻaʻole kūpono ʻo Cloud Spanner no ka mea pono ʻoe e hilinaʻi i kahi hiʻohiʻona Spanner piha. No ka mālama ʻana i nā koina, hiki iā ʻoe ke koho i hoʻokahi laʻana wahi.

Kākoʻo hoʻokele?

Maʻalahi loa ka hana ʻana i kahi laʻana Cloud Spanner. Pono ʻoe e koho ma waena o ka hoʻokumu ʻana i kahi ʻāpana he nui a i ʻole kahi ʻāpana hoʻokahi, e kuhikuhi i ka ʻāina (s) a me ka helu o nā nodes. I ka liʻiliʻi ma mua o hoʻokahi minuke, e hoʻomaka ka laʻana.

Loaʻa pololei ʻia kekahi mau anana haʻahaʻa ma ka ʻaoʻao Spanner ma ka Google Console. Loaʻa nā ʻike kikoʻī hou aku ma o Stackdriver, kahi e hiki ai iā ʻoe ke hoʻonohonoho i nā paepae metric a me nā kulekele makaʻala.

Loaʻa i nā kumuwaiwai?

Hāʻawi ʻo MySQL i ka ʻae a me ka nui o ka mea hoʻohana i nā hoʻonohonoho hoʻonohonoho. Hiki iā ʻoe ke hoʻonohonoho maʻalahi i ke komo ʻana i kahi papaʻaina, a i ʻole kahi ʻāpana o kāna mau kolamu. Hoʻohana ʻo Cloud Spanner i ka hāmeʻa Google Identity & Access Management (IAM), ka mea e ʻae iā ʻoe e hoʻonohonoho i nā kulekele a me nā ʻae i kahi kiʻekiʻe loa. ʻO ka koho nui loa ʻo ia ka ʻae ʻikepili-level, ʻaʻole kūpono i ka hapa nui o nā hihia hana. Ke koi nei kēia palena iā ʻoe e hoʻohui i nā mea palekana hou aʻe i kāu code, ʻōnaehana, a i ʻole nā ​​​​mea ʻelua e pale ai i ka hoʻohana ʻole ʻia o nā kumuwaiwai Spanner.

Nā waihona?

No ka maʻalahi, ʻaʻohe mea hoʻihoʻi ma Cloud Spanner. ʻOiai hiki i nā koi SLA kiʻekiʻe o Google ke hōʻoia ʻaʻole ʻoe e nalowale i kekahi ʻikepili ma muli o ka hāʻule ʻana o ka lako a i ʻole ka waihona waihona, hewa kanaka, nā hemahema o ka noi, a me nā mea ʻē aʻe. I kēia manawa, ʻo ke ala wale nō e hoʻihoʻi i ka ʻikepili, ʻo ia ka hoʻoheheʻe programmatically mai ka ʻikepili i kahi ʻokoʻa mālama ʻokoʻa.

Hana nīnau?

Ua hoʻohana mākou iā Yahoo! e hoʻouka i ka ʻikepili a me nā noi hoʻāʻo. ʻO ka hōʻailona o ka lawelawe ʻana i ke ao. Hōʻike ka papa ma lalo i ka haʻahaʻa hana B YCSB me ka 95% heluhelu a 5% kākau lākiō.

Google Cloud Spanner: Maikaʻi, ʻino, ʻino

* Ua holo ka hoʻāʻo hoʻouka ma n1-standard-32 Compute Engine (CE) (32 vCPUs, 120 GB memo) a ʻaʻole ʻo ka hoʻāʻo ʻana i ka bottleneck i nā hoʻokolohua.
** ʻO ka helu kiʻekiʻe loa o nā lola i hoʻokahi laʻana YCSB he 400. ʻO ka huina, ʻeono mau manawa like o nā hoʻāʻo YCSB pono e holo no ka loaʻa ʻana o 2400 mau lola.

Ke nānā nei i nā hopena benchmark, ʻoi aku ka hui pū ʻana o ka ukana CPU a me TPS, hiki iā mākou ke ʻike maopopo i ka pae ʻana o Cloud Spanner. ʻO ka ukana nui i hanaʻia e ka nui o nā kaula i hoʻopauʻia e ka nui o nā nodes i ka hui Cloud Spanner. ʻOiai ke nānā aku nei ke kiʻekiʻe o ka latency, ʻoi aku ka nui o ka holo ʻana ma 2400 mau kaula, pono paha e hoʻāʻo hou me 6 mau manawa liʻiliʻi o ka mīkini helu e loaʻa ai nā helu pololei. E holo ana kēlā me kēia la'ana i ho'okahi ho'ā'o YCSB ma kahi o ho'okahi la'ana CE nui me 6 mau ho'ā'o like. E maʻalahi kēia i ka hoʻokaʻawale ʻana ma waena o Cloud Spanner noi lohi a me nā lohi i hoʻohui ʻia e ka pilina pūnaewele ma waena o Cloud Spanner a me ka mea CE e holo ana i ka hoʻāʻo.

Pehea e hana ai ʻo Cloud Spanner ma ke ʻano he OLAP?

Māhele ʻana?

ʻO ka hoʻokaʻawale ʻana i ka ʻikepili i loko o nā ʻāpana kūʻokoʻa kino a / a i ʻole nā ​​​​ʻāpana kūʻokoʻa, i kapa ʻia ʻo partitions, kahi manaʻo kaulana loa i loaʻa i ka hapa nui o nā mīkini OLAP. Hiki i nā ʻāpana ke hoʻomaikaʻi nui i ka hana nīnau a me ka mālama ʻana i ka waihona. He ʻatikala ʻokoʻa ka ʻimi hou ʻana i ka māhele ʻana, no laila, e haʻi wale kākou i ke koʻikoʻi o ka loaʻa ʻana o kahi hoʻolālā hoʻokaʻawale a me ka sub-partitioning. ʻO ka hiki ke hoʻokaʻawale i nā ʻikepili i nā ʻāpana a ʻoi aku i nā sub-partitions ke kī nui i ka hana o nā nīnau noiʻi.

ʻAʻole kākoʻo ʻo Cloud Spanner i nā ʻāpana no kēlā me kēia. Hoʻokaʻawale ia i ka ʻikepili i loko i kapa ʻia hoʻokaʻawale-s ma muli o nā pae kī mua. Hana ʻia ka hoʻokaʻawale ʻana e kaulike i ka ukana ma ka pūʻulu Cloud Spanner. ʻO kahi hiʻohiʻona maʻalahi loa o Cloud Spanner ka hoʻokaʻawale ʻana i ka haʻawe kumu o kahi papa makua (kahi papa ʻaʻole i hoʻopili ʻia me kekahi). ʻIke ʻakomi ʻo Spanner inā loaʻa hoʻokaʻawale ʻikepili i heluhelu pinepine ʻia ma mua o ka ʻikepili ma nā mea ʻē aʻe hoʻokaʻawale-ah, a hiki ke hoʻoholo i kahi kaʻawale hou aku. No laila, hiki ke komo i nā nodes i kahi noi, kahi e hoʻonui pono ai i ka throughput.

Ke hoʻouka nei i ka ʻikepili?

Ua like ke ala Cloud Spanner no ka ʻikepili nui me ka hoʻouka maʻamau. No ka hana ʻoi loa, pono ʻoe e hahai i kekahi mau alakaʻi, me:

  • Hoʻokaʻawale i kāu ʻikepili ma ke kī mua.
  • E puunaue ia lakou i 10*helu o nā nodes pauku pakahi.
  • E hana i kahi hoʻonohonoho o nā hana limahana e hoʻouka i ka ʻikepili i ka like.

Hoʻohana kēia hoʻouka ʻikepili i nā node Cloud Spanner āpau.

Ua hoʻohana mākou i ka haʻahaʻa hana A YCSB no ka hoʻokumu ʻana i kahi ʻikepili lālani 10M.

Google Cloud Spanner: Maikaʻi, ʻino, ʻino

* Ua holo ʻia ka hoʻāʻo hoʻouka ma ka mīkini helu n1-standard-32 (32 vCPU, 120 GB memo) a ʻaʻole ʻo ka hoʻāʻo ʻana i ka bottleneck i nā hoʻokolohua.
** ʻAʻole ʻōlelo ʻia kahi hoʻonohonoho node 1 no kekahi haʻahaʻa hana hana.

E like me ka mea i ʻōlelo ʻia ma luna, ua hoʻokaʻawale ʻia ʻo Cloud Spanner ma muli o kā lākou ukana, no laila e hoʻomaikaʻi nā hopena ma hope o ka hoʻāʻo ʻana. ʻO nā hopena i hōʻike ʻia ma ʻaneʻi nā hopena maikaʻi loa i loaʻa iā mākou. I ka nānā ʻana i nā helu ma luna, hiki iā mākou ke ʻike i ke ʻano o ka hoʻonui ʻana o Cloud Spanner (maikaʻi) e like me ka piʻi ʻana o ka helu o nā nodes i ka hui. ʻO nā helu i kū i waho he haʻahaʻa haʻahaʻa haʻahaʻa loa, ʻokoʻa me nā hopena mai nā haʻahaʻa hana hui ʻia (95% heluhelu a me 5% kākau) e like me ka wehewehe ʻana ma ka ʻāpana ma luna.

Hoʻonui ʻia?

ʻO ka hoʻonui a me ka hoʻemi ʻana i ka helu o nā node Cloud Spanner he hana hoʻokahi kaomi. Inā makemake ʻoe e hoʻouka wikiwiki i ka ʻikepili, makemake paha ʻoe e noʻonoʻo e hoʻonui i ka hiʻohiʻona i ka palena kiʻekiʻe (i kā mākou hihia he 25 nodes i ka US-EAST region) a laila hoʻemi i ka helu o nā nodes kūpono no kāu ukana maʻamau ma hope o nā ʻikepili āpau. i loko o ka waihona, e hoʻomanaʻo i ka palena 2 TB/node.

Hoʻomanaʻo ʻia mākou i kēia palena ʻoiai me kahi waihona liʻiliʻi loa. Ma hope o ka holo ʻana o ka hoʻāʻo hoʻouka ʻana, ʻo kā mākou waihona ma kahi o 155 GB ka nui, a i ka wā i hōʻemi ʻia i kahi kumu node 1, loaʻa iā mākou ka hewa penei:

Google Cloud Spanner: Maikaʻi, ʻino, ʻino

Ua hiki iā mākou ke hoʻohaʻahaʻa i lalo mai 25 a 2 mau manawa, akā paʻa mākou i nā nodes ʻelua.

Hiki ke ho'ohana 'ia ka ho'ohana 'ana i ka REST API ka ho'onui 'ana a me ka ho'emi 'ana i ka helu o nā node i loko o kahi pū'ulu Cloud Spanner. Hiki ke hoʻohana pono kēia no ka hōʻemi ʻana i ka hoʻonui ʻana i ka ukana ma ka ʻōnaehana i nā hola hana.

OLAP hana nīnau?

Ua hoʻolālā mua mākou e hāʻawi manawa nui i kā mākou loiloi ʻana iā Spanner ma kēia ʻāpana. Ma hope o kekahi mau SELECT COUNTs, ua ʻike koke mākou he pōkole ka hoʻāʻo ʻana a ʻaʻole ʻo Spanner he mīkini kūpono no OLAP. ʻAʻohe o ka helu o nā nodes i loko o ka puʻupuʻu, ke koho wale ʻana i ka helu o nā lālani ma ka papa lālani 10M, lawe ʻia 55 a 60 kekona. Eia kekahi, ʻaʻole i hāʻule kekahi nīnau e koi ana i ka hoʻomanaʻo e mālama i nā hopena waena me kahi hewa OOM.

SELECT COUNT(DISTINCT(field0)) FROM usertable; — (10M distinct values)-> SpoolingHashAggregateIterator ran out of memory during new row.

Hiki ke loaʻa kekahi mau helu no nā nīnau TPC-H ma ka ʻatikala a Todd Lipcon nosql-kudu-spanner-slides.html, nā paheʻe 42 a me 43. Ua kūlike kēia mau helu me kā mākou hopena pono'ī (akā naʻe).

Google Cloud Spanner: Maikaʻi, ʻino, ʻino

4. ʻO kā mākou ʻike

Hāʻawi ʻia i ke kūlana o kēia manawa o nā hiʻohiʻona Cloud Spanner, paʻakikī ke ʻike iā ia ma ke ʻano he pani maʻalahi no kahi hoʻonā OLTP i loaʻa, ʻoi aku ka nui o kāu pono. He nui ka manawa e kūkulu ai i ka hopena e pili ana i nā hemahema o Cloud Spanner.

I ka wā i hoʻomaka ai mākou e loiloi i ka Cloud Spanner, ua manaʻo mākou e kūlike kāna mau hiʻohiʻona hoʻokele me, a i ʻole ma kahi mamao loa mai, nā hoʻonā Google SQL ʻē aʻe. Akā, ua kāhāhā mākou i ka nele piha o nā waihona a me ka palena ʻole o ka mana i nā kumuwaiwai. ʻAʻole e haʻi aku i nā manaʻo, ʻaʻohe wahi hoʻomohala kūloko, nā kaʻina i kākoʻo ʻole ʻia, JDBC me ke kākoʻo ʻole o DML a me DDL, a pēlā aku.

No laila, ma hea kahi e hele ai no kahi mea pono e hoʻonui i kahi waihona transactional? ʻAʻohe mea i loaʻa kahi hopena hoʻokahi ma ka mākeke akā kūpono i nā hihia hoʻohana āpau. Nui nā mea pani a wehe ʻia (kekahi o ia mau mea i ʻōlelo ʻia ma kēia ʻatikala), kēlā me kēia me ko lākou mau ikaika a me nā nāwaliwali, akā ʻaʻohe o lākou e hāʻawi iā SaaS me kahi 99,999% SLA a me kahi kiʻekiʻe o ke kūlike. Inā he SLA kiʻekiʻe kāu pahuhopu nui a ʻaʻole ʻoe makemake e kūkulu i kāu hoʻonā ponoʻī no nā ao he nui, ʻo Cloud Spanner ka hopena āu e ʻimi nei. Akā, pono ʻoe e ʻike i kona mau palena a pau.

No ka pololei, ua hoʻokuʻu wale ʻia ʻo Cloud Spanner i ka lehulehu i ka pūnāwai o 2017, no laila he mea kūpono ke manaʻo e haʻalele paha kekahi o kāna mau hemahema i kēia manawa (manaʻolana), a i ka wā e hana ai, hiki ke lilo i mea hoʻololi pāʻani. Ma hope o nā mea a pau, ʻaʻole ʻo Cloud Spanner kahi papahana ʻaoʻao no Google. Hoʻohana ʻo Google iā ia i kumu no nā huahana Google ʻē aʻe. A i ka wā i hoʻololi hou ai ʻo Google iā Megastore ma Google Cloud Storage me Cloud Spanner, ua ʻae ʻo ia i ka Google Cloud Storage e lilo i kūlike loa no nā papa inoa mea ma ka pae honua (ʻaʻole naʻe ka hihia no ka ʻO Amazon S3).

No laila, aia nō ka manaʻolana ... manaʻolana mākou.

ʻo ia wale nō. E like me ka mea kākau o ka ʻatikala, hoʻomau mākou i ka manaʻolana, akā pehea kou manaʻo no kēia? E kākau i nā manaʻo

Ke kono nei mākou i nā mea a pau e kipa mai i kā mākou webinar manuahi kahi e haʻi aku ai mākou iā ʻoe e pili ana i ka papa "AWS no nā mea hoʻomohala" mai OTUS.

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka