Pehea e nānā ai i nā maka o Cassandra me ka nalowale ʻole o ka ʻikepili, kūpaʻa a me ka hilinaʻi ma NoSQL

Pehea e nānā ai i nā maka o Cassandra me ka nalowale ʻole o ka ʻikepili, kūpaʻa a me ka hilinaʻi ma NoSQL

'Ōlelo lākou he mea pono ke ho'āʻo i nā mea a pau i ke ola ma ka liʻiliʻi hoʻokahi. A inā maʻa ʻoe i ka hana ʻana me nā DBMS pili, a laila pono ke kamaʻāina me NoSQL ma ka hoʻomaʻamaʻa, ʻo ka mea mua, no ka hoʻomohala ākea. I kēia manawa, ma muli o ka hoʻomohala wikiwiki ʻana o kēia ʻenehana, nui nā manaʻo kūʻē a me nā hoʻopaʻapaʻa wela e pili ana i kēia kumuhana, kahi e hoʻoulu ai i ka hoihoi.
Inā ʻoe e ʻimi i ke ʻano o kēia mau hoʻopaʻapaʻa a pau, hiki iā ʻoe ke ʻike i ke ala ʻana ma muli o ke ala hewa. ʻO ka poʻe e hoʻohana nei i nā ʻikepili NoSQL ma kahi e pono ai lākou e māʻona a loaʻa iā lākou nā pono āpau mai kēia hopena. A ʻo ka poʻe hoʻokolohua e hilinaʻi nei i kēia ʻenehana ma ke ʻano he panacea kahi i pili ʻole ʻia, hoʻohilahila ʻia, ua nalowale nā ​​​​ikaika o nā ʻikepili pili me ka loaʻa ʻole o nā pōmaikaʻi nui.

E haʻi aku wau iā ʻoe e pili ana i kā mākou ʻike i ka hoʻokō ʻana i kahi hopena e pili ana i ka Cassandra DBMS: he aha kā mākou e kū ai, pehea mākou i puka ai i waho o nā kūlana paʻakikī, inā paha hiki iā mākou ke pōmaikaʻi mai ka hoʻohana ʻana i ka NoSQL a ma kahi e pono ai mākou e hoʻolilo i nā hana hou aʻe. .
ʻO ka hana mua, ʻo ia ke kūkulu ʻana i kahi ʻōnaehana e hoʻopaʻa i nā kelepona i kekahi ʻano waihona.

ʻO ke kumu hana o ka ʻōnaehana penei. Hoʻokomo ʻia nā faila me kahi ʻano kikoʻī e wehewehe ana i ke ʻano o ke kelepona. A laila e hōʻoia ka palapala noi e mālama ʻia kēia hale i nā kolamu kūpono. I ka wā e hiki mai ana, hoʻohana ʻia nā kelepona i mālama ʻia e hōʻike i ka ʻike e pili ana i ka hoʻohana ʻana i ke kaʻa no nā mea kākau inoa (nā uku, nā kelepona, ka mōʻaukala kaulike).

Pehea e nānā ai i nā maka o Cassandra me ka nalowale ʻole o ka ʻikepili, kūpaʻa a me ka hilinaʻi ma NoSQL

Akaka loa ke kumu i koho ai lākou iā Cassandra - kākau ʻo ia e like me ka pū mīkini, hiki ke hoʻonui ʻia, a me ka hoʻomanawanui hewa.

No laila, ʻo ia ka mea i hāʻawi mai iā mākou

ʻAe, ʻaʻole pōʻino ka node i hāʻule. ʻO kēia ke kumu o ka hoʻomanawanui hewa o Cassandra. Akā hiki ke ola ka node a ma ka manawa like e hoʻomaka ai e pilikia i ka hana. E like me ka mea i ʻike ʻia, pili koke kēia i ka hana o ka hui holoʻokoʻa.

ʻAʻole mālama ʻo Cassandra iā ʻoe i kahi i hoʻopakele ai ʻo Oracle iā ʻoe me kāna mau kaohi. A inā ʻaʻole maopopo ka mea kākau o ka noi i kēia ma mua, a laila ʻoi aku ka hewa o ka pālua i hiki mai no Cassandra ma mua o ka mea mua. Ke hiki mai, e hoʻokomo mākou i loko.

ʻAʻole makemake nui ʻo IB i ka Cassandra manuahi i waho o ka pahu: ʻAʻohe hoʻopaʻa inoa o nā hana hoʻohana, ʻaʻohe ʻokoʻa o nā kuleana. ʻO ka ʻikepili e pili ana i nā kelepona i manaʻo ʻia he ʻikepili pilikino, ʻo ia hoʻi, ʻo nā hoʻāʻo a pau e noi / hoʻololi iā ia ma kekahi ʻano pono e hoʻopaʻa ʻia me ka hiki ke hoʻopaʻa ʻia ma hope. Eia kekahi, pono ʻoe e ʻike i ka pono e hoʻokaʻawale i nā kuleana ma nā pae like ʻole no nā mea hoʻohana like ʻole. ʻO kahi ʻenekini hana maʻalahi a me kahi luna hoʻomalu e hiki ke hoʻopau manuahi i ke kīwī holoʻokoʻa he mau kuleana like ʻole, kuleana like ʻole, a me nā mākaukau. Me ka ʻole o ia hoʻokaʻawale ʻana o nā kuleana komo, e nīnau koke ʻia ka waiwai a me ka pololei o ka ʻikepili ma mua o ka pae kūlike.

ʻAʻole mākou i noʻonoʻo e koi ana nā kelepona i nā ʻikepili koʻikoʻi a me ka laʻana i nā manawa no nā kūlana like ʻole. No ka mea e holoi ʻia a kākau hou ʻia nā moʻolelo i koho ʻia (ma ke ʻano o ka hana, pono mākou e kākoʻo i ke kaʻina hana o ka hoʻonui ʻana i ka ʻikepili i ka wā i komo hewa ai ka ʻikepili i kā mākou loop), ʻaʻole ʻo Cassandra ko mākou hoaaloha ma aneʻi. Ua like ʻo Cassandra me kahi panakō puaʻa - hiki ke hoʻokomo i nā mea i loko, akā ʻaʻole hiki iā ʻoe ke helu i loko.

Ua pilikia mākou i ka hoʻoili ʻana i ka ʻikepili i nā ʻāpana hoʻāʻo (5 nodes i ka ho'āʻo me 20 i ka prom). I kēia hihia, ʻaʻole hiki ke hoʻohana ʻia ka pahu.

ʻO ka pilikia me ka hoʻonui ʻana i ka schema data o kahi palapala noi e kākau iā Cassandra. ʻO ka rollback e hoʻohua i nā pōhaku kupapaʻu he nui, hiki ke alakaʻi i nā poho huahana ma nā ala ʻike ʻole.. Hoʻopaʻa ʻia ʻo Cassandra no ka hoʻopaʻa ʻana, ʻaʻole noʻonoʻo nui ma mua o ke kākau ʻana. ʻO ia hoʻi, ma ka holoi ʻana i nā mea pono ʻole, e hana wale mākou i nā moʻolelo hou aʻe, a ʻo kekahi wale nō o lākou e kaha ʻia me nā pōhaku kupapaʻu.

Hoʻopau manawa i ka hoʻokomo ʻana. He nani ʻo Cassandra i ka hoʻopaʻa ʻana, akā i kekahi manawa hiki i ke kahe e hiki mai ana ke hoʻohihi nui iā ia. Hana ʻia kēia i ka wā e hoʻomaka ai ke kaʻapuni a puni nā moʻolelo i hiki ʻole ke hoʻokomo ʻia no kekahi kumu. A pono mākou i kahi DBA maoli nāna e nānā i ka gc.log, ʻōnaehana a me ka debug logs no nā nīnau lohi, nā ana ma ka compaction e kali ana.

Nui nā kikowaena ʻikepili i kahi hui. Ma hea e heluhelu ai a ma hea e kākau ai?
Māhele paha i ka heluhelu a me ke kākau? A inā pēlā, pono anei he DC kokoke i ka palapala noi no ke kākau ʻana a heluhelu paha? A ʻaʻole anei mākou e hoʻopau me ka lolo kaʻawale maoli inā koho mākou i ka pae kūlike ʻole? Nui nā nīnau, nui nā hoʻonohonoho ʻike ʻole, nā mea hiki ke makemake maoli ʻoe e tinker me.

Pehea mākou i hoʻoholo ai

No ka pale ʻana i ka pohō ʻana, ua pio ka SWAP. A i kēia manawa, inā nele ka hoʻomanaʻo, pono e iho ka node a ʻaʻole e hana i nā pause gc nui.

No laila, ʻaʻole mākou e hilinaʻi hou i ka loiloi i ka waihona. Ke hoʻomaʻamaʻa hou nei nā mea hoʻomohala noi iā lākou iho a ke hoʻomaka nei e hoʻoikaika i ka mālama ʻana i kā lākou code ponoʻī. ʻO ka hoʻokaʻawale akaka kūpono o ka mālama ʻana i ka ʻikepili a me ka hana.

Ua kūʻai mākou i ke kākoʻo mai DataStax. Ua pau ka hoʻomohala ʻana o ka pahu pahu Cassandra (ʻo ka hana hope i Pepeluali 2018). Ma ka manawa like, hāʻawi ʻo Datastax i ka lawelawe maikaʻi loa a me ka nui o nā hoʻoponopono i hoʻololi ʻia a hoʻololi ʻia no nā ʻōnaehana IP i loaʻa.

Makemake au e hoʻomaopopo ʻaʻole kūpono loa ʻo Cassandra no nā nīnau koho. ʻOiaʻiʻo, he hana nui ʻo CQL no nā mea hoʻohana (hoʻohālikelike ʻia me Trift). Akā inā loaʻa iā ʻoe nā keʻena holoʻokoʻa i maʻa i nā hui like ʻole, kānana manuahi e kekahi kahua a me ka noiʻi optimization hiki, a ke hana nei kēia mau keʻena e hoʻoholo i nā hoʻopiʻi a me nā pōʻino, a laila ʻano ʻino a naʻaupō ka hopena ma Cassandra iā lākou. A hoʻomaka mākou e hoʻoholo pehea e hana ai kā mākou mau hoa hana i nā laʻana.

Ua noʻonoʻo mākou i nā koho ʻelua. Ma ka koho mua, kākau mākou i nā kelepona ʻaʻole wale ma C*, akā i loko o ka waihona waihona Oracle i hoʻopaʻa ʻia. ʻAʻole like me C*, ʻo kēia hale kūʻai waihona kelepona wale nō no ka mahina o kēia manawa ( lawa ka hohonu o ka mālama kelepona no ka hoʻouka ʻana i nā hihia). Ma ʻaneʻi ua ʻike koke mākou i kēia pilikia: inā kākau mākou i ka synchronously, a laila nalowale mākou i nā pono āpau o C * pili me ka hoʻokomo wikiwiki; inā mākou e kākau asynchronously, ʻaʻohe mea e hōʻoiaʻiʻo ua komo nā kelepona pono āpau i Oracle. Hoʻokahi mea hoʻohui, akā he mea nui: no ka hana ʻana i ka PL/SQL Developer maʻamau, ʻo ia hoʻi, hoʻokō mākou i ke ʻano "Facade". He koho ʻē aʻe. Hoʻokomo mākou i kahi hana e wehe i nā kelepona mai C *, huki i kekahi mau ʻikepili no ka hoʻonui ʻana mai nā papa e pili ana i Oracle, hui pū me nā laʻana i loaʻa a hāʻawi iā mākou i ka hopena, a laila mākou e hoʻohana ai (roll back, repeat, analysis, mahalo). Cons: ʻo ke kaʻina hana he multi-step, a he mea hou aʻe, ʻaʻohe interface no nā limahana hana.

I ka hopena, ua hoʻoholo mākou i ka koho lua. Ua hoʻohana ʻia ʻo Apache Spark no ka laʻana mai nā ipu like ʻole. Ua hoʻemi ʻia ke kumu o ka mīkini i ka code Java, ka mea, me ka hoʻohana ʻana i nā kī i ʻōlelo ʻia (ka mea kākau inoa, ka manawa o ke kāhea ʻana - nā kī ʻāpana), huki i ka ʻikepili mai C *, a me ka ʻikepili pono no ka hoʻonui ʻana mai nā waihona ʻē aʻe. Ma hope o ka hui pū ʻana me lākou i kona hoʻomanaʻo ʻana a hōʻike i ka hopena i ka papa ʻaina. Ua huki mākou i kahi maka pūnaewele ma luna o ka ʻulaʻula a ua hiki ke hoʻohana.

Pehea e nānā ai i nā maka o Cassandra me ka nalowale ʻole o ka ʻikepili, kūpaʻa a me ka hilinaʻi ma NoSQL

I ka hoʻoholo ʻana i ka pilikia o ka hoʻonui ʻana i ka ʻikepili hoʻāʻo ʻenehana, ua noʻonoʻo hou mākou i kekahi mau hopena. Hoʻololi ʻelua ma o Sstloader a me ke koho o ka hoʻokaʻawale ʻana i ka puʻupuʻu i loko o ka ʻāpana hoʻāʻo i ʻelua ʻāpana, ʻo kēlā me kēia o ia mau mea no ka hui like me ka mea hoʻolaha, no laila e hoʻoikaika ʻia e ia. I ka hoʻonui ʻana i ka hoʻāʻo, ua hoʻolālā ʻia e hoʻololi iā lākou: ua hoʻomaʻemaʻe ʻia ka ʻāpana i hana i ka hoʻāʻo a hoʻokomo ʻia i ka hana, a hoʻomaka kekahi e hana me ka ʻikepili kaʻawale. Eia nō naʻe, ma hope o ka noʻonoʻo hou ʻana, ua loiloi mākou i ka ʻikepili i kūpono i ka hoʻoili ʻana, a ʻike mākou i nā kelepona iā lākou iho he hui like ʻole no nā hoʻokolohua, wikiwiki i hana ʻia inā pono, a ʻo ia ka hoʻonohonoho ʻikepili hoʻolaha ʻaʻohe waiwai no ka hoʻoili ʻana i ka hoao. Nui nā mea mālama e pono ai ke neʻe, akā he mau papa ʻelua maoli kēia, ʻaʻole kaumaha loa. No laila mākou ma ke ʻano he hopena, ua hele hou ʻo Spark i ka hoʻopakele, me ke kōkua o kā mākou i kākau ai a hoʻomaka e hoʻohana ikaika i kahi palapala no ka hoʻoili ʻana i ka ʻikepili ma waena o nā papa, prom-test.

Hiki i kā mākou kulekele hoʻolaha i kēia manawa ke hana me ka ʻole o ka rollbacks. Ma mua o ka hoʻolaha ʻana, aia kahi hoʻāʻo hoʻāʻo pono, kahi ʻaʻole nui ke kumukūʻai o ka hewa. Inā hiki ʻole, hiki iā ʻoe ke hoʻokuʻu i ka casespace a ʻōwili i ka papahana holoʻokoʻa mai ka hoʻomaka.

No ka hōʻoia ʻana i ka loaʻa mau o Cassandra, pono ʻoe i kahi dba a ʻaʻole ʻo ia wale nō. Pono nā mea a pau e hana me ka noi e hoʻomaopopo i kahi a pehea e nānā ai i ke kūlana o kēia manawa a pehea e ʻike ai i nā pilikia i ka manawa kūpono. No ka hana ʻana i kēia, hoʻohana ikaika mākou i ka DataStax OpsCenter (Administration and monitoring of workloads), Cassandra Driver system metrics (helu o nā manawa manawa no ke kākau ʻana iā C*, helu o nā manawa no ka heluhelu ʻana mai C*, latency maximum, etc.), nānā i ka hana. o ka noi pono'ī, e hana pū ana me Cassandra.

I ko mākou noʻonoʻo ʻana i ka nīnau ma mua, ua ʻike mākou i kahi e moe ai kā mākou pilikia nui. He mau palapala hōʻikeʻike kēia e hōʻike ana i ka ʻikepili mai kekahi mau nīnau kūʻokoʻa i ka waihona. Ma kēia ala hiki iā mākou ke loaʻa ka ʻike like ʻole. Akā, pili kēia pilikia inā mākou e hana me hoʻokahi kikowaena ʻikepili. No laila, ʻo ka mea kūpono loa ma ʻaneʻi, ʻoiaʻiʻo, e hana i kahi hana puʻupuʻu no ka heluhelu ʻana i ka ʻikepili ma kahi noi ʻaoʻao ʻekolu, e hōʻoia i ka loaʻa ʻana o ka ʻikepili i hoʻokahi manawa. No ka mahele ʻana i ka heluhelu a me ke kākau ʻana ma ke ʻano o ka hana, ua hoʻopau ʻia mākou e ka pilikia me ka nalowale o ka pilina ma waena o nā DCs, hiki iā mākou ke hoʻopau i ʻelua mau puʻupuʻu i kūlike ʻole kekahi i kekahi.

ʻO ka hopena, no kēia manawa kū i ka pae kūlike no ke kākau ʻana iā EACH_QUORUM, no ka heluhelu ʻana - LOCAL_QUORUM

Nā manaʻo pōkole a me nā hopena

I mea e loiloi ai i ka hopena hopena mai ka manaʻo o ke kākoʻo hana a me nā manaʻo no ka hoʻomohala hou ʻana, ua hoʻoholo mākou e noʻonoʻo i kahi e hiki ai ke hoʻohana ʻia kahi hoʻomohala.

Ma waho o ka pā, a laila ka helu ʻikepili no nā papahana e like me "E uku i ka wā maʻalahi" (hoʻouka mākou i ka ʻike i loko o C*, helu ʻana me ka hoʻohana ʻana i nā palapala Spark), ka helu ʻana i nā koi me ka hōʻuluʻulu ʻana ma ka ʻāpana, mālama i nā kuleana a me ka helu ʻana i nā kuleana komo o ka mea hoʻohana e pili ana i ke kuleana. matrix.

E like me kāu e ʻike ai, ākea ka repertoire a ʻokoʻa. A inā mākou e koho i kahi hoʻomoana o nā kākoʻo / hoa paio o NoSQL, a laila e hui pū mākou me nā mea kākoʻo, ʻoiai ua loaʻa iā mākou ko mākou mau pōmaikaʻi, a ma kahi i manaʻo ai mākou.

ʻO ka koho Cassandra ma waho o ka pahu e ʻae i ka scaling horizontal i ka manawa maoli, me ka ʻeha ʻole e hoʻonā i ka pilikia o ka hoʻonui ʻana i ka ʻikepili i ka ʻōnaehana. Ua hiki iā mākou ke hoʻoneʻe i kahi mīkini haʻahaʻa kiʻekiʻe loa no ka helu ʻana i nā hui kelepona i kahi kaapuni ʻokoʻa, a hoʻokaʻawale hoʻi i ka schema noi a me ka loiloi, e hoʻopau i ka hana maikaʻi ʻole o ke kākau ʻana i nā hana maʻamau a me nā mea i loko o ka waihona. Loaʻa iā mākou ka manawa e koho ai a hoʻonohonoho, e wikiwiki, e hana mākou i nā helu DC a me nā mea a mākou e hoʻopaʻa ai i ka ʻikepili, ua hōʻoia mākou iā mākou iho i nā ulia o kēlā me kēia nodes a me ka DC holoʻokoʻa.

Ke noi nei i kā mākou papa hana i nā papahana hou, a ua loaʻa iā ia kekahi ʻike, makemake wau e noʻonoʻo koke i nā nuances i hōʻike ʻia ma luna, a pale i kekahi mau hewa, e hoʻomaʻemaʻe i kekahi mau kihi ʻoi hiki ʻole ke pale ʻia ma mua.

No kekahi laʻana, e mālama i nā mea hou a Cassandra i ka manawa kūponono ka mea, ua ʻike mua ʻia nā pilikia i loaʻa iā mākou.

Mai kau i ka waihona ʻikepili ponoʻī a me Spark ma nā nodes like (a i ʻole e puʻunaue pono i ka nui o nā kumuwaiwai i ʻae ʻia), no ka mea hiki iā Spark ke ʻai i ka OP ʻoi aku ma mua o ka mea i manaʻo ʻia, a e loaʻa koke iā mākou ka pilikia helu 1 mai kā mākou papa inoa.

E hoʻomaikaʻi i ka nānā ʻana a me ka mākaukau hana ma ka pae hoʻāʻo o ka papahana. I ka hoʻomaka ʻana, e noʻonoʻo e like me ka hiki i nā mea kūʻai aku a pau o kā mākou hopena, no ka mea, ʻo ia ka mea e hilinaʻi ai ka ʻōnaehana waihona.

E hoʻololi i ke kaʻapuni i loaʻa i nā manawa he nui no ka hoʻonui ʻana. E koho i nā kahua e hiki ke hoʻonohonoho ʻia. E hoʻomaopopo i nā papa ʻē aʻe a mākou e hana ai i mea e noʻonoʻo pono ai a maikaʻi hoʻi, a laila hāʻawi i ka ʻike i koi ʻia ma ke noi (no ka laʻana, ma ka manaʻo e hiki iā mākou ke mālama i nā ʻikepili like i nā papa like ʻole, e noʻonoʻo ana i nā haʻihaʻi like ʻole e like me nā ʻokoʻa like ʻole, hiki iā mākou ke mālama nui i ka manawa CPU no nā noi heluhelu).

ʻAʻole maikaʻi E hoʻolako koke no ka hoʻopili ʻana i ka TTL a me ka hoʻomaʻemaʻe ʻana i ka ʻikepili kahiko.

Ke hoʻoiho nei i ka ʻikepili mai Cassandra Pono e hana ka loina noi ma ke kumu FETCH, no laila ʻaʻole hoʻokomo ʻia nā lālani a pau i ka hoʻomanaʻo i ka manawa hoʻokahi, akā koho ʻia i nā pūʻulu.

Manaʻo ʻia ma mua o ka hoʻololi ʻana i ka papahana i ka hopena i wehewehe ʻia e nānā i ka ʻae ʻana i ka hewa o ka ʻōnaehana ma o ka hoʻokō ʻana i nā hoʻāʻo ulia pōpilikia, e like me ka nalowale ʻana o ka ʻikepili i hoʻokahi kikowaena ʻikepili, ka hoʻihoʻi ʻana i nā ʻikepili i hōʻino ʻia i kekahi manawa, ka haʻalele ʻana o ka pūnaewele ma waena o nā kikowaena data. ʻAʻole ʻae ʻia kēlā mau hoʻāʻo e loiloi i nā pono a me nā pōʻino o ka hale hoʻolālā i manaʻo ʻia, akā e hāʻawi pū kekahi i ka hoʻomaʻamaʻa hoʻomaʻamaʻa maikaʻi no nā ʻenekinia e alakaʻi ana iā lākou, a ʻo ka mākaukau i loaʻa e mamao loa mai ka superfluous inā hoʻopuka ʻia nā hemahema o ka ʻōnaehana i ka hana.

Inā mākou e hana me ka ʻike koʻikoʻi (e like me ka ʻikepili no ka bila, ka helu ʻana i ka ʻaiʻē o ka mea kākau inoa), a laila pono nō hoʻi e hoʻolohe i nā mea hana e hōʻemi ai i nā pilikia e kū mai ana ma muli o nā hiʻohiʻona o ka DBMS. No ka laʻana, e hoʻohana i ka pono nodesync (Datastax), i hoʻomohala i kahi hoʻolālā maikaʻi loa no ka hoʻohana ʻana i ka hoʻonohonoho no ka paʻa ʻana, mai hana i kahi ukana nui ma Cassandra a hoʻohana wale ia no kekahi mau papa i kekahi manawa.

He aha ka hopena iā Cassandra ma hope o ʻeono mahina o ke ola? Ma keʻano laulā,ʻaʻohe pilikia i hoʻoholoʻoleʻia. ʻAʻole mākou i ʻae i nā pōʻino koʻikoʻi a i ʻole ka nalowale ʻikepili. ʻAe, pono mākou e noʻonoʻo e pili ana i ka uku ʻana i kekahi mau pilikia i kū ʻole ma mua, akā i ka hopena, ʻaʻole kēia i uhi nui i kā mākou hoʻoponopono hoʻolālā. Inā makemake ʻoe a ʻaʻole makaʻu e hoʻāʻo i kahi mea hou, a i ka manawa like ʻaʻole makemake ʻoe e hōʻino loa, a laila e mākaukau no ka mea ʻaʻohe mea manuahi. Pono ʻoe e hoʻomaopopo, e komo i loko o ka palapala a e hōʻuluʻulu i kāu rake ponoʻī ma mua o ka hopena hoʻoilina kahiko, ʻaʻohe manaʻo e haʻi mua iā ʻoe i ka rake e kali nei iā ʻoe.

Source: www.habr.com

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