NewSQL = NoSQL + ACID

NewSQL = NoSQL + ACID
Seia oʻo mai talu ai nei, o Odnoklassniki na teuina e uiga i le 50 TB o faʻamaumauga faʻatautaia i le taimi moni i le SQL Server. Mo sea voluma, e toetoe lava a le mafai ona tuʻuina atu vave ma faʻatuatuaina, ma e oʻo lava i faʻamaumauga o faʻamaumauga faʻaletonu-faʻapalepale avanoa e faʻaaoga ai se SQL DBMS. E masani lava, i ia tulaga, o se tasi o le NoSQL teuina e faʻaaogaina, ae le o mea uma e mafai ona tuʻuina atu i le NoSQL: o nisi faʻalapotopotoga e manaʻomia faʻamaoniga fefaʻatauaʻiga ACID.

O lenei mea na taʻitaʻia ai i matou i le faʻaogaina o le NewSQL teuina, o lona uiga, o se DBMS e tuʻuina atu le faʻapalepale sese, scalability ma le faʻatinoga o faiga NoSQL, ae i le taimi lava e tasi o le tausia o faʻamaoniga ACID masani i faiga masani. E itiiti lava faiga fa'apisinisi o lenei vasega fou, o lea na matou fa'atinoina ai lea faiga ma tu'u i totonu o pisinisi fa'apisinisi.

E fa'afefea ma le mea na tupu - faitau i lalo o le tipi.

I aso nei, o le au maimoa masina o Odnoklassniki e sili atu i le 70 miliona tagata asiasi tulaga ese. Matou Ua matou i totonu o le lima pito i luga tele feso'ota'iga fa'aagafesootai i le lalolagi, ma i totonu o le luasefulu nofoaga e fa'aalu ai e tagata fa'aoga le tele o taimi. O le OK infrastructure e faʻatautaia ai le maualuga o uta: sili atu ma le miliona HTTP talosaga / sec i luma. O vaega o se va'a fa'aumau e sili atu i le 8000 vaega o lo'o latalata i le tasi ma le isi - i totonu o nofoaga autu fa'amaumauga e fa a Moscow, lea e fa'atagaina ai se feso'otaiga vavave e itiiti ifo i le 1 ms i le va oi latou.

Sa matou faʻaaogaina Cassandra talu mai le 2010, amata ile version 0.6. I aso nei e tele taseni fuifui o loo faagaoioia. Ole fa'atosina vave e fa'agasolo ai le silia ma le 4 miliona fa'agaioiga ile sekone, ma le tele o faleoloa 260 TB.

Peita'i, o fuifui masani ia NoSQL fa'aaogaina mo le teuina vaivai le faamaopoopoina fa'amaumauga. Matou te mananaʻo e sui le faʻamaumauga autu tumau, Microsoft SQL Server, lea na faʻaaogaina talu mai le faavaeina o Odnoklassniki. O le teuina e aofia ai le sili atu i le 300 SQL Server Standard Edition machines, lea e aofia ai le 50 TB o faʻamaumauga - pisinisi pisinisi. O nei fa'amaumauga e fa'aleleia o se vaega o fefa'atauaiga a le ACID ma mana'omia maualuga tumau.

Ina ia tufatufa faʻamatalaga i luga ole SQL Server nodes, sa matou faʻaogaina uma i luga ma faʻalava vaeluaga (shading). I le tala faasolopito, sa matou fa'aogaina se faiga fa'asoa fa'amatalaga faigofie: o fa'alapotopotoga ta'itasi e feso'ota'i ma se fa'ailoga - o se galuega a le fa'alapotopotoga ID. O faʻalapotopotoga faʻatasi ma faʻailoga tutusa na tuʻuina i luga o le server SQL tutusa. Na fa'atinoina le va'aiga fa'apitoa-fa'apitoa ina ia fetaui lelei fa'amaufa'ailoga autu ma fa'amaumauga a tamaiti ma tu'u i luga o le 'au'aunaga lava e tasi. I totonu o fesoʻotaʻiga faʻaagafesootai, toetoe lava o faʻamaumauga uma e gaosia e fai ma sui o le tagata faʻaoga, o lona uiga o faʻamatalaga uma a tagata faʻaoga i totonu o le tasi subsystem galue o loʻo teuina i luga o le tasi server. O lona uiga, o se pisinisi fefaʻatauaʻiga e toetoe lava a aofia ai laulau mai le tasi SQL server, lea na mafai ai ona faʻamautinoa le faʻaogaina o faʻamaumauga e faʻaaoga ai fefaʻatauaiga a le ACID i le lotoifale, e aunoa ma le manaʻomia e faʻaoga. telegese ma le faatuatuaina fa'asoa fa'atauga ACID.

Faʻafetai i le faʻasoa ma faʻavave le SQL:

  • Matou te le fa'aogaina fa'agata mai fafo, talu ai o le taimi e mafai ai ona tu'u le fa'ailoga ID i luga o se isi server.
  • Matou te le faʻaogaina faʻatonuga ma faʻaoso ona o le uta faaopoopo i luga o le DBMS CPU.
  • Matou te le faʻaogaina le JOINs ona o mea uma o loʻo i luga ma le tele o faitauga faʻafuaseʻi mai le disk.
  • I fafo atu o se fefaʻatauaʻiga, matou te faʻaogaina le tulaga faʻavae Read Uncommitted e faʻaitiitia ai faʻalavelave.
  • Matou te faia na o fefaʻatauaiga pupuu (i le averesi e puʻupuʻu nai lo le 100 ms).
  • Matou te le faʻaogaina le tele-laina UPDATE ma DELETE ona o le tele o faʻalavelave - matou te faʻafouina naʻo le tasi faʻamaumauga i le taimi.
  • Matou te faia i taimi uma fesili i luga o fa'asino igoa - o se fesili e iai se ata atoa o le laulau fa'ata'ita'iga mo i matou o lona uiga o le fa'aputuina o fa'amaumauga ma fa'aletonu ai.

O nei laʻasaga na faʻatagaina ai matou e faʻapipiʻi toetoe lava maualuga le faʻatinoga mai sapalai SQL. Peitaʻi, na atili ai ona faateteleina faafitauli. Sei o tatou vaai ia i latou.

Fa'afitauli ile SQL

  • Talu ai sa matou fa'aogaina le fa'asoaina e le tagata lava ia, o le fa'aopoopoina o fasipepa fou sa faia ma le lima e le au fa'atonu. I le taimi atoa nei, e le'o fa'atinoina ni talosaga e fa'atatau i fa'amaumauga.
  • A o faʻatupulaia le numera o faʻamaumauga i le laulau, faʻaitiitia le saoasaoa o le faʻaofiina ma le suiga pe a faʻaopoopo faʻamatalaga i se laulau o loʻo i ai, o le saoasaoa e pa'ū i se faʻavae ma le toe faʻatulagaina o faʻamatalaga e tupu i lalo.
  • O le i ai o sina vaega itiiti o Windows mo SQL Server i le gaosiga e faigata ai le puleaina o atinaʻe

Ae o le faafitauli autu

faapalepale sese

O le SQL server masani e le lelei le fa'apalepale. Fa'apea e na'o le tasi lau 'au'aunaga fa'amaumauga, ma e ta'i ta'i tolu tausaga e fa'aletonu. I le taimi lea o loʻo i lalo le saite mo le 20 minute, lea e talia. Afai e 64 au 'auʻaunaga, ona paʻu lea o le saite i lalo ile tolu vaiaso. Ma afai e 200 au 'auʻaunaga, ona le aoga lea o le saite i vaiaso uma. O le faafitauli lea.

O le a se mea e mafai ona fai e faʻaleleia ai le faʻapalepale sese o se SQL server? Ua valaaulia i tatou e Wikipedia e fausia fa'apipi'i maua tele: i le tulaga o le toilalo o soʻo se vaega o loʻo i ai se faʻamaumauga.

O lenei mea e manaʻomia ai se vaʻa o mea taugata: le tele o kopi, fiber opitika, faʻasoa faʻasoa, ma le faʻapipiʻiina o se faʻaagaaga e le faʻamoemoeina: e tusa ma le 10% o suiga e faʻamaeʻa i le toilalo o le node faʻasao e pei o se nofoaafi i tua o le node autu.

Ae o le fa'aletonu autu o sea fuifui tele avanoa e leai se avanoa pe a fai e le manuia le nofoaga autu o fa'amaumauga o lo'o i ai. Odnoklassniki e fa nofoaga autu o faʻamaumauga, ma e manaʻomia ona faʻamautinoa le faʻaogaina pe a tupu se toilalo atoatoa i se tasi oi latou.

Mo lenei mea e mafai ona matou faʻaaogaina Matai Tele fa'asologa ua fausia ile SQL Server. O lenei fofo e sili atu ona taugata ona o le tau o le polokalama ma e mafatia i faʻafitauli taʻutaʻua i le toe faʻafoʻi - faʻatuai faʻalavelave faʻalavelave faʻatasi ma faʻasologa faʻatasi ma faʻatuai i le faʻaogaina o faʻasologa (ma, o se taunuuga, leiloa suiga) faʻatasi ai ma le faʻaogaina o le asynchronous. O le faauigaina fo'ia fete'ena'iga i tusilima e matua'i fa'aoga uma lava lenei filifiliga ia i matou.

O nei faʻafitauli uma e manaʻomia ai se fofo faʻapitoa, ma na amata ona matou iloiloina auiliili. O iinei e tatau ona tatou faamasani i le mea e masani ona fai e SQL Server - fefaʻatauaiga.

Fa'atauga faigofie

Sei o tatou mafaufau i le fefaʻatauaʻiga sili ona faigofie, mai le vaaiga a se tagata fai polokalame SQL: faʻaopoopoina se ata i se album. O tusi ma ata o lo'o teuina i papatusi eseese. O le album o loʻo i ai se faʻataʻitaʻiga ata lautele. Ona vaevaeina lea o sea fefaʻatauaiga i laasaga nei:

  1. Matou te lokaina le album i le ki.
  2. Fausia se tala i le laulau ata.
  3. Afai o le ata o loʻo i ai se tulaga faʻalauaʻitele, ona faʻaopopo lea o se faʻataʻitaʻiga ata lautele i le album, faʻafouina le faʻamaumauga ma tuʻuina le fefaʻatauaiga.

Pe i le pseudocode:

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

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

TX.commit();

Matou te vaʻaia o le faʻataʻitaʻiga masani o fefaʻatauaiga faapisinisi o le faitau lea o faʻamatalaga mai le faʻamaumauga i totonu o le mafaufau o le server application, suia se mea ma faʻasaoina tau fou i tua i le database. E masani lava i sea fefaʻatauaiga matou te faʻafouina le tele o faʻalapotopotoga, tele laulau.

A fa'atino se fefa'ataua'iga, e mafai ona tupu fa'atasi le suiga fa'atasi o fa'amatalaga tutusa mai se isi faiga. Mo se faʻataʻitaʻiga, e mafai e Antispam ona filifili e masalosalo le tagata faʻaoga ma o le mea lea e le tatau ona toe faʻasalalau uma ata a le tagata faʻaoga, e manaʻomia ona lafo mo le faʻaleleia, o lona uiga o le suia o le photo.status i se isi tau ma tape le faʻatau tutusa. E manino lava, afai e tupu lenei taʻaloga e aunoa ma se faʻamaoniga o le atomicity o le faʻaaogaina ma le faʻaesea o suiga tauva, pei o le ACID, o le taunuuga o le a le o le mea e manaʻomia - a le o le ata o le a faʻaalia le tau sese, pe le o ata uma o le a lafoina mo le faʻaleleia.

O le tele o tulafono tutusa, faʻaogaina pisinisi eseese i totonu o se fefaʻatauaiga, na tusia i le taimi atoa o Odnoklassniki. Faʻavae i luga o le poto masani o femalagaiga i NoSQL mai Le Tumau Mulimuli Matou te iloa o le luʻitau sili (ma le taimi faʻaalu) e sau mai le atinaʻeina o tulafono e faʻamautu ai faʻamaumauga. O le mea lea, na matou manatu o le manaʻoga autu mo le teuina fou o le tuʻuina atu lea mo fefaʻatauaiga moni ACID mo le faʻaogaina o le faʻaogaina.

O isi, e le itiiti ifo le taua, o manaʻoga o:

  • Afai e le manuia le nofoaga autu, e tatau ona avanoa uma le faitau ma le tusitusi i le teuina fou.
  • Fa'atumauina le saoasaoa o atina'e o lo'o iai nei. O lona uiga, pe a galue ma se fale teu oloa fou, e tatau ona tutusa le aofaʻi o le numera e le tatau ona faʻaopoopoina se mea i le fale teu oloa, atiina ae algorithms mo le foia o feteʻenaʻiga, tausia o faʻamatalaga lona lua, ma isi.
  • O le saoasaoa o le teuina fou e tatau ona maualuga tele, pe a faitau faʻamatalaga ma pe a faʻatautaia fefaʻatauaiga, o lona uiga o le aʻoga faigata, lautele, ae faʻagesegese fofo, e pei o, mo se faʻataʻitaʻiga, e le faʻaaogaina. faia vaega lua.
  • Fa'aliga otometi ile lele.
  • Fa'aaogaina o 'au'aunaga taugofie masani, e aunoa ma le mana'omia e fa'atau mea fa'apitoa.
  • Avanoa o le teuina o atinaʻe e kamupani atiaʻe. I se isi faaupuga, o le faʻamuamua na tuʻuina atu i fofo faʻapitoa poʻo punaoa tatala, sili atu i Java.

Fa'ai'uga, fa'ai'uga

Ile su'esu'eina o vaifofo talafeagai, na matou o'o mai ai i ni filifiliga fa'atusa se lua:

Muamua o le ave o soʻo se SQL server ma faʻatino le faʻapalepale manaʻomia, faʻaogaina o masini, faʻapipiʻi faʻalavelave, faʻafitauli feteʻenaʻiga ma tufatufaina, faʻalagolago ma vave fefaʻatauaiga ACID. Na matou fa'avasegaina lenei filifiliga e matua le taua tele ma fa'agata-faigaluega.

O le filifiliga lona lua o le ave lea o le teuina o NoSQL ua saunia ma le faʻaogaina o le faʻaogaina, o se fuifui failover, feteʻenaʻiga fofo, ma faʻatino fefaʻatauaiga ma SQL oe lava. I le tepa muamua, e oʻo lava i le galuega o le faʻatinoina o le SQL, ae le o le taʻua o fefaʻatauaiga a le ACID, e foliga mai o se galuega e tele tausaga. Ae na matou iloa ai o le seti o le SQL matou te faʻaaogaina i le faʻatinoga e mamao mai le ANSI SQL Cassandra CQL mamao mai ANSI SQL. I le vaʻavaʻai atu i le CQL, na matou iloa ai e fai lava si latalata i mea matou te manaʻomia.

Cassandra ma CQL

O lea la, o le a le mea manaia e uiga ia Cassandra, o a mea e mafai ona ia maua?

Muamua, o iinei e mafai ona e fatuina laulau e lagolagoina ituaiga faʻamatalaga eseese e mafai ona e faia FILIFILI poʻo FAʻATAU i luga o le ki autu.

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

Ina ia faʻamautinoa le tutusa o faʻamaumauga, faʻaaoga e Cassandra auala faalekorama. I le tulaga sili ona faigofie, o lona uiga pe a tuʻuina ni kopi se tolu o le laina tutusa i luga o nodes eseese o le fuifui, o le tusitusi e manatu e manuia pe afai o le tele o nodes (o lona uiga, lua mai le tolu) faʻamaonia le manuia o lenei galuega tusitusi. . Ole fa'amaumauga ole laina e fa'apea e fa'amautu pe a faitau, ole tele o pona na su'esu'eina ma fa'amaonia. O le mea lea, fa'atasi ai ma fa'atusa e tolu, fa'ato'a atoatoa ma vave fa'amaumauga fa'amaonia e fa'amaonia pe a le manuia le tasi node. O lenei faiga na mafai ai ona matou faʻatinoina se polokalame e sili atu ona faʻatuatuaina: lafo i taimi uma talosaga i faʻataʻitaʻiga uma e tolu, faʻatali mo se tali mai le lua sili ona vave. Ole tali tuai ole kopi lona tolu ua lafoa'i ile tulaga lea. O se pona e tuai ona tali atu e ono iai ni fa'afitauli ogaoga - taofi, lapisi lapisi i le JVM, toe fa'afo'i sa'o i le fatu Linux, fa'aletonu meafaigaluega, motusia mai le feso'otaiga. Ae ui i lea, e le afaina ai gaioiga a le kalani poʻo faʻamaumauga i soʻo se auala.

O le auala pe a tatou faʻafesoʻotaʻi ni pona se tolu ma maua se tali mai le lua e taʻua taumatematega: o se talosaga mo faʻataʻitaʻiga faʻaopoopo e lafoina e tusa lava pe leʻi "pa'ū".

O le isi faʻamanuiaga a Cassandra o le Batchlog, o se masini e faʻamautinoa ai o se vaega o suiga e te faia o loʻo faʻaaogaina atoatoa pe leai foi. Ole mea lea e mafai ai ona tatou foia A ile ACID - atomicity mai le pusa.

O le mea sili ona latalata i fefaʻatauaiga i Cassandra e taʻua o "fefa'ataua'iga mama". Ae latou te mamao mai "moni" fefaʻatauaiga a le ACID: o le mea moni, o se avanoa lenei e fai ai CAS i luga o faʻamaumauga mai naʻo le tasi faʻamaumauga, faʻaaoga maliega e faʻaaoga ai le mamafa mamafa Paxos protocol. O le mea lea, o le saoasaoa o ia fefaʻatauaiga e maualalo.

Le mea na matou misia i Cassandra

O lea la, e tatau ona matou faʻatinoina fefaʻatauaiga moni ACID i Cassandra. O le fa'aaogaina lea e faigofie ai ona fa'atino isi vaega talafeagai e lua o le DBMS masani: fa'asologa vave vave, lea e mafai ai ona tatou faia filifiliga fa'amaumauga e le gata i le ki autu, ma se fa'aputu masani o ID fa'aopoopo fa'ato'a fa'aopoopo.

C*Tasi

O lea na fanau mai ai se DBMS fou C*Tasi, e aofia ai ituaiga e tolu o nodes server:

  • Teuina - (toetoe lava) faʻamaumauga masani a Cassandra e nafa ma le teuina o faʻamaumauga i luga o tisiki i le lotoifale. A'o fa'atupula'ia le uta ma le tele o fa'amaumauga, e faigofie lava ona fa'ateleina le aofa'i i le fiasefulu ma le selau.
  • Fa'atonu fa'atauga - fa'amautinoa le fa'atinoina o fefa'atauaiga.
  • O tagata fa'atau o 'au'aunaga talosaga e fa'atino galuega fa'apisinisi ma amata fefa'ataua'iga. E mafai ona i ai le faitau afe o tagata fa'apena.

NewSQL = NoSQL + ACID

O 'au'aunaga o ituaiga uma o se vaega o se fuifui masani, fa'aoga le fa'asalalauga savali a Cassandra i totonu e feso'ota'i ai le tasi ma le isi ma faitatala mo le fesuia'i fa'amatalaga fa'afuifui. Fa'atasi ai ma le Heartbeat, e a'oa'o ai 'au'aunaga e uiga i fa'aletonu fa'atasi, tausia se fa'asologa o fa'amaumauga e tasi - laulau, o latou fausaga ma fa'asologa; faiga vaeluaga, vaega topology, ma isi.

Tagata faʻatau

NewSQL = NoSQL + ACID

Nai lo aveta'avale masani, fa'aoga Fat Client mode. O sea node e le teuina faʻamatalaga, ae mafai ona galue o se faʻatonu faʻatonuina o talosaga, o lona uiga, o le Client lava ia e galue o se faʻamaopoopo o ana talosaga: e fesiligia kopi faʻapipiʻi ma foia feeseeseaiga. E le gata ina sili atu le faʻatuatuaina ma vave nai lo le avetaʻavale masani, lea e manaʻomia ai fesoʻotaʻiga ma se faʻamaopoopo mamao, ae faʻatagaina foi oe e pulea le tuʻuina atu o talosaga. I fafo atu o se fefaʻatauaiga o loʻo tatala i luga o le kalani, o talosaga e lafo i fale teu oloa. Afai ua tatalaina e le kalani se fefaʻatauaiga, ona tuʻuina atu lea o talosaga uma i totonu o le fefaʻatauaiga i le faʻasalalauga faʻasalalauga.
NewSQL = NoSQL + ACID

C*One Fefa'ataua'iga Fa'amaopoopo

O le faamaopoopo o se mea na matou fa'atinoina mo C*One mai le amataga. E nafa ma le puleaina o fefaʻatauaiga, loka, ma le faʻatonuga o loʻo faʻaogaina ai fefaʻatauaiga.

Mo fefa'ataua'iga ta'itasi, e fa'atupuina e le fa'amaopoopo se fa'ailoga taimi: o fefa'ataua'iga ta'itasi e sili atu nai lo le fefa'ataua'iga muamua. Talu ai e fa'avae le faiga o fa'ai'uga fete'ena'i a Cassandra i fa'amaufa'ailoga taimi (e lua fa'amaumauga fete'ena'i, o le tasi e iai le fa'ailoga taimi fou e fa'apea o lo'o iai nei), o le a fo'ia i taimi uma le fete'ena'iga mo le fefa'ataua'iga mulimuli ane. Sa faapea ona matou faatinoina Uati Lamport - o se auala taugofie e foia ai feeseeseaiga i se faiga tufatufaina.

Loka

Ina ia mautinoa le faʻaesea, na matou filifili e faʻaoga le auala sili ona faigofie - loka pessimistic e faʻavae i luga o le ki autu o le faʻamaumauga. I se isi faaupuga, i se fefaʻatauaiga, e tatau ona loka muamua se faʻamaumauga, naʻo le faitau, suia, ma faʻasaoina. E na'o le mae'a ai o se tautinoga manuia e mafai ona tatala se fa'amaumauga ina ia mafai ai e fefa'ataua'iga fa'atauva ona fa'aogaina.

O le faʻatinoina o sea loka e faigofie i se siosiomaga e le tufatufaina. I totonu o se faʻasalalauga tuʻufaʻatasia, e lua filifiliga autu: pe faʻatino le loka tufatufaina i luga o le fuifui, poʻo le tufatufaina atu o fefaʻatauaiga ina ia faʻatautaia ai fefaʻatauaiga e aofia ai faʻamaumauga tutusa e le faʻamaopoopo tutusa.

Talu ai i la matou tulaga o faʻamatalaga ua uma ona tufatufa atu i vaega o fefaʻatauaiga i le lotoifale i SQL, na tonu ai e tuʻuina atu vaega o fefaʻatauaiga i le lotoifale i faʻamaopoopo: tasi le faamaopoopo e faia uma fefaʻatauaiga ma faʻailoga mai le 0 i le 9, o le lona lua - faʻatasi ai ma faʻailoga mai le 10 i le 19, ma faapena atu ai lava. O le i'uga, o mea fa'amaopoopo ta'itasi e avea ma matai o le vaega o fefa'atauaiga.

Ona mafai lea ona faʻaogaina loka i le tulaga o se banal HashMap i le manatuaga o le faamaopoopo.

Fa'aletonu le fa'atonu

Talu ai ona o le tasi faamaopoopo e naʻo le tautuaina o se vaega o fefaʻatauaiga, e taua tele le vave iloa o le mea moni o lona toilalo ina ia faʻaumatia le taumafaiga lona lua e faʻatino le fefaʻatauaiga. Ina ia faia lenei mea vave ma faʻatuatuaina, sa matou faʻaogaina le fesoʻotaʻiga atoatoa a le korama faʻalogo faʻalogo:

O nofoaga autu ta'itasi e fa'afeiloa'i ia le itiiti ifo ma le lua nodes faamaopoopo. Mai lea taimi i lea taimi, e auina atu e le faamaopoopo ta'itasi se fe'au tata o le fatu i isi faamaopoopo ma ta'u atu ia i latou le faagaioiina, faapea foi ma fe'au tata o le fatu na maua mai ai le faamaopoopo o le fuifui i le taimi mulimuli.

NewSQL = NoSQL + ACID

O le mauaina o faamatalaga faapena mai isi e avea o se vaega o a latou savali o le tata o le fatu, e filifili e taitai faamaopoopo taitasi mo ia lava po o fea nodes fuifui o loo faagaoioia ae po o fea e le o galue, taialaina e le mataupu faavae o le korama: afai na maua e le node X faamatalaga mai le tele o nodes i le fuifui e uiga i le masani. mauaina o fe'au mai node Y, ona , Y galue. Ma le isi itu, o le taimi lava e lipotia ai e le toʻatele o feʻau misi mai le node Y, ona teena lea e Y. E fia iloa pe afai e logoina e le korama le node X e le o toe mauaina ni savali mai ai, ona manatu ai lea o le node X lava ia ua le manuia.

O fe'au o le tātā o le fatu e lafo i le tele o taimi, e tusa ma le 20 taimi i le sekone, ma le vaitaimi e 50 ms. I Java, e faigata ona faʻamautinoa le tali atu o talosaga i totonu ole 50 ms ona o le umi faʻatusatusa o taofi e mafua mai i le aoina o lapisi. Na mafai ona matou ausia lenei taimi tali i le faʻaaogaina o le G1 garbage collector, lea e mafai ai ona matou faʻamaonia se sini mo le umi o GC taofi. Ae ui i lea, o nisi taimi, e seasea lava, e malolo le tagata aoina e sili atu i le 50 ms, lea e mafai ona oʻo atu ai i se suʻesuʻega sese. Ina ia taofia lenei mea mai le tupu, e le lipotia e le faamaopoopo se faaletonu o se node mamao pe a mou atu le savali muamua o le fatu fatu, pe afai ua mou ese atu nisi o le auala lea na mafai ai ona matou iloa le faaletonu o le node coordinator i le 200 ms.

Ae e le lava le vave malamalama po o le fea node ua taofia le galue. E tatau ona tatou faia se mea e uiga i lenei mea.

Fa'asao

O le faiga masani e aofia ai, i le tulaga o se matua toilalo, amataina se faiga palota fou e faʻaaoga ai se tasi fa'alelei lautele algorithms. Ae ui i lea, o ia algorithms o loʻo i ai faʻafitauli taʻutaʻua i le taimi faʻatasi ma le umi o le faiga palota lava ia. Na mafai ona matou aloese mai na faʻatuai faʻaopoopo e faʻaaoga ai se polokalame sui faʻamaopoopo i se fesoʻotaʻiga fesoʻotaʻi atoatoa:

NewSQL = NoSQL + ACID

Seʻi tatou fai atu tatou te mananaʻo e faʻatino se fefaʻatauaiga i le vaega 50. Sei o tatou fuafua muamua le suiga o le polokalame, o lona uiga, po o fea nodes o le a faʻataunuʻuina fefaʻatauaiga i le vaega 50 pe a tupu le toilalo o le faamaopoopo autu. O la matou fa'amoemoe o le fa'atumauina o le fa'aogaina o faiga i le tulaga o se fa'aletonu nofoaga autu o fa'amaumauga. Sei o tatou fuafua o le fa'aagaga muamua o le a avea ma node mai se isi nofoaga autu o fa'amaumauga, ma le fa'aagaga lona lua o le a avea ma node mai le lona tolu. O lenei polokalame e filifilia tasi ma e le suia seʻia oʻo ina suia le topology o le fuifui, o lona uiga, seʻia oʻo i totonu o nodes fou (lea e seasea tupu). O le faʻagasologa mo le filifilia o se matai malosi fou pe a le manuia le mea tuai e masani lava ona faʻapea: o le faʻaagaga muamua o le a avea ma matai malosi, ma afai e le toe galue, o le faʻaagaga lona lua o le a avea ma matai malosi.

O lenei polokalame e sili atu le faʻatuatuaina nai lo le lautele algorithm, talu ai o le faʻagaoioia o se matai fou e lava lea e fuafua ai le toilalo o le tuai.

Ae fa'afefea ona malamalama tagata fa'atau po'o fea matai o lo'o galue nei? E le mafai ona tuʻuina atu faʻamatalaga i le faitau afe o tagata faʻatau ile 50 ms. E mafai ona tupu se tulaga pe a tuʻuina atu e le tagata faʻatau se talosaga e tatala se fefaʻatauaiga, ae leʻi iloa e le o toe galue lenei matai, ma o le a alu le talosaga. Ina ia taofia lenei mea mai le tupu, e tuʻuina atu e tagata faʻatau se talosaga e tatala se fefaʻatauaiga i le matai vaega ma ana tupe faʻaagaga i le taimi e tasi, ae naʻo le tasi o loʻo galue malosi i le taimi nei e tali mai i lenei talosaga. O le a faia uma e le kalani feso'ota'iga mulimuli ane i totonu o le fefa'atauaiga na'o le matai malosi.

Backup masters place mauaina talosaga mo fefaʻatauaiga e le o latou i le laina o fefaʻatauaiga e leʻi fananau mai, lea e teuina ai mo sina taimi. Afai e maliu le matai malosi, e talosaga le matai fou e tatala fefaʻatauaiga mai lona laina ma tali atu i le kalani. Afai ua uma ona tatalaina e le kalani se fefaʻatauaiga ma le matai tuai, ona le amanaʻiaina lea o le tali lona lua (ma, e manino lava, o sea fefaʻatauaiga o le a le maeʻa ma o le a toe faia e le kalani).

Auala e galue ai le fefaʻatauaiga

Fa'apea na lafo atu e le tagata o tausia se talosaga i le faamaopoopo e tatala ai se fefa'ataua'iga mo se fa'apena ma se fa'alapotopotoga fa'atasi ai ma lea ma lea ki autu. E loka e le faamaopoopo le vaega lea ma tuu i le laulau loka e manatua ai. Afai e manaʻomia, e faitau e le faʻamaopoopo lenei vaega mai le teuina ma teuina faʻamaumauga e maua i se tulaga tau fefaʻatauaiga i le mafaufau o le faamaopoopo.

NewSQL = NoSQL + ACID

A manaʻo le tagata faʻatau e sui faʻamatalaga i se fefaʻatauaiga, e tuʻuina atu se talosaga i le faʻamaopoopo e sui le faʻalapotopotoga, ma tuʻu e le faʻamaopoopo faʻamatalaga fou i le laulau tulaga o fefaʻatauaiga i le mafaufau. O le mea lea e fa'auma ai le pu'eina - e leai se fa'amaumauga e faia i le teuina.

NewSQL = NoSQL + ACID

Pe a talosagaina e le tagata o tausia ana lava suiga o faʻamatalaga e avea o se vaega o se fefaʻatauaiga galue, e galue le faamaopoopo e faʻapea:

  • afai o le ID ua uma ona i ai i le fefaʻatauaiga, ona ave lea o faʻamaumauga mai le manatua;
  • afai e leai se ID i le manatua, ona faitau lea o faʻamaumauga o loʻo misi mai le mea e teu ai, faʻatasi ma i latou ua uma ona manatua, ma o le taunuuga e tuʻuina atu i le kalani.

O le mea lea, e mafai e le kalani ona faitau ana lava suiga, ae o isi tagata e le o vaʻaia nei suiga, aua o loʻo teuina i totonu o le mafaufau o le faʻamaopoopo;

NewSQL = NoSQL + ACID

A auina atu e le tagata o tausia le tautinoga, o le setete sa i totonu o le manatua o le tautua e teuina e le faamaopoopo i totonu o se vaega o loʻo faʻapipiʻiina, ma auina atu o se vaega faʻapipiʻi i Cassandra teuina. E faia e faleoloa mea uma e manaʻomia e faʻamautinoa ai o lenei afifi o loʻo faʻaogaina (atoa) faʻaoga, ma toe faʻafoʻi se tali i le faʻamaopoopo, o le na te tatalaina loka ma faʻamaonia le manuia o le fefaʻatauaiga i le tagata o tausia.

NewSQL = NoSQL + ACID

Ma e toe foʻi i tua, naʻo le faʻamaopoopo e manaʻomia e faʻasaʻoloto le manatua o loʻo nofoia e le tulaga o fefaʻatauaiga.

O se taunuuga o le faʻaleleia atili o loʻo i luga, na matou faʻatinoina le ACID mataupu faavae:

  • Atomicity. O se fa'amaoniga lea e leai se fefa'ataua'iga o le a fa'amaumau fa'atasi i totonu o le faiga; Matou te tausisia lenei mataupu faavae e ala i logged batch i Cassandra.
  • Fa'atasi. O fefa'ataua'iga manuia ta'itasi, i lona fa'auigaina, e fa'amauina na'o taunu'uga aoga. Afai, a maeʻa ona tatalaina se fefaʻatauaiga ma faia se vaega o gaioiga, e iloa ai e le aoga le iʻuga, e faia se rollback.
  • Tu'ufua. Pe a fa'ataunu'uina se fefa'ataua'iga, o fefa'ataua'iga fa'atasi e le tatau ona a'afia ai lona taunu'uga. O fefa'ataua'iga fefa'ataua'iga o lo'o tu'u'esea e fa'aaoga ai loka fa'aletonu ile fa'amaopoopo. Mo faitauga i fafo atu o se fefaʻatauaiga, o le faʻavae tuʻufua o loʻo matauina ile tulaga Read Committed.
  • Resilience. Po o le a lava faʻafitauli i tulaga maualalo-faʻagata faiga, faʻaletonu meafaigaluega-o suiga e faia i se faʻataunuʻuga manuia e tatau ona faʻasaoina pe a toe amata galuega.

Faitauina e faasino igoa

Sei o tatou faia se laulau faigofie:

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

E iai lona ID (primary key), e ona ma le aso o suiga. E te manaʻomia le faia o se talosaga faigofie - filifili faʻamatalaga i luga o lē e ona ma le aso suiga "mo le aso mulimuli".

SELECT *
WHERE owner=?
AND modified>?

Ina ia mafai ona faʻagasolo vave sea fesili, i se SQL DBMS masani e te manaʻomia le fausiaina o se faʻailoga i koluma (tagata e ona, suia). E faigofie lava ona matou faia lenei mea, talu ai ua i ai nei a matou faʻamaoniga ACID!

Fa'asinomaga ile C*One

O lo'o i ai se laulau fa'apogai ma ata o lo'o i ai le ID fa'amaumauga o le ki autu.

NewSQL = NoSQL + ACID

Mo se fa'asinomaga, C*One faia se laulau fou o se kopi o le ulua'i laulau. O le ki e tutusa ma le fa'amatalaga fa'asino, ma e aofia ai ma le ki autu o fa'amaumauga mai le laulau fa'apogai:

NewSQL = NoSQL + ACID

O lea la o le fesili mo le "tagata e ona le aso gataaga" e mafai ona toe tusia o se filifiliga mai se isi laulau:

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

O le fa'atasi o fa'amaumauga i ata o le laulau fa'apogai ma le laulau fa'asino i1 e fa'atumauina otometi e le fa'amaopoopo. Faʻavae i luga o le faʻasologa o faʻamaumauga naʻo, pe a maua se suiga, e faʻatupuina ma teu e le faʻamaopoopo se suiga e le gata i le laulau autu, ae faʻapea foi i kopi. E leai ni gaioiga fa'aopoopo e faia i luga o le laulau fa'asino, e le o faitauina ni ogalaau, ma e leai ni loka e fa'aoga. O lona uiga, o le fa'aopoopoina o fa'asinomaga e toetoe a leai ni alagaoa ma e toetoe a leai se a'afiaga i le saoasaoa o le fa'aogaina o suiga.

I le faʻaaogaina o le ACID, na mafai ai ona matou faʻatinoina faʻasologa o SQL-pei. E fa'atumauina, fa'alautele, vave, fa'atupu, ma fausia ile gagana ole fesili CQL. Leai se suiga i le numera o talosaga e manaʻomia e lagolago ai faʻasino igoa. E faigofie mea uma e pei o le SQL. Ma o le mea pito sili ona taua, o faʻasinomaga e le afaina ai le saoasaoa o le faʻatinoina o suiga i le laulau muamua o fefaʻatauaiga.

O le a le mea ua tupu

Na matou atia'e le C*One i le tolu tausaga talu ai ma fa'alauiloa i galuega fa'apisinisi.

O le a le mea na tatou maua i le faaiuga? Sei o tatou iloiloina lenei mea e faʻaaoga ai le faʻataʻitaʻiga o le gaosiga o ata ma le teuina o subsystem, o se tasi o ituaiga sili ona taua o faʻamaumauga i totonu o fesoʻotaʻiga lautele. Matou te le o talanoa e uiga i tino o ata lava ia, ae e uiga i ituaiga uma o faʻamatalaga-meta. O le taimi nei o Odnoklassniki e tusa ma le 20 piliona faʻamaumauga, o le faiga o le 80 afe faitau talosaga i le sekone, e oʻo atu i le 8 afe ACID fefaʻatauaiga i le sekone e fesoʻotaʻi ma suiga o faʻamatalaga.

Ina ua matou faʻaogaina le SQL faʻatasi ai ma le faʻasologa faʻasologa = 1 (ae i le RAID 10), o le ata faʻamatalaga sa teuina i luga o se faʻaputu avanoa o 32 masini faʻaogaina Microsoft SQL Server (faʻaopoopo 11 faʻamaumauga). 10 'auʻaunaga na tuʻuina atu foʻi mo le teuina o faʻamaumauga. E 50 taavale taugata. I le taimi lava e tasi, o le faiga o loʻo faʻaogaina i le uta faʻatatau, e aunoa ma se faʻaagaga.

Ina ua mae'a ona malaga atu i le faiga fou, na matou maua le fa'asologa fa'atusa = 3 - o se kopi i totonu o fa'amaumauga ta'itasi. O le faiga e aofia ai 63 Cassandra teuina nodes ma 6 coordinator masini, mo le aofaiga o 69 servers. Ae o nei masini e sili atu le taugofie, o latou tau atoa e tusa ma le 30% o le tau o se faiga SQL. I le taimi lava e tasi, o loʻo tausia le uta i le 30%.

Fa'atasi ai ma le fa'aofiina o le C*One, na fa'aitiitia ai fo'i le fa'aletonu: i le SQL, o se fa'agaioiga tusitusi e tusa ma le 4,5 ms. I le C*One - e tusa ma le 1,6 ms. O le umi o fefaʻatauaiga o loʻo i lalo ifo o le 40 ms, o le tautinoga e maeʻa i le 2 ms, o le faitau ma le tusitusi o le umi e tusa ma le 2 ms. 99th percentile - naʻo le 3-3,1 ms, o le numera o taimi e faʻaitiitia ai le 100 taimi - o mea uma ona o le faʻaogaina lautele o faʻamatalaga.

I le taimi nei, o le tele o nodes SQL Server ua faʻaumatia oloa fou o loʻo faʻaaogaina naʻo le C * One. Na matou fetuunai C*One e galue i la matou ao tasi-ao, lea na mafai ai ona faʻavavevave le faʻapipiʻiina o fuifui fou, faʻafaigofie le faʻatulagaina ma faʻaautomatika le gaioiga. A aunoa ma le code source, o le faia o lenei mea o le a sili atu ona faigata ma faʻalavelave.

O lea la o loʻo matou galulue i le fesiitaiga o isi fale teu oloa i le ao - ae o se tala e matua ese lava.

puna: www.habr.com

Faaopoopo i ai se faamatalaga