NewSQL = NoSQL+ACID

NewSQL = NoSQL+ACID
Tae noa ki te tata nei, i rongoa a Odnoklassniki mo te 50 TB o nga raraunga i tukatukahia i roto i te waa tuuturu i roto i te SQL Server. Mo te ahua penei, kaore e taea te whakarato tere me te pono, tae noa ki te urunga kore-whakaaro ki te pokapū raraunga ma te whakamahi i te SQL DBMS. Ko te tikanga, i roto i enei ahuatanga, ka whakamahia tetahi o nga rokiroki NoSQL, engari kaore nga mea katoa e taea te whakawhiti ki NoSQL: ko etahi hinonga e hiahia ana ki nga taurangi tauwhitinga ACID.

Na tenei i arai matou ki te whakamahi i te NewSQL rokiroki, ara, he DBMS e whakarato ana i nga hapa, te whakaheke me te mahinga o nga punaha NoSQL, engari i te wa ano ka mau tonu nga tohu ACID e mohio ana ki nga punaha puāwaitanga. He iti noa nga punaha ahumahi mahi o tenei akomanga hou, no reira i whakatinanahia e matou taua punaha ka uru ki nga mahi arumoni.

Me pehea te mahi me te aha i tupu - panuihia i raro i te tapahi.

I tenei ra, ko te hunga whakarongo o te marama o Odnoklassniki neke atu i te 70 miriona manuhiri ahurei. Tatou Kei roto matou i te rima o runga Ko nga whatunga hapori nui rawa atu i te ao, me nga waahi e rua tekau e whakapau kaha ana nga kaiwhakamahi. Ko te hanganga OK e mau ana i nga kawenga tino nui: neke atu i te miriona tono HTTP/hekona mo ia mua. Ko nga waahanga o te waka rererangi neke atu i te 8000 nga waahanga kei te tata ki a raatau - i roto i nga pokapū raraunga e wha o Moscow, e taea ai te roa o te whatunga iti iho i te 1 ms i waenganui ia ratou.

Kua whakamahia e matou a Cassandra mai i te tau 2010, timata mai i te putanga 0.6. I tenei ra he maha nga tatini kahui e mahi ana. Ko nga mahi kapoi tere atu i te 4 miriona nga mahi mo ia hekona, me nga toa nui rawa atu 260 TB.

Heoi, he kohinga NoSQL noa enei e whakamahia ana mo te rokiroki ngoikore te ruruku raraunga. I hiahia matou ki te whakakapi i te rokiroki rite tonu, Microsoft SQL Server, kua whakamahia mai i te timatanga o Odnoklassniki. Neke atu i te 300 nga miihini Putanga Paerewa SQL Server, kei roto 50 TB o nga raraunga - hinonga pakihi. Ko enei raraunga ka whakarereketia hei waahanga o nga whakawhitinga ACID me te hiahia riterite teitei.

Hei tohatoha raraunga puta noa i nga waahanga SQL Server, i whakamahia e matou te poutū me te whakapae wehewehe (sharding). I nga wa o mua, i whakamahia e matou he kaupapa tiritiri raraunga ngawari: i hono ia hinonga ki tetahi tohu - he mahi o te ID hinonga. Ko nga hinonga he rite te tohu i tuu ki runga i te tūmau SQL kotahi. I whakatinanahia te hononga matua-taipitopito kia rite tonu nga tohu o nga rekoata matua me nga rekoata tamariki, ka noho ki runga i te tūmau kotahi. I roto i te whatunga hapori, tata katoa nga rekoata ka hangaia mo te kaiwhakamahi - ko te tikanga ko nga raraunga kaiwhakamahi katoa i roto i te punaha iti mahi ka rongoa ki runga i te tūmau kotahi. Arā, he tauwhitinga pakihi tata i nga wa katoa ka uru ki nga ripanga mai i tetahi tūmau SQL, i taea ai te whakarite kia rite nga raraunga ma te whakamahi i nga whakawhitinga ACID rohe, kaore he hiahia ki te whakamahi. puhoi me te kore pono tohatoha ACID tauwhitinga.

He mihi ki te tohatoha me te tere o SQL:

  • Karekau matou e whakamahi i nga here matua o Tawahi, na te mea i te wa e tiritiri ana te ID hinonga kei runga i tetahi atu tūmau.
  • Kaore matou e whakamahi i nga tikanga rongoa me nga keemu na te taapiri o te uta i runga i te PTM DBMS.
  • Kare matou e whakamahi i nga JOIN na te mea katoa o runga ake nei me te maha o nga panui matapōkere mai i te kōpae.
  • I waho atu o te tauwhitinga, ka whakamahia e matou te taumata whakataha Panui Kore Utu hei whakaiti i nga kati.
  • Ka mahia e matou nga whakawhitiwhitinga poto noa (i te toharite poto ake i te 100 ms).
  • Karekau matou e whakamahi i nga rarangi-maha UPDATE me te MUMU na te nui o nga kati - kotahi noa te rekoata e whakahou ana i te wa kotahi.
  • I nga wa katoa ka mahia e matou nga paatai ​​​​i runga i nga taupū anake - ko te patai me te mahere matawai ripanga ki a matou ko te tikanga he nui rawa te utaina o te paataka raraunga ka taka.

Ko enei mahi ka taea e matou te kohi i nga mahi tino nui mai i nga tūmau SQL. Heoi, ka nui haere nga raruraru. Ka titiro tatou ki a raatau.

Nga raruraru me te SQL

  • I te mea i whakamahia e matou te tuhi-tuhi whaiaro, ko te taapiri i nga kongakonga hou i mahia a ringa e nga kaiwhakahaere. I enei wa katoa, ko nga tauira raraunga tauineine kaore i te tuku tono.
  • Ka piki ake te maha o nga rekoata i te ripanga, ka heke te tere o te whakauru me te whakarereketanga; ka taapirihia nga tohu ki tetahi ripanga o mua, ka heke te tere ma tetahi take; ko te hanga me te hanga ano o nga tohu ka puta me te wa heke.
  • Ko te iti o te Windows mo te SQL Server i roto i te mahi hanga ka uaua te whakahaere hanganga

Engari ko te raru nui

te manawanui ki te he

Ko te tūmau SQL matarohia he ngoikore te aro ki te he. Me kii he kotahi anake te tūmau pātengi raraunga, ā, ka taka kotahi ia toru tau. I tenei wa ka heke te waahi mo te 20 meneti, ka whakaaetia. Mēnā e 64 ō tūmau, ka heke te pae kotahi ia toru wiki. A, ki te 200 nga kaitoro, karekau te waahi e mahi ia wiki. He raruraru tenei.

He aha te mahi hei whakapai ake i te he o te tūmau SQL? Ka tono mai a Wikipedia ki te hanga tautau tino wātea: ki te hee tetahi o nga waahanga kei reira he taapiri.

Ko te hiahia tenei he maha nga taputapu utu nui: he maha nga taarua, he muka whatu, he rokiroki tiritahi, me te whakaurunga o te rahui kaore e pai te mahi: tata ki te 10% o nga huringa ka mutu ki te kore o te kopuku taapiri penei i te tereina kei muri i te pona matua.

Engari ko te tino ngoikoretanga o taua tautau tino watea ko te kore e waatea mena ka rahua te pokapū raraunga kei reira nei. E wha nga pokapū raraunga a Odnoklassniki, a me whakarite e matou te mahi i te wa e paheke ana tetahi o ratou.

Mo tenei ka taea e taatau te whakamahi Kaiwhakaako Maha tukuruatanga i hangaia ki te SQL Server. He nui ake te utu o tenei otinga na te utu o te rorohiko me te mamae i nga raru rongonui me te tukurua - he whakaroa tauwhitinga ohorere me te tukurua tukutahi me te whakaroa ki te tono tukuruatanga (a, na reira, kua ngaro nga whakarereketanga) me te tukurua tukutahi. Ko te tikanga whakatau pakanga ā-ringa ka kore e tika ana tenei whiringa ki a matou.

Ko enei raruraru katoa e hiahiatia ana he otinga whakahirahira, a ka timata matou ki te tarai i nga korero. I konei me mohio tatou ki nga mahi a SQL Server - nga whakawhitinga.

tauwhitinga ngawari

Kia whai whakaaro tatou ki te tauwhitinga ngawari rawa atu, mai i te tirohanga a te kaitoha SQL tono: te taapiri whakaahua ki te pukaemi. Ko nga pukaemi me nga whakaahua ka rongoa ki nga papa rereke. Kei te pukaemi he porotiti whakaahua mo te iwi. Na ka wehewehea taua whakawhitinga ki nga waahanga e whai ake nei:

  1. Ka aukatihia e matou te pukaemi ma te matua.
  2. Waihangatia he urunga ki te ripanga whakaahua.
  3. Mēnā he tūnga tūmatanui te whakaahua, kātahi ka tāpirihia he porotiti whakaahua tūmatanui ki te pukaemi, whakahou i te rekoata me te tuku i te tauwhitinga.

I roto ranei i te pseudocode:

TX.start("Albums", id);
Album album = albums.lock(id);
Photo photo = photos.create(…);

if (photo.status == PUBLIC ) {
    album.incPublicPhotosCount();
}
album.update();

TX.commit();

Ka kite matou ko te ahuatanga tino noa mo te tauwhitinga pakihi ko te panui i nga raraunga mai i te papaaarangi ki te maharatanga o te kaituku tono, te huri i tetahi mea me te penapena i nga uara hou ki te paataka. I te nuinga o te waa ka whakahouhia e matou he maha nga hinonga, he maha nga tepu.

I te wa e whakahaere ana i tetahi tauwhitinga, ka puta te whakarereketanga o nga raraunga kotahi mai i tetahi atu punaha. Hei tauira, ka whakatau pea a Antispam he ahua whakapae te kaiwhakamahi, na reira me kore nga whakaahua katoa o te kaiwhakamahi e panuitia, me tuku kia whakaōrite, ko te huri i te photo.status ki etahi atu uara me te whakaweto i nga porotiti e rite ana. Maamaa, mena ka puta tenei mahi kaore he taurangi mo te atomicity o te tono me te wehe o nga whakarereketanga whakataetae, penei i ACID, karekau te hua e tika ana - ka whakaatuhia e te kaute whakaahua te uara he, karekau ranei nga whakaahua katoa ka tukuna mo te whakatikatika.

He maha nga momo waehere rite, e whakahaere ana i nga momo hinonga pakihi i roto i te tauwhitinga kotahi, kua tuhia puta noa i te ao katoa o Odnoklassniki. I runga i te wheako o nga heke ki NoSQL mai Te Tauritenga Whakamutunga E mohio ana matou ko te wero nui (me te haumi wa) ka ahu mai i te whakawhanake waehere hei pupuri i te riterite o nga raraunga. Na reira, i whakaarohia e matou te whakaritenga matua mo te rokiroki hou ko te whakarato mo nga whakawhitinga ACID tuuturu mo te arorau tono.

Ko etahi atu, he mea tino nui, ko nga whakaritenga:

  • Mena ka rahua te pokapū raraunga, me waatea te panui me te tuhi ki te rokiroki hou.
  • Te pupuri i te tere whanaketanga o naianei. Arā, i te wa e mahi ana me tetahi putunga hou, me rite te nui o te waehere; kaore he take ki te taapiri i tetahi mea ki te putunga, te whakawhanake i nga algorithm mo te whakatau i nga tautohetohe, te pupuri i nga tohu tuarua, me era atu.
  • Ko te tere o te rokiroki hou me tino tiketike, i te wa e panui ana nga raraunga me te wa e tukatuka ana i nga whakawhitiwhitinga, ko te tikanga ko nga otinga tino uaua, te ao, engari puhoi, penei, hei tauira, kaore i te tika. mahi rua-waahanga.
  • Whakanuia aunoa i runga i te rere.
  • Ma te whakamahi i nga kaiwhakarato iti noa, me te kore e hiahia ki te hoko i nga taputapu rereke.
  • Ka taea te whakawhanake rokiroki e nga kaihanga kamupene. I etahi atu kupu, ko te kaupapa matua i hoatu ki nga otinga rangatira, puna tuwhera ranei, he pai ki Java.

Whakatau, whakatau

I te wetewete i nga otinga ka taea, ka tae mai ki nga whiringa hoahoanga e rua:

Ko te mea tuatahi ko te tango i tetahi tūmau SQL me te whakatinana i te aro o te he, te hanga i te tauine, te tautau failover, te whakatau taupatupatu me te tohatoha, pono me te tere o nga whakawhitinga ACID. I whakatauhia e matou tenei waahanga he mea tino kore noa me te whakapau kaha ki te mahi.

Ko te waahanga tuarua ko te tango i te rokiroki NoSQL kua rite me te tauine kua whakatinanahia, he kahui ngoikore, he whakatau pakanga, me te whakatinana i nga whakawhitinga me te SQL koe. I te tuatahi o te titiro, ahakoa ko te mahi ki te whakatinana i te SQL, kaua ki te whakahua i nga whakawhitiwhitinga ACID, he rite ki te mahi ka roa nga tau. Engari katahi ka mohio matou ko te huinga waahanga SQL e whakamahia ana e matou i roto i nga mahi he tawhiti atu i te ANSI SQL Cassandra CQL tawhiti atu i ANSI SQL. Ma te titiro tata atu ki te CQL, ka mohio matou he tino tata ki nga mea e hiahiatia ana e matou.

Ko Cassandra me CQL

Na, he aha te mea whakamere mo Cassandra, he aha nga kaha kei a ia?

Tuatahi, i konei ka taea e koe te hanga ripanga e tautoko ana i nga momo raraunga rereke; ka taea e koe te WHAKAMAHI, te WHAKAUPAPA ranei i runga i te matua matua.

CREATE TABLE photos (id bigint KEY, owner bigint,…);
SELECT * FROM photos WHERE id=?;
UPDATE photos SET … WHERE id=?;

Hei whakarite kia rite nga raraunga tauira, ka whakamahia e Cassandra huarahi pŭpŭ autahu'araa. I roto i te ahua ngawari, ko te tikanga ka whakauruhia nga tauira e toru o te rarangi kotahi ki runga i nga waahanga rereke o te tautau, ka kiia te tuhi he angitu mena ko te nuinga o nga pona (ara, e rua i roto i te toru) ka whakapumautia te angitu o tenei mahi tuhi. . Ko nga raraunga haupae ka whakaarohia he rite tonu mena, i te wa e panui ana, ka pootihia te nuinga o nga pona me te whakaū. No reira, me nga tauira e toru, ka whakapumautia te riterite o nga raraunga ka oti me te tere tonu mena ka rahua tetahi node. Na tenei huarahi i taea ai e matou te whakatinana i tetahi kaupapa pono ake: tuku tono i nga wa katoa ki nga tauira e toru, tatari mo te whakautu mai i nga mea tere e rua. Ko te whakautu mutunga o te tauira tuatoru ka makahia i tenei keehi. Ko te node kua roa ki te whakautu ka raru pea - he pakaru, he kohinga para i roto i te JVM, he whakahoki mahara tika i roto i te kernel Linux, he rahunga taputapu, he momotu mai i te whatunga. Heoi, kaore tenei e pa ki nga mahi a te kiritaki me nga raraunga ahakoa he aha.

Ko te huarahi ka whakapa atu tatou ki nga pona e toru ka whiwhi whakautu mai i te rua ka kiia whakaaro: ka tukuna he tono mo nga tauira taapiri i mua i te "hinga".

Ko tetahi atu painga o Cassandra ko te Batchlog, he tikanga e whakarite ana ko te roopu o nga huringa ka mahia e koe ka tino tono, kaore ranei i te tono. Ma tenei ka taea e tatou te whakaoti A i roto i te ACID - te ngota i waho o te pouaka.

Ko nga mea tino tata ki nga whakawhitinga i Cassandra ko nga mea e kiia ana "nga whakawhitinga ngawari". Engari kei tawhiti atu i nga whakawhitinga ACID "pono": he pono, he waahi tenei ki te mahi CAS i runga i nga raraunga mai i te rekoata kotahi anake, ma te whakamahi i te whakaaetanga ma te whakamahi i te kawa taumahamaha Paxos. Na reira, he iti te tere o aua whakawhitinga.

He aha ta matou i ngaro i Cassandra

Na, me whakatinana i nga whakawhitinga ACID tuuturu i Cassandra. Ma te whakamahi i enei ka taea e maatau te whakamahi i etahi atu waahanga pai o te DBMS matarohia: nga tohu tere tere, ka taea e maatau te mahi i nga kowhiringa raraunga ehara ma te kii matua anake, me te kaihanga auau o nga ID whakanui-aunoa.

C*Kotahi

No reira i whanau mai he DBMS hou C*Kotahi, e toru nga momo pona tūmau:

  • Rokiroki – (tata) nga tūmau Cassandra paerewa te kawenga mo te rokiroki raraunga ki nga kōpae o te rohe. I te piki haere o te uta me te rōrahi o te raraunga, ka taea te whakareri i te rahinga ki te tekau me te rau.
  • Kairuruku tauwhitinga - whakarite i te mahia o nga whakawhitinga.
  • Ko nga kaihoko he kaiwhakarato tono e whakatinana ana i nga mahi pakihi me te timata i nga whakawhitinga. He maha nga mano o nga kaihoko penei.

NewSQL = NoSQL+ACID

Ko nga tūmau o nga momo katoa he waahanga o te roopu noa, whakamahia te kawa karere a Cassandra o roto ki te whakawhitiwhiti korero ki a raatau ano whakahōhonu mo te whakawhiti korero roopu. Ma te Heartbeat, ka ako nga kaitoro mo nga rahunga tahi, ka pupuri i te aronuinga raraunga kotahi - nga ripanga, te hanga me te tukurua; kaupapa wehewehe, topology cluster, etc.

Kaihoko

NewSQL = NoSQL+ACID

Engari i nga taraiwa paerewa, ka whakamahia te aratau Fat Client. Ko taua node e kore e penapena raraunga, engari ka taea te mahi hei kairuruku mo te tono tono, ara, ko te Kiritaki tonu hei kairuruku mo ana tono: ka patai ia i nga tauira rokiroki me te whakatau i nga raruraru. Ehara tenei i te mea pono ake me te tere atu i te taraiwa paerewa, e hiahia ana ki te whakawhitiwhiti korero me te kaiwhakahaere mamao, engari ka taea hoki e koe te whakahaere i te tuku tono. I waho o te tauwhitinga e tuwhera ana ki te kiritaki, ka tukuna nga tono ki nga whare putunga. Mena kua whakatuwherahia e te kaihoko tetahi tauwhitinga, ka tukuna nga tono katoa i roto i te tauwhitinga ki te kairuruku tauwhitinga.
NewSQL = NoSQL+ACID

C*Kotahi Kairuruku Whakawhitiwhiti

Ko te kairuruku tetahi mea i whakatinanahia e matou mo C*One mai i te timatanga. Kei a ia te kawenga mo te whakahaere i nga tauwhitinga, nga kati, me te raupapa e tono ai nga whakawhitinga.

Mo ia tauwhitinga ratonga, ka mahia e te kairuruku he tohu waahi: he nui ake ia tauwhitinga ka whai ake i te tauwhitinga o mua. I te mea ko te punaha whakatau pakanga a Cassandra kei runga i nga tohu wa (o nga rekoata taupatupatu e rua, ko te mea whai tohu wa hou ka kiia ko naianei), ka whakatauhia te pakanga mo te tauwhitinga ka whai ake. Koia i whakatinanahia e matou Maataki Lamport - he huarahi iti ki te whakatau i nga raruraru i roto i te punaha toha.

Maukati

Hei whakarite i te noho wehe, i whakatau matou ki te whakamahi i te tikanga ngawari - raka pessimistic i runga i te matua matua o te rekoata. Arā, i roto i te tauwhitinga, me raka te rekoata i te tuatahi, katahi ka panui, whakarereke, ka tiakina. I muri noa i te mahi angitu ka taea te wetewete i tetahi rekoata kia taea ai e nga tauwhitinga whakataetae te whakamahi.

Ko te whakatinana i taua raka he ngawari noa i roto i te taiao kore tohatoha. I roto i te punaha tohatoha, e rua nga waahanga matua: ko te whakatinana i te kati kua tohatohahia ki runga i te roopu, ka tohatoha ranei i nga whakawhitinga kia taea ai e te kairuruku te mahi i nga wa katoa.

Mai i roto i to maatau kua tohatohahia nga raraunga i roto i nga roopu o nga whakawhitiwhitinga rohe i roto i te SQL, i whakatauhia kia tohua nga roopu tauwhitinga a-rohe ki nga kairuruku: kotahi te kairuruku e mahi ana i nga whakawhitinga katoa me nga tohu mai i te 0 ki te 9, te tuarua - me nga tohu mai i te 10 ki te 19, me etahi atu. Ko te mutunga mai, ka noho ia o nga take kairuruku hei rangatira mo te roopu tauwhitinga.

Na ka taea te whakatinana raka i roto i te ahua o te HashMap banal i roto i te mahara o te kairuruku.

Nga rahunga o te Kairuruku

I te mea ko tetahi kairuruku anake e mahi ana i te roopu o nga tauwhitinga, he mea nui kia tere te whakatau i te meka o tana korenga kia mutu te mahi tuarua ki te whakahaere i te tauwhitinga. Kia tere, kia pono hoki tenei, i whakamahia e matou he kawa paoro whakarongo a te koorum:

E rua neke atu nga pokapu kairuruku e whakahaerehia ana e ia pokapū raraunga. I ia wa, ka tukuna e ia kairuruku he karere e pa ana ki te ngakau ki etahi atu kairuruku me te whakamohio ki a raatau mo ana mahi, tae atu ki nga karere e pa ana ki te ngakau i riro mai i nga kairuruku o te roopu i tera wa.

NewSQL = NoSQL+ACID

Ma te whiwhi korero rite mai i etahi atu hei wahanga o o ratou karere e pa ana te ngakau, ka whakatauhia e ia kairuruku ko wai nga pona kahui e mahi ana me te kore e mahi ana, e aratakina ana e te maataapono o te koorum: mena kua whiwhi korero a te node X mai i te nuinga o nga pona kei roto i te roopu mo te tikanga noa. te whiwhinga o nga karere mai i te pona Y, katahi ka mahi a Y. He rereke ano, i te wa e korero ana te nuinga i nga karere ngaro mai i te pona Y, katahi ka whakaae a Y. He mea miharo mena ka whakamohio te koorum ki te node X kua kore ia e whiwhi karere mai i a ia, katahi ano ka whakaaro a node X kua rahua.

Ka tukuna nga karere o te ngakau me te auau teitei, tata ki te 20 nga wa ia hekona, me te waa 50 ms. I Java, he uaua ki te whakapumau i te whakautu tono i roto i te 50 ms na te rite o te roa o nga okiokinga na te kaikohi paru. I taea e matou te whakatutuki i tenei wa whakautu ma te whakamahi i te kaikohi paru G1, e taea ai e matou te tautuhi i te whaainga mo te roanga o nga okiokinga GC. Heoi, i etahi wa, he uaua, ka mutu te kaikohi i te neke atu i te 50 ms, tera pea ka kitea he he. Kia kore ai e puta, karekau te kairuruku e whakaatu i te korenga o te node mamao i te wa e ngaro atu ai te panui o te manawa tuatahi mai i a ia, mena kua ngaro etahi o te rarangi. ms.

Engari kaore i te nui ki te mohio wawe ko tehea te pona kua mutu te mahi. Me mahi tatou mo tenei.

Rahui

Ko te kaupapa matarohia ka uru, ki te kore he rangatira, ka tiimata he pooti hou ma te whakamahi i tetahi o huatau ao katoa hātepe hātepe. Heoi ano, he raruraru rongonui o aua momo hātepe e pa ana ki te whakakotahitanga o te wa me te roa o te mahi pooti. I taea e matou te karo i etahi atu whakaroa ma te whakamahi i te kaupapa whakakapi kairuruku i roto i te whatunga hono katoa:

NewSQL = NoSQL+ACID

Me kii e hiahia ana matou ki te whakahaere i tetahi tauwhitinga i roto i te roopu 50. Me whakatau i mua i te kaupapa whakakapi, ara, ko nga waahanga ka mahi i nga whakawhitinga i roto i te roopu 50 ki te kore te kaiwhakahaere matua. Ko ta matou whainga ko te pupuri i nga mahi a te punaha mena ka rahua te pokapu raraunga. Kia whakatauhia ko te rahui tuatahi he pona mai i tetahi atu pokapu raraunga, ko te rahui tuarua he pona mai i te tuatoru. Kia kotahi te kowhiringa o tenei kaupapa, kare e huri kia huri ra ano te topology o te tautau, ara, kia uru mai nga pona hou ki roto (he tino uaua ka tupu). Ko te tikanga mo te kowhiri i te rangatira kaha hou mena ka taka te mea tawhito ka penei tonu: ko te rahui tuatahi ka noho hei rangatira kaha, a ki te mutu te mahi, ka noho te rahui tuarua hei rangatira kaha.

Ko tenei kaupapa he pono ake i te algorithm o te ao, na te mea ki te whakahohe i tetahi rangatira hou he nui ki te whakatau i te kore o te tawhito.

Engari me pehea e mohio ai nga kaihoko ko wai te rangatira e mahi ana inaianei? Kaore e taea te tuku korero ki nga mano o nga kaihoko i roto i te 50 ms. Ka taea he ahuatanga ka tukuna e te kaihoko he tono ki te whakatuwhera i tetahi tauwhitinga, kaore ano i te mohio kua kore tenei rangatira e mahi, ka mutu te tono. Kia kore ai e puta, ka tuku tono nga kaihoko ki te whakatuwhera i tetahi tauwhitinga ki te rangatira o te roopu me ana rahui e rua i te wa kotahi, engari ko te rangatira kaha i tenei wa ka whakautu ki tenei tono. Ka tukuna e te kiritaki nga korero katoa i muri mai i roto i te tauwhitinga me te rangatira kaha anake.

I whakawhiwhia e nga rangatira o nga rangatira nga tono mo nga whakawhitiwhitinga ehara i a raatau ki te rarangi o nga whakawhitinga kaore i whanau, ka penapenahia mo etahi wa. Mena ka mate te rangatira kaha, ka tono te rangatira hou ki te whakatuwhera i nga whakawhitinga mai i tana rarangi me te whakautu ki te kaihoko. Mena kua whakatuwherahia e te kaihoko tetahi tauwhitinga me te rangatira tawhito, ka kore e arohia te whakautu tuarua (a, ka kitea, kaore e oti te mahi pera ka tukuna ano e te kaihoko).

Me pehea te mahi o te tauwhitinga

Me kii ka tukuna he tono e te kaihoko ki te kairuruku kia whakatuwherahia he tauwhitinga mo taua hinonga penei me te mea penei me te matua matua. Ka maukatihia e te kairuruku tenei hinonga ka tuu ki roto i te ripanga maukati hei maumahara. Mena e tika ana, ka panui te kairuruku i tenei hinonga mai i te rokiroki me te penapena i nga raraunga ka puta i roto i te ahua tauwhitinga i roto i te mahara o te kairuruku.

NewSQL = NoSQL+ACID

Ina hiahia te kiritaki ki te huri i nga raraunga i roto i te tauwhitinga, ka tukuna he tono ki te kairuruku ki te whakarereke i te hinonga, ka waiho e te kairuruku nga raraunga hou ki te ripanga mana tauwhitinga hei maharatanga. Ka oti te tuhi - karekau he rekoata ki te rokiroki.

NewSQL = NoSQL+ACID

Ina tono te kiritaki i ana ake raraunga whakarereke hei waahanga o te tauwhitinga hohe, ka penei te mahi a te kairuruku:

  • mena kei te tauwhitinga te ID, katahi ka tangohia nga raraunga mai i te mahara;
  • ki te kore he ID i roto i te mahara, ka panuihia nga raraunga ngaro mai i nga kohinga rokiroki, ka honoa ki era kua maumahara, ka tukuna te hua ki te kaihoko.

No reira, ka taea e te kiritaki te panui i ona ake huringa, engari kaore etahi atu o nga kaihoko e kite i enei huringa, na te mea kei te rongoa anake i roto i te maharatanga o te kairuruku, kaore ano i roto i nga kohinga Cassandra.

NewSQL = NoSQL+ACID

I te wa e tukuna ana e te kaihoko, ko te kawanatanga kei roto i te mahara o te ratonga ka tiakina e te kairuruku i roto i te puranga kua tohua, ka tukuna hei puranga kua tuhia ki te rokiroki Cassandra. Ka mahia e nga toa nga mea katoa e tika ana kia pai ai te tono o tenei kete (katoa), ka whakahoki i te whakautu ki te kairuruku, nana i tuku nga raka me te whakau i te angitu o te tauwhitinga ki te kaihoko.

NewSQL = NoSQL+ACID

A, ki te hoki whakamuri, ko te kairuruku anake me wewete te mahara e nohoia ana e te ahua tauwhitinga.

Ko te hua o nga whakapainga i runga ake nei, i whakatinanahia e matou nga maataapono ACID:

  • Atomicity. He kupu taurangi tenei karekau he tauwhitinga ka tuhia ki roto i te punaha; ka oti katoa ana mahi iti, karekau ranei e oti. Ka piri matou ki tenei maataapono na roto i te puranga kua tuhia ki Cassandra.
  • Te riterite. Ia tauwhitinga angitu, ma te whakamaramatanga, ka tuhia nga hua whaimana anake. Mena, i muri i te whakatuwheratanga o te tauwhitinga me te mahi i tetahi waahanga o nga mahi, ka kitea he muhu te hua, ka mahia he hurihanga.
  • Wehenga. Ina mahia he tauwhitinga, kaua e pa atu nga tauwhitinga kotahi ki tana putanga. Ko nga tauwhitinga whakataetae ka wehea ma te whakamahi i nga kati pessimistic i runga i te kairuruku. Mo nga panui i waho o te tauwhitinga, ka kitea te maataapono wehe i te taumata Panui Panui.
  • Te Taeretanga. Ahakoa nga raruraru i nga taumata iti-te pouri o te punaha, te rahunga o nga taputapu—me pupuri tonu nga huringa i mahia e te tauwhitinga kua oti pai ina timata nga mahi.

Te panui ma nga tohu

Me tango he ripanga ngawari:

CREATE TABLE photos (
id bigint primary key,
owner bigint,
modified timestamp,
…)

He ID (matua matua), rangatira me te ra whakarereke. Me tono he tono tino ngawari - kowhiria nga raraunga mo te rangatira me te ra huringa "mo te ra whakamutunga".

SELECT *
WHERE owner=?
AND modified>?

Kia tere te tukatuka i taua patai, i roto i te SQL DBMS matarohia me hanga e koe he taurangi ma nga pou (rangatira, kua whakarereketia). Ka taea e taatau te mahi i tenei, na te mea kei a maatau nga tohu ACID inaianei!

Taupū i C*One

He ripanga puna me nga whakaahua kei roto ko te ID rekoata te matua matua.

NewSQL = NoSQL+ACID

Mo te taurangi, ka hangaia e C*One he ripanga hou he kape o te taketake. He ōrite te kī ki te kīanga taupū, kei roto hoki te kī matua o te rekoata mai i te ripanga pūtake:

NewSQL = NoSQL+ACID

Inaianei ko te patai mo te "rangatira mo te ra whakamutunga" ka taea te tuhi ano mai i tetahi atu ripanga:

SELECT * FROM i1_test
WHERE owner=?
AND modified>?

Ko te rite o nga raraunga i roto i nga whakaahua ripanga puna me te ripanga taupū i1 ka mau tonu e te kairuruku. I runga i te raupapa raraunga anake, ka tae mai he huringa, ka mahia, ka penapenahia e te kairuruku he huringa ehara i te ripanga matua anake, engari i roto i nga kape. Karekau he mahi taapiri e mahia ana i runga i te ripanga taurangi, karekau e panuitia nga raarangi, karekau hoki e whakamahia nga raka. Arā, ko te taapiri i nga taurangi ka pau tata kore rawa, karekau he painga ki te tere o te tono whakarereke.

Ma te whakamahi i te ACID, i taea e matou te whakatinana i nga tohu tohu-rite SQL. He rite tonu, he tauine, he tere, he tito, he mea hanga ki te reo patai CQL. Karekau he huringa ki te waehere tono hei tautoko i nga taurangi. He ngawari noa nga mea katoa i roto i te SQL. Ko te mea nui, kaore nga tohu e pa ki te tere o nga whakarereketanga ki te ripanga tauwhitinga taketake.

He aha te mea i tupu

I whakawhanakehia e matou a C*One e toru tau ki muri ka whakarewahia ki te mahi arumoni.

He aha ta tatou i whiwhi i te mutunga? Kia arotakehia tenei ma te whakamahi i te tauira o te tukatuka whakaahua me te punaha rokiroki, tetahi o nga momo raraunga tino nui i roto i te whatunga hapori. Kaore matou e korero ana mo nga tinana o nga whakaahua ake, engari mo nga momo korero-meta katoa. Inaianei kei a Odnoklassniki mo te 20 piriona nga rekoata penei, ka whakahaerehia e te punaha te 80 mano tono panui mo ia hēkona, tae atu ki te 8 mano tauhokohoko ACID ia rua e pa ana ki te whakarereketanga raraunga.

I te wa i whakamahia e matou te SQL me te tauwehe tukurua = 1 (engari i te RAID 10), i penapenahia te whakaahua metainformation ki runga i te kahui tino waatea o nga miihini 32 e whakahaere ana i te Microsoft SQL Server (me nga taapiri 11). 10 nga tūmau i tohatohahia mo te penapena i nga taapiri. E 50 nga motuka utu nui. I te wa ano, ka whakahaerehia te punaha i runga i te kawenga kua tohua, kaore he rahui.

Whai muri i te hekenga ki te punaha hou, ka whiwhi matou i te tauwehe tukurua = 3 - he kape ki ia pokapū raraunga. Kei roto i te punaha nga kohinga rokiroki 63 Cassandra me nga miihini kairuruku e 6, mo te katoa o nga kaitoro 69. Engari he iti ake te utu o enei miihini, ko te utu katoa ko te 30% o te utu o te punaha SQL. I te wa ano, ka mau te kawenga ki te 30%.

Na te whakaurunga o C*One, kua heke ano te torohūtanga: i roto i te SQL, he 4,5 ms te roa o te mahi tuhi. I roto i te C*One - tata ki te 1,6 ms. Ko te roa o te tauwhitinga he iti iho i te 40 ms, ka oti te mahi i roto i te 2 ms, ko te roa o te panui me te tuhi kei te toharite 2 ms. 99 ōrau - 3-3,1 ms anake, kua heke te maha o nga wa mokemoke ma te 100 nga wa - na te nui o te whakamahi o te whakaaro.

I tenei wa, kua whakakorehia te nuinga o nga waahanga SQL Server; kei te whakawhanakehia nga hua hou ma te whakamahi C*One anake. I urutau matou C*One ki te mahi i roto i to maatau kapua kotahi-kapua, i taea ai te tere ake i te horahanga o nga tautau hou, te whakangawari i te whirihoranga me te mahi aunoa. Ki te kore te waehere puna, ka nui ake te uaua me te uaua ki te mahi.

Inaianei kei te mahi matou ki te whakawhiti i etahi atu waahi rokiroki ki te kapua - engari he korero rerekee tera.

Source: will.com

Tāpiri i te kōrero