Aaye data yii wa ni ina...

Aaye data yii wa ni ina...

Jẹ ki n sọ itan imọ-ẹrọ kan.

Ni ọpọlọpọ ọdun sẹyin, Mo n ṣe agbekalẹ ohun elo kan pẹlu awọn ẹya ifowosowopo ti a ṣe sinu rẹ. O jẹ akopọ esiperimenta ore-olumulo ti o lo anfani ti agbara kikun ti React tete ati CouchDB. O mu data ṣiṣẹpọ ni akoko gidi nipasẹ JSON OT. O ti lo ni inu laarin ile-iṣẹ naa, ṣugbọn iwulo gbooro ati agbara rẹ ni awọn agbegbe miiran jẹ kedere.

Lakoko ti o n gbiyanju lati ta imọ-ẹrọ yii si awọn alabara ti o ni agbara, a pade idiwọ airotẹlẹ kan. Ninu fidio demo, imọ-ẹrọ wa wo ati ṣiṣẹ nla, ko si awọn iṣoro nibẹ. Fidio naa fihan ni pato bi o ṣe n ṣiṣẹ ati pe ko farawe ohunkohun. A wa pẹlu ati ṣe koodu oju iṣẹlẹ ti o daju fun lilo eto naa.

Aaye data yii wa ni ina...
Ni otitọ, eyi di iṣoro naa. demo wa ṣiṣẹ ni deede ni ọna ti gbogbo eniyan miiran ṣe adaṣe awọn ohun elo wọn. Ni pataki, alaye ti gbe lesekese lati A si B, paapaa ti o ba jẹ awọn faili media nla. Lẹhin titẹ sii, olumulo kọọkan rii awọn titẹ sii tuntun. Lilo ohun elo naa, awọn olumulo oriṣiriṣi le ṣiṣẹ papọ ni gbangba lori awọn iṣẹ akanṣe, paapaa ti asopọ Intanẹẹti ba ni idilọwọ ni ibikan ni abule naa. Eyi jẹ mimọ ni mimọ ni gige fidio ọja eyikeyi ni Lẹhin Awọn ipa.

Paapaa botilẹjẹpe gbogbo eniyan mọ kini bọtini isọdọtun jẹ fun, ko si ẹnikan ti o loye gaan pe awọn ohun elo wẹẹbu ti wọn beere fun wa lati kọ nigbagbogbo labẹ awọn idiwọn tiwọn. Ati pe ti wọn ko ba nilo wọn mọ, iriri olumulo yoo yatọ patapata. Wọn ṣe akiyesi pupọ julọ pe wọn le “iwiregbe” nipa fifi awọn akọsilẹ silẹ fun awọn eniyan ti wọn n ba sọrọ, nitorinaa wọn ṣe iyalẹnu bawo ni eyi ṣe yatọ si, fun apẹẹrẹ, Slack. Phew!

Apẹrẹ ti awọn amuṣiṣẹpọ ojoojumọ

Ti o ba ni iriri ninu idagbasoke sọfitiwia, o gbọdọ jẹ aibikita lati ranti pe ọpọlọpọ eniyan ko le wo aworan kan ti wiwo nikan ki o loye ohun ti yoo ṣe nigbati ibaraenisọrọ pẹlu rẹ. Ko si darukọ ohun ti o ṣẹlẹ inu awọn eto ara. Imọ pe le ṣẹlẹ ni ibebe abajade ti mimọ ohun ti ko le ṣẹlẹ ati ohun ti ko yẹ ki o ṣẹlẹ. Eyi nilo opolo awoṣe kii ṣe ohun ti sọfitiwia naa ṣe nikan, ṣugbọn tun bii awọn ẹya ara ẹni kọọkan ṣe ṣajọpọ ati ibasọrọ pẹlu ara wọn.

A Ayebaye apẹẹrẹ ti yi ni a olumulo ranju lori a alayipo.gif, iyalẹnu nigbati iṣẹ naa yoo pari nikẹhin. Olùgbéejáde naa yoo ti rii pe ilana naa ṣee ṣe di ati pe gif ko ni parẹ kuro loju iboju. Idaraya yii ṣe simulates ipaniyan iṣẹ kan, ṣugbọn ko ni ibatan si ipo rẹ. Ni iru awọn ọran bẹẹ, diẹ ninu awọn imọ-ẹrọ fẹ lati yi oju wọn pada, iyalẹnu ni iwọn iporuru olumulo. Bibẹẹkọ, ṣakiyesi awọn melo ninu wọn tọka si aago yiyi ti o sọ pe o duro nitootọ?

Aaye data yii wa ni ina...
Eyi ni pataki ti iye akoko gidi. Awọn ọjọ wọnyi, awọn apoti isura infomesonu gidi-akoko tun jẹ lilo pupọ ati ọpọlọpọ eniyan wo wọn pẹlu ifura. Pupọ julọ awọn apoti isura infomesonu wọnyi dale pupọ si ọna ara NoSQL, eyiti o jẹ idi ti wọn fi n lo awọn solusan orisun-Mongo, eyiti o gbagbe julọ. Sibẹsibẹ, fun mi eyi tumọ si nini itunu ṣiṣẹ pẹlu CouchDB, bakanna bi kikọ ẹkọ lati ṣe apẹrẹ awọn ẹya ti o ju diẹ ninu awọn bureaucrat le kun pẹlu data. Mo ro pe mo n lo akoko mi dara julọ.

Ṣugbọn koko gidi ti ifiweranṣẹ yii ni ohun ti Mo nlo loni. Kii ṣe nipa yiyan, ṣugbọn nitori aibikita ati awọn ilana ile-iṣẹ ti a lo ni afọju. Nitorinaa Emi yoo pese Ifilelẹ Patapata ati afiwera Aisiji ti awọn ọja data gidi-akoko Google ti o ni ibatan pẹkipẹki.

Aaye data yii wa ni ina...
Awọn mejeeji ni ọrọ Ina ni orukọ wọn. Ohun kan ti mo ranti ife. Ohun keji fun mi ni iru ina ti o yatọ. Emi ko yara lati sọ awọn orukọ wọn, nitori ni kete ti Mo ṣe, a yoo lọ sinu iṣoro nla akọkọ: awọn orukọ.

Ekinni ni a npe ni Firebase Real-Time aaye data, ati ekeji - Firebase awọsanma Firestore. Mejeji ti wọn wa ni awọn ọja lati Firebase suite Google. Awọn API wọn ni a pe ni ọkọọkan firebase.database(…) и firebase.firestore(…).

Eleyi ṣẹlẹ nitori Real-Time aaye data - o kan atilẹba Firebase ṣaaju rira nipasẹ Google ni ọdun 2014. Lẹhinna Google pinnu lati ṣẹda bi ọja ti o jọra ẹda Firebase da lori ile-iṣẹ data nla, o si pe ni Firestore pẹlu awọsanma. Mo nireti pe o ko ni idamu sibẹsibẹ. Ti o ba tun ni idamu, maṣe yọ ara rẹ lẹnu, Emi funrarami tun ṣe apakan apakan nkan yii ni igba mẹwa.

Nitoripe o nilo lati tọka Firebase ni Firebase ibeere, ati Ibi ipamọ ina ni ibeere kan nipa Firebase, o kere ju lati jẹ ki o loye ni ọdun diẹ sẹhin lori Stack Overflow.

Ti ẹbun ba wa fun iriri sisọ sọfitiwia ti o buru julọ, eyi yoo dajudaju jẹ ọkan ninu awọn oludije. Ijinna Hamming laarin awọn orukọ wọnyi kere pupọ pe o daamu paapaa awọn onimọ-ẹrọ ti o ni iriri ti ika wọn tẹ orukọ kan lakoko ti ori wọn n ronu nipa omiiran. Iwọnyi jẹ awọn ero ti o ni ero daradara ti o kuna ni ibi; wọ́n mú àsọtẹ́lẹ̀ náà ṣẹ pé ibùdó dátà náà yóò jóná. Ati ki o Mo n ko awada ni gbogbo. Eniyan ti o wa pẹlu eto isọkọ yii fa ẹjẹ, lagun ati omije.

Aaye data yii wa ni ina...

Pyrrhic iṣẹgun

Ọkan yoo ro pe Firestore ni rirọpo Firebase, iran ti nbọ rẹ, ṣugbọn iyẹn yoo jẹ ṣina. Firestore ko ni iṣeduro lati jẹ aropo to dara fun Firebase. O dabi pe ẹnikan ge ohun gbogbo ti o nifẹ si rẹ, ti o dapo pupọ julọ awọn iyokù ni awọn ọna oriṣiriṣi.

Bibẹẹkọ, wiwo iyara ni awọn ọja meji le da ọ loju: wọn dabi pe wọn ṣe ohun kanna, nipasẹ ipilẹ awọn API kanna ati paapaa ni igba data data kanna. Awọn iyatọ jẹ arekereke ati pe o ṣafihan nikan nipasẹ iwadii iṣọra iṣọra ti iwe nla. Tabi nigbati o n gbiyanju lati gbe koodu ibudo ti o ṣiṣẹ ni pipe lori Firebase ki o ṣiṣẹ pẹlu Firestore. Paapaa lẹhinna o rii pe wiwo data data tan ni kete ti o gbiyanju lati fa ati ju silẹ pẹlu Asin ni akoko gidi. Mo tun, Emi ko nse awada.

Onibara Firebase jẹ oniwa rere ni ori pe o ṣe awọn ayipada ati tun ṣe awọn imudojuiwọn laifọwọyi ti o fun ni pataki si iṣẹ kikọ ti o kẹhin. Sibẹsibẹ, Firestore ni opin ti iṣẹ kikọ 1 fun iwe kan fun olumulo fun iṣẹju-aaya, ati pe opin yii jẹ imuse nipasẹ olupin. Nigbati o ba n ṣiṣẹ pẹlu rẹ, o wa si ọ lati wa ọna kan ni ayika rẹ ati ṣe imudojuiwọn oṣuwọn imudojuiwọn, paapaa nigba ti o kan n gbiyanju lati kọ ohun elo rẹ. Iyẹn ni, Firestore jẹ aaye data gidi-akoko laisi alabara akoko gidi kan, eyiti o masquerades bi ọkan lilo API kan.

Nibi a bẹrẹ lati rii awọn ami akọkọ ti Firestore's raison d'être. Mo le jẹ aṣiṣe, ṣugbọn Mo fura pe ẹnikan ti o ga ni iṣakoso Google wo Firebase lẹhin rira ati sọ nirọrun, “Rara, oh Ọlọrun mi, rara. Eyi ko ṣe itẹwọgba. Kii ṣe labẹ itọsọna mi. ”

Aaye data yii wa ni ina...
Ó farahàn láti inú yàrá rẹ̀ ó sì sọ pé:

“Iwe JSON nla kan? Rara. Iwọ yoo pin data naa si awọn iwe aṣẹ lọtọ, ọkọọkan eyiti kii yoo jẹ diẹ sii ju megabyte 1 ni iwọn.”

O dabi pe iru aropin kan kii yoo yege ipade akọkọ pẹlu eyikeyi ipilẹ olumulo ti o ni itara to. O mọ pe o jẹ. Ni iṣẹ, fun apẹẹrẹ, a ni diẹ ẹ sii ju ọkan ati idaji ẹgbẹrun awọn ifarahan, ati pe eyi jẹ Patapata Deede.

Pẹlu aropin yii, iwọ yoo fi agbara mu lati gba otitọ pe “iwe-iwe” kan ninu aaye data kii yoo jọ ohun eyikeyi ti olumulo le pe iwe kan.

"Awọn akojọpọ awọn akojọpọ ti o le ni igbagbogbo ni awọn eroja miiran ninu? Rara. Awọn eto yoo ni awọn nkan gigun tabi awọn nọmba nikan ninu, gẹgẹ bi Ọlọrun ti pinnu.”

Nitorinaa ti o ba nireti lati fi GeoJSON sinu Firestore rẹ, iwọ yoo rii pe eyi ko ṣee ṣe. Ko si ohun ti kii-ọkan jẹ itẹwọgba. Mo nireti pe o fẹran Base64 ati/tabi JSON laarin JSON.

“JSON gbe wọle ati okeere nipasẹ HTTP, awọn irinṣẹ laini aṣẹ tabi nronu abojuto? Rara. Iwọ yoo ni anfani lati okeere ati gbe wọle data si Ibi ipamọ awọsanma Google nikan. Iyẹn ni ohun ti a pe ni bayi, Mo ro pe. Ati pe nigbati mo ba sọ “iwọ,” Mo n ba awọn ti o ni awọn iwe-ẹri Olohun Project nikan sọrọ. Gbogbo eniyan miiran le lọ ṣẹda awọn tikẹti. ”

Bi o ti le rii, awoṣe data FireBase jẹ rọrun lati ṣe apejuwe. O ni iwe nla JSON kan ti o so awọn bọtini JSON pọ pẹlu awọn ọna URL. Ti o ba kọ pẹlu HTTP PUT в / FireBase jẹ atẹle naa:

{
  "hello": "world"
}

Lẹhinna GET /hello yoo pada "world". Besikale o ṣiṣẹ gangan bi o ti fe reti. Gbigba awọn ohun elo FireBase /my-collection/:id deede si JSON iwe-itumọ {"my-collection": {...}} ninu root, awọn akoonu ti o wa ninu /my-collection:

{
  "id1": {...object},
  "id2": {...object},
  "id3": {...object},
  // ...
}

Eleyi ṣiṣẹ itanran ti o ba ti kọọkan ifibọ ni o ni a ijamba-free ID, eyi ti awọn eto ni o ni a boṣewa ojutu fun.

Ni awọn ọrọ miiran, aaye data jẹ 100% JSON (*) ibaramu ati ṣiṣẹ nla pẹlu HTTP, gẹgẹbi CouchDB. Ṣugbọn ni ipilẹ o lo nipasẹ API akoko gidi ti o ṣe afọwọsi awọn sockets wẹẹbu, aṣẹ, ati awọn ṣiṣe alabapin. Igbimọ abojuto ni awọn agbara mejeeji, gbigba mejeeji ṣiṣatunṣe akoko gidi ati agbewọle JSON / okeere. Ti o ba ṣe kanna ninu koodu rẹ, iwọ yoo jẹ iyalẹnu bawo ni koodu amọja yoo ṣe sofo nigbati o ba rii pe patch ati diff JSON yanju 90% ti awọn iṣẹ ṣiṣe deede ti mimu ipo itẹramọṣẹ.

Awoṣe data Firestore jẹ iru si JSON, ṣugbọn yatọ ni diẹ ninu awọn ọna pataki. Mo ti mẹnuba tẹlẹ aini awọn akojọpọ laarin awọn akojọpọ. Awoṣe fun awọn akojọpọ ipin jẹ fun wọn lati jẹ awọn imọran kilasi akọkọ, lọtọ si iwe JSON ti o ni wọn ninu. Niwọn igba ti ko si serialization ti o ṣetan fun eyi, ọna koodu pataki kan nilo lati gba pada ati kọ data. Lati ṣe ilana awọn akojọpọ tirẹ, o nilo lati kọ awọn iwe afọwọkọ tirẹ ati awọn irinṣẹ. Igbimọ abojuto nikan gba ọ laaye lati ṣe awọn ayipada kekere aaye kan ni akoko kan, ati pe ko ni awọn agbara agbewọle / okeere.

Wọn mu aaye data NoSQL gidi-akoko kan ati yi pada si lọra ti kii ṣe SQL pẹlu iṣọpọ-laifọwọyi ati iwe ti kii-JSON lọtọ lọtọ. Nkankan bi GraftQL.

Aaye data yii wa ni ina...

Java gbona

Ti Firestore yẹ ki o jẹ igbẹkẹle diẹ sii ati iwọn, lẹhinna irony ni pe olupilẹṣẹ apapọ yoo pari pẹlu ojutu ti ko ni igbẹkẹle ju yiyan FireBase kuro ninu apoti. Iru sọfitiwia ti Alakoso aaye data Grumpy nilo nilo ipele igbiyanju ati alaja ti talenti ti o rọrun lasan fun onakan ọja yẹ ki o dara ni. Eyi jẹ iru si bii HTML5 Canvas kii ṣe rirọpo fun Flash rara ti ko ba si awọn irinṣẹ idagbasoke ati ẹrọ orin kan. Pẹlupẹlu, Firestore ti wa ninu ifẹ fun mimọ data ati afọwọsi aibikita ti o rọrun ko ni ibamu pẹlu bii olumulo iṣowo apapọ fẹràn lati ṣiṣẹ: fun u ohun gbogbo ni iyan, nitori titi ti gan opin ohun gbogbo ni a osere.

Alailanfani akọkọ ti FireBase ni pe a ṣẹda alabara ni ọdun pupọ ṣaaju akoko rẹ, ṣaaju ọpọlọpọ awọn olupilẹṣẹ wẹẹbu mọ nipa ailagbara. Nitori eyi, FireBase ro pe iwọ yoo yi data pada ati nitorina ko ni anfani ti ailagbara ti a pese ti olumulo. Ni afikun, ko tun lo data naa ni awọn aworan aworan ti o kọja si olumulo, eyiti o jẹ ki iyatọ le nira pupọ. Fun awọn iwe aṣẹ nla, ẹrọ iṣowo ti o da lori iyatọ ti o le yipada ko pe. Awọn ọmọkunrin, a ti ni tẹlẹ WeakMap ni JavaScript. O ni itunu.

Ti o ba fun data ni apẹrẹ ti o fẹ ati pe ko ṣe awọn igi pupọ ju, lẹhinna iṣoro yii le jẹ yika. Ṣugbọn Mo ṣe iyanilenu boya FireBase yoo jẹ iwunilori pupọ diẹ sii ti awọn olupilẹṣẹ ba ṣe idasilẹ API alabara ti o dara gaan ti o lo ailagbara ni idapo pẹlu diẹ ninu imọran ilowo to ṣe pataki lori apẹrẹ data data. Kàkà bẹ́ẹ̀, ńṣe ló dà bíi pé wọ́n ń gbìyànjú láti ṣàtúnṣe ohun tí kò fọ́, ìyẹn sì mú kó túbọ̀ burú sí i.

Emi ko mọ gbogbo ọgbọn ti o wa lẹhin ẹda ti Firestore. Ṣiṣaroye nipa awọn idi ti o dide inu apoti dudu tun jẹ apakan igbadun naa. Ijọpọ yii ti awọn apoti isura infomesonu meji ti o jọra pupọ ṣugbọn ti ko ni afiwe jẹ toje. O dabi ẹnipe ẹnikan ro: "Firebase jẹ iṣẹ kan ti a le farawe ni Google Cloud", ṣugbọn ko ti ṣe awari imọran ti idamo awọn ibeere gidi-aye tabi ṣiṣẹda awọn iṣeduro ti o wulo ti o pade gbogbo awọn ibeere naa. “Jẹ ki awọn olupilẹṣẹ ronu nipa rẹ. Kan jẹ ki UI lẹwa... Ṣe o le ṣafikun ina diẹ sii?”

Mo loye awọn nkan meji nipa awọn ẹya data. Mo dajudaju o rii “ohun gbogbo ninu igi JSON nla kan” bi igbiyanju lati ṣe arosọ eyikeyi ori ti igbekalẹ iwọn-nla lati ibi ipamọ data. Nreti sọfitiwia lati koju nirọrun pẹlu eyikeyi fractal data idawọle jẹ were lasan. Emi ko paapaa ni lati fojuinu bawo ni awọn nkan buburu ṣe le jẹ, Mo ti ṣe awọn iṣayẹwo koodu lile ati Mo rí àwọn nǹkan tí ẹ̀yin èèyàn ò lálá rí. Ṣugbọn Mo tun mọ kini awọn ẹya ti o dara dabi, bi o lati lo wọn и idi ti o yẹ ki o ṣe eyi. Mo le fojuinu aye kan nibiti Firestore yoo dabi ọgbọn ati awọn eniyan ti o ṣẹda rẹ yoo ro pe wọn ṣe iṣẹ to dara. Sugbon a ko gbe ninu aye yi.

Atilẹyin ibeere FireBase ko dara nipasẹ boṣewa eyikeyi ati pe ko si ni iṣe. O dajudaju nilo ilọsiwaju tabi o kere ju atunyẹwo. Ṣugbọn Firestore ko dara pupọ nitori pe o ni opin si awọn atọka onisẹpo kan kanna ti a rii ni SQL itele. Ti o ba nilo awọn ibeere ti awọn eniyan nṣiṣẹ lori data rudurudu, o nilo wiwa ọrọ ni kikun, awọn asẹ ọpọlọpọ, ati aṣẹ asọye olumulo aṣa. Lẹhin ayewo ti o sunmọ, awọn iṣẹ ti SQL itele ti ni opin pupọ fun ara wọn. Ni afikun, awọn ibeere SQL nikan ti eniyan le ṣiṣẹ ni iṣelọpọ jẹ awọn ibeere iyara. Iwọ yoo nilo ojutu atọka aṣa pẹlu awọn ẹya data ti o ni ironu. Fun ohun gbogbo miiran, o yẹ ki o kere ju maapu-idinku tabi nkan ti o jọra.

Ti o ba wa Google Docs fun alaye nipa eyi, iwọ yoo ni ireti ni itọka si itọsọna nkan bi BigTable ati BigQuery. Bibẹẹkọ, gbogbo awọn solusan wọnyi wa pẹlu jargon tita ile-iṣẹ ipon pupọ ti iwọ yoo yarayara pada ki o bẹrẹ wiwa nkan miiran.

Ohun ikẹhin ti o fẹ pẹlu aaye data gidi-akoko jẹ nkan ti a ṣe nipasẹ ati fun awọn eniyan lori awọn iwọn isanwo isanwo iṣakoso.

(*) Awada leleyi, kosi nkan toje 100% JSON ni ibamu.

Lori awọn ẹtọ ti Ipolowo

Nwa fun VDS fun n ṣatunṣe aṣiṣe, olupin fun idagbasoke ati alejo gbigba? Dajudaju iwọ jẹ alabara wa 🙂 idiyele ojoojumọ fun awọn olupin ti ọpọlọpọ awọn atunto, egboogi-DDoS ati awọn iwe-aṣẹ Windows ti wa tẹlẹ ninu idiyele naa.

Aaye data yii wa ni ina...

orisun: www.habr.com

Fi ọrọìwòye kun