Ke ahi kēia waihona ...

Ke ahi kēia waihona ...

E haʻi wau i kahi moʻolelo loea.

I nā makahiki he nui i hala aku nei, ke kūkulu nei au i kahi noi me nā hiʻohiʻona hui pū i kūkulu ʻia i loko. He hoʻokohu hoʻokolohua hoʻohana ʻia i hoʻohana pono i ka mana piha o React a me CouchDB. Hoʻonohonoho ia i ka ʻikepili i ka manawa maoli ma o JSON OT. Ua hoʻohana ʻia i loko o ka ʻoihana, akā maopopo kona hoʻohana ākea a me ka hiki i nā wahi ʻē aʻe.

ʻOiai e hoʻāʻo nei e kūʻai aku i kēia ʻenehana i nā mea kūʻai aku, ua loaʻa iā mākou kahi pilikia i manaʻo ʻole ʻia. Ma ka wikiō demo, ʻike a hana maikaʻi kā mākou ʻenehana, ʻaʻohe pilikia ma laila. Ua hōʻike pololei ke wikiō i ka hana ʻana a ʻaʻole i hoʻohālike i kekahi mea. Ua hele mai mākou a hoʻopaʻa inoa i kahi hiʻohiʻona maoli no ka hoʻohana ʻana i ka papahana.

Ke ahi kēia waihona ...
ʻOiaʻiʻo, ua lilo kēia i pilikia. Ua hana pololei kā mākou demo e like me ka hoʻohālikelike ʻana o nā poʻe ʻē aʻe i kā lākou noi. Ma ke ʻano kikoʻī, ua hoʻololi koke ʻia ka ʻike mai A a i B, ʻoiai inā he faila media nui. Ma hope o ke komo ʻana, ʻike kēlā me kēia mea hoʻohana i nā mea hou. Me ka hoʻohana ʻana i ka palapala noi, hiki i nā mea hoʻohana like ʻole ke hana pū me nā papahana like, ʻoiai inā ua hoʻopau ʻia ka pilina pūnaewele ma kahi o ke kauhale. Hoʻopili ʻia kēia i nā ʻoki wikiō huahana ma After Effects.

ʻOiai ua ʻike nā mea a pau i ke ʻano o ka pihi Refresh, ʻaʻohe mea i hoʻomaopopo maoli ʻo nā noi pūnaewele a lākou i noi ai iā mākou e kūkulu maʻamau i ko lākou mau palena. A inā ʻaʻole pono lākou, ʻokoʻa loa ka ʻike mea hoʻohana. Ua ʻike nui lākou ua hiki iā lākou ke "kamaʻilio" ma ka waiho ʻana i nā memo no ka poʻe a lākou e kamaʻilio nei, no laila ua noʻonoʻo lākou pehea ka ʻokoʻa o kēia, e like me Slack. Phew!

Hoʻolālā o nā syncs i kēlā me kēia lā

Inā loaʻa iā ʻoe kekahi ʻike i ka hoʻomohala ʻana i nā polokalamu, pono e hoʻomanaʻo ʻaʻole hiki i ka hapa nui o ka poʻe ke nānā wale i ke kiʻi o kahi interface a hoʻomaopopo i kāna mea e hana ai ke launa pū me ia. ʻAʻole e haʻi i ka mea e hana nei i loko o ka papahana ponoʻī. ʻIke i kēlā e hiki ʻO ka hopena ka hopena o ka ʻike i ka mea hiki ʻole ke hana a me ka mea pono ʻole e hana. Pono kēia kumu hoʻohālike noʻonoʻo ʻaʻole wale ka mea a ka polokalamu e hana ai, akā pehea hoʻi i hoʻonohonoho ʻia ai kāna mau ʻāpana a kamaʻilio pū kekahi i kekahi.

ʻO kahi hiʻohiʻona maʻamau o kēia mea hoʻohana e nānā ana i kahi hoa kālai.gif, e noʻonoʻo ana i ka wā e pau ai ka hana. Ua ʻike paha ka mea hoʻomohala ua paʻa paha ke kaʻina hana a ʻaʻole e nalowale ka gif mai ka pale. Hoʻohālikelike kēia animation i ka hoʻokō ʻana i kahi hana, akā ʻaʻole pili i kona mokuʻāina. Ma ia mau hihia, makemake kekahi mau ʻenehana e ʻōwili i ko lākou mau maka, kahaha i ka nui o ka huikau o ka mea hoʻohana. Eia naʻe, e nānā i ka nui o lākou e kuhikuhi ana i ka uaki kaʻapuni a ʻōlelo ʻo ia ka mea paʻa maoli?

Ke ahi kēia waihona ...
ʻO kēia ke kumu o ka waiwai manawa maoli. I kēia mau lā, ʻaʻole nui ka hoʻohana ʻana i nā ʻikepili manawa maoli a ʻike nā poʻe he nui me ka kānalua. ʻO ka hapa nui o kēia mau ʻikepili e hilinaʻi nui nei i ke ʻano NoSQL, ʻo ia ke kumu e hoʻohana mau ai lākou i nā hoʻonā i hoʻokumu ʻia ʻo Mongo, i poina loa. Eia naʻe, noʻu, ʻo ia ke ʻano o ka ʻoluʻolu o ka hana ʻana me CouchDB, a me ke aʻo ʻana i ka hoʻolālā ʻana i nā hale i hiki ke hoʻopiha ʻia me ka ʻikepili. Manaʻo wau ke hoʻohana maikaʻi nei au i koʻu manawa.

Akā ʻo ke kumuhana maoli o kēia pou kaʻu e hoʻohana nei i kēia lā. ʻAʻole ma ke koho ʻana, akā no ka hoʻohana ʻole ʻana a me ka makapō i nā kulekele ʻoihana. No laila, e hāʻawi wau i ka hoʻohālikelike piha ʻana a me ka hoʻohālikelike ʻole o ʻelua mau huahana Google i ka manawa maoli.

Ke ahi kēia waihona ...
Loaʻa iā lāua ka huaʻōlelo ahi ma ko lāua mau inoa. Hoʻokahi mea aʻu e hoʻomanaʻo nui nei. ʻO ka lua iaʻu he ʻano ahi ʻokoʻa. ʻAʻole au wikiwiki e haʻi i ko lākou mau inoa, no ka mea, ke hana wau, e holo mākou i ka pilikia nui mua: nā inoa.

Kapa ʻia ka mea mua ʻIkepili manawa maoli ʻo Firebase, a ʻo ka lua - Hale Kuai Puhi Puhi Puhi Puhi. ʻO lāua ʻelua nā huahana mai Pūʻulu kahua ahi Google. Ua kapa ʻia kā lākou mau API firebase.database(…) и firebase.firestore(…).

Ua hana kēia no ka mea ʻIkepili Manawa maoli - ʻo ia wale nō ke kumu Firebase ma mua o kona kūʻai ʻana e Google ma 2014. A laila ua hoʻoholo ʻo Google e hana ma ke ʻano he huahana like kope ʻO Firebase e pili ana i ka hui ʻikepili nui, a kapa ʻia ʻo Firestore me kahi ao. Manaʻo wau ʻaʻole ʻoe huikau i kēia manawa. Inā pilikia ʻoe, mai hopohopo, ua kākau hou wau i kēia ʻāpana o ka ʻatikala he ʻumi mau manawa.

No ka mea pono ʻoe e hōʻike Firebase i ka nīnau Firebase, a Halekuai ahi i kahi nīnau e pili ana i Firebase, ma ka liʻiliʻi e hoʻomaopopo iā ʻoe i kekahi mau makahiki i hala ma Stack Overflow.

Inā loaʻa kahi makana no ka ʻike inoa inoa ʻoi loa o ka polokalamu, ʻo ia kekahi o nā mea hakakā. ʻO ka mamao o Hamming ma waena o kēia mau inoa he mea liʻiliʻi loa ia e huikau ai i nā ʻenekini ʻike e paʻi ana ko lākou mau manamana lima i kekahi inoa a ke noʻonoʻo nei ko lākou poʻo i kekahi. He mau hoʻolālā manaʻo maikaʻi kēia i hāʻule pōʻino; ua hoʻokō lākou i ka wānana e ʻā ana ka waihona. A ʻaʻole wau e ʻakaʻaka. He koko, ka hou, a me ka waimaka ka mea nāna i haku i kēia papa inoa.

Ke ahi kēia waihona ...

Lanakila Pyrrhic

Manaʻo kekahi ʻo Firestore hoololi ʻO Firebase, kāna hanauna hanauna e hiki mai ana, akā e alakaʻi hewa ana kēlā. ʻAʻole hōʻoia ʻia ʻo Firestore kahi pani kūpono no Firebase. Me he mea lā ua ʻoki kekahi i nā mea hoihoi mai ia mea, a huikau ka hapa nui o ke koena ma nā ʻano like ʻole.

Eia nō naʻe, hiki i ka nānā wikiwiki ʻana i nā huahana ʻelua ke huikau iā ʻoe: me he mea lā ke hana nei lākou i ka mea like, ma o nā API like ʻole a hiki i ka hālāwai waihona hoʻokahi. He maʻalahi nā ʻokoʻa a hōʻike wale ʻia ma ka noiʻi hoʻohālikelike pono ʻana o nā palapala nui. A i ʻole ke hoʻāʻo nei ʻoe e hoʻokomo i ke code e hana maikaʻi ana ma Firebase i hana pū me Firestore. A laila ʻike ʻoe e ʻā ana ke kikowaena waihona i ka wā e hoʻāʻo ai ʻoe e kauo a hāʻule me ka ʻiole i ka manawa maoli. Ke haʻi hou aku nei au, ʻaʻole wau he ʻakaʻaka.

Maikaʻi ka mea kūʻai aku ʻo Firebase ma ke ʻano he pale i nā loli a hoʻihoʻi hou i nā mea hou e hāʻawi i ka mea nui i ka hana kākau hope. Eia naʻe, loaʻa ka palena o Firestore i ka hana kākau 1 no kēlā me kēia mea hoʻohana i kēlā me kēia kekona, a ua hoʻokō ʻia kēia palena e ke kikowaena. I ka hana ʻana me ia, aia iā ʻoe ke ʻimi i kahi ala a puni ia a hoʻokō i kahi palena palena palena hou, ʻoiai ke hoʻāʻo nei ʻoe e kūkulu i kāu noi. ʻO ia hoʻi, ʻo Firestore kahi waihona manawa maoli me ka ʻole o ka mea kūʻai aku i ka manawa maoli, e hoʻopili nei me he mea lā e hoʻohana ana i kahi API.

Maanei mākou e hoʻomaka ai e ʻike i nā hōʻailona mua o ka raison dʻêtre o Firestore. Ua hewa paha wau, akā ke manaʻo nei au ua nānā kekahi kanaka kiʻekiʻe ma ka hoʻokele Google iā Firebase ma hope o ke kūʻai ʻana a ʻōlelo wale aku, "ʻAʻole, e kuʻu Akua, ʻaʻole. ʻAʻole ʻae ʻia kēia. ʻAʻole wale ma lalo o kaʻu alakaʻi."

Ke ahi kēia waihona ...
Ua ʻike ʻia ʻo ia mai kona keʻena a haʻi mai:

"Hoʻokahi palapala JSON nui? ʻAʻole. E hoʻokaʻawale ʻoe i ka ʻikepili i nā palapala ʻokoʻa, ʻaʻole i ʻoi aku ka nui o kēlā me kēia ma mua o 1 megabyte.

Me he mea lā ʻaʻole e ola kēlā palena i ka hālāwai mua me kekahi kumu hoʻohana i hoʻoikaika ʻia. ʻIke ʻoe ʻo ia. Ma ka hana, no ka laʻana, loaʻa iā mākou ma mua o hoʻokahi a me ka hapa tausani hōʻike, a ʻo ia ka Full Normal.

Me kēia palena, e koi ʻia ʻoe e ʻae i ka ʻoiaʻiʻo ʻaʻole e like kekahi "palapala" i loko o ka waihona i kekahi mea i kapa ʻia e ka mea hoʻohana i kahi palapala.

"Nā arrays o nā arrays i hiki ke loaʻa i nā mea ʻē aʻe? ʻAʻole. E loaʻa i nā laʻi nā mea paʻa a i ʻole nā ​​helu, e like me ka manaʻo o ke Akua."

No laila inā makemake ʻoe e hoʻokomo iā GeoJSON i kāu Firestore, e ʻike ʻoe ʻaʻole hiki kēia. ʻAʻohe mea i ʻae ʻia. Manaʻo wau makemake ʻoe iā Base64 a / a i ʻole JSON i loko o JSON.

"Hoʻokomo a hoʻokuʻu aku ʻo JSON ma o HTTP, nā mea hana laina kauoha a i ʻole panel admin? ʻAʻole. Hiki iā ʻoe ke hoʻopuka a hoʻokomo i ka ʻikepili i Google Cloud Storage. ʻO ia ka mea i kapa ʻia i kēia manawa, manaʻo wau. A i koʻu ʻōlelo ʻana "ʻo ʻoe," ke kamaʻilio wale nei au i ka poʻe i loaʻa nā palapala hōʻoia Project Owner. Hiki i nā mea ʻē aʻe ke hele a hana i nā tiketi. "

E like me kāu e ʻike ai, maʻalahi ka wehewehe ʻana i ka ʻikepili FireBase. Loaʻa iā ia kahi palapala JSON nui e pili ana i nā kī JSON me nā ala URL. Inā kākau ʻoe me HTTP PUT в / ʻO FireBase kēia:

{
  "hello": "world"
}

ʻO GET /hello e hoʻi mai "world". Basically, hana pololei ia e like me kāu e manaʻo ai. ʻOhi o nā mea FireBase /my-collection/:id e like me ka puke wehewehe ʻōlelo JSON {"my-collection": {...}} i ke kumu, aia nā mea i loko /my-collection:

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

Hana maikaʻi kēia inā loaʻa i kēlā me kēia mea hoʻokomo kahi ID collision-free, i loaʻa i ka ʻōnaehana ka hopena maʻamau.

I nā huaʻōlelo ʻē aʻe, ʻo ka waihona ʻikepili he 100% JSON(*) kūpono a hana maikaʻi me HTTP, e like me CouchDB. Akā ʻo ka mea maʻamau ʻoe e hoʻohana ai ma o ka API manawa maoli e huki ana i nā websockets, ʻae ʻia, a me nā kau inoa. Loaʻa i ka panel admin nā mana ʻelua, e ʻae i ka hoʻoponopono manawa maoli a me ka JSON import / export. Inā ʻoe e hana like i kāu code, e kahaha ʻoe i ka nui o nā code kūikawā e hoʻopau ʻia ke ʻike ʻoe i ka patch a me ka diff JSON e hoʻonā i ka 90% o nā hana maʻamau o ka mālama ʻana i ke kūlana hoʻomau.

Ua like ke ʻano o ka ʻikepili Firestore me JSON, akā ʻokoʻa i kekahi mau ʻano koʻikoʻi. Ua haʻi mua wau i ka nele o nā arrays i loko o nā arrays. ʻO ke kumu hoʻohālike no nā hōʻiliʻili liʻiliʻi no lākou nā manaʻo papa mua, kaʻawale mai ka palapala JSON i loaʻa iā lākou. No ka mea ʻaʻohe serialization mākaukau no kēia, pono kahi ala code kūikawā e kiʻi a kākau i ka ʻikepili. No ka hana ʻana i kāu mau hōʻiliʻili ponoʻī, pono ʻoe e kākau i kāu mau palapala a me nā mea hana ponoʻī. Hāʻawi ka admin panel iā ʻoe e hana i nā hoʻololi liʻiliʻi i hoʻokahi kahua i ka manawa, a ʻaʻohe ona hiki ke lawe mai / hoʻoiho.

Lawe lākou i kahi waihona NoSQL manawa maoli a hoʻololi iā ia i kahi lohi non-SQL me ka hui pū ʻana a me kahi kolamu JSON ʻole. ʻO kekahi mea e like me GraftQL.

Ke ahi kēia waihona ...

Iawa wela

Inā manaʻo ʻia ʻo Firestore e ʻoi aku ka hilinaʻi a me ka scalable, a laila ʻo ka mea hoʻohenehene ʻo ka mea hoʻomohala maʻamau e hoʻopau i kahi hopena kūpono ʻole ma mua o ke koho ʻana iā FireBase ma waho o ka pahu. ʻO ke ʻano o ka lako polokalamu e pono ai ka Grumpy Database Administrator e koi i kahi pae o ka hoʻoikaika a me ka caliber o ke talena i kūpono ʻole no ka niche i manaʻo ʻia e maikaʻi ka huahana. Ua like kēia me ka HTML5 Canvas ʻaʻole ia he pani no Flash inā ʻaʻohe mea hoʻomohala a me kahi mea pāʻani. Eia kekahi, ua hoʻopili ʻia ʻo Firestore i ka makemake no ka hoʻomaʻemaʻe ʻikepili a me ka hōʻoia sterile ʻaʻole i kūlike me ke ʻano o ka mea hoʻohana ʻoihana maʻamau. makemake i ka hana: nona ka mea koho, no ka mea, a hiki i ka hope loa, he kikoo na mea a pau.

ʻO ka hemahema nui o FireBase, ua hana ʻia ka mea kūʻai aku i kekahi mau makahiki ma mua o kona manawa, ma mua o ka ʻike ʻana o ka hapa nui o nā mea hoʻomohala pūnaewele e pili ana i ka immutability. Ma muli o kēia, manaʻo ʻo FireBase e hoʻololi ʻoe i ka ʻikepili a no laila ʻaʻole ia e hoʻohana i ka immutability i hāʻawi ʻia e ka mea hoʻohana. Eia hou, ʻaʻole ia e hoʻohana hou i ka ʻikepili i loko o nā kiʻi paʻi i hāʻawi ʻia i ka mea hoʻohana, ʻoi aku ka paʻakikī o ka ʻokoʻa. No nā palapala nui, ʻaʻole lawa kona ʻano hana ʻokoʻa like ʻole. E nā kāne, ua loaʻa iā mākou WeakMap ma JavaScript. He oluolu.

Inā hāʻawi ʻoe i ka ʻikepili i ke ʻano i makemake ʻia a ʻaʻole e hoʻomāhuahua i nā kumulāʻau, a laila hiki ke hoʻopau ʻia kēia pilikia. Akā, makemake wau inā ʻoi aku ka hoihoi o FireBase inā hoʻokuʻu nā mea hoʻomohala i kahi API mea kūʻai aku maikaʻi loa i hoʻohana i ka immutability i hui pū ʻia me kekahi mau ʻōlelo aʻo koʻikoʻi e pili ana i ka hoʻolālā waihona. Akā, me he mea lā ua hoʻāʻo lākou e hoʻoponopono i ka mea i haki ʻole, a ʻoi aku ka ʻino.

ʻAʻole maopopo iaʻu i nā loina āpau ma hope o ka hana ʻana o Firestore. ʻO ka noʻonoʻo ʻana e pili ana i nā kumu e kū mai ana i loko o ka pahu ʻeleʻele kekahi ʻāpana o ka leʻaleʻa. ʻO kēia hui ʻana o ʻelua mau ʻikepili like ʻole akā hiki ʻole ke hoʻohālikelike. Me he mea lā ua manaʻo kekahi: "He hana wale nō ʻo Firebase i hiki iā mākou ke hoʻohālike ma Google Cloud", akā ʻaʻole naʻe i ʻike i ka manaʻo o ka ʻike ʻana i nā koi o ka honua maoli a i ʻole ka hana ʻana i nā hoʻonā pono e kūpono i kēlā mau koi āpau. "E noʻonoʻo nā mea hoʻomohala. E hoʻonani wale i ka UI... Hiki iā ʻoe ke hoʻohui i ke ahi hou?"

Hoʻomaopopo wau i ʻelua mau mea e pili ana i nā hoʻolālā ʻikepili. ʻIke maopopo wau i ka manaʻo "nā mea a pau i loko o kahi lāʻau JSON nui" ma ke ʻano he hoʻāʻo e hoʻokaʻawale i kekahi ʻano o ka hoʻolālā nui mai ka waihona. ʻO ka manaʻo ʻana i ka polokalamu e hoʻokō pono i nā fractal ʻikepili kānalua he pupule. ʻAʻole pono wau e noʻonoʻo i ke ʻano o nā mea ʻino, ua hana wau i nā loiloi code koʻikoʻi a Ua ʻike au i nā mea a ʻoukou i moeʻuhane ʻole ai. Akā ʻike nō wau i ke ʻano o nā hale maikaʻi, pehea e hoʻohana ai iā lākou и no ke aha e hana ʻia ai kēia. Hiki iaʻu ke noʻonoʻo i kahi honua kahi e manaʻo ai ʻo Firestore a manaʻo ka poʻe nāna i hana i ka hana maikaʻi. Akā, ʻaʻole mākou e ola i kēia ao.

ʻAʻole maikaʻi ke kākoʻo nīnau a FireBase e kekahi maʻamau a ʻaʻole i loaʻa. Pono ka hoʻomaikaʻi ʻana a i ʻole ka hoʻoponopono hou ʻana. Akā ʻaʻole ʻoi aku ka maikaʻi o Firestore no ka mea ua kaupalena ʻia ia i nā ʻōlelo kuhikuhi hoʻokahi-dimensional i loaʻa ma SQL maʻamau. Inā makemake ʻoe i nā nīnau e holo ai nā kānaka ma ka ʻikepili chaotic, pono ʻoe i ka ʻimi kikokikona piha, nā kānana multi-range, a me ke kauoha maʻamau i wehewehe ʻia e ka mea hoʻohana. Ma ka nānā pono ʻana, ua kaupalena ʻia nā hana o ka SQL maʻamau iā lākou iho. Eia kekahi, ʻo nā nīnau SQL wale nō e hiki i nā kānaka ke holo i ka hana ʻana he mau nīnau wikiwiki. Pono ʻoe i kahi hāʻina helu helu maʻamau me nā hale ʻikepili noʻonoʻo. No nā mea ʻē aʻe, pono e hoʻonui ʻia ka palapala ʻāina-hōʻemi a i ʻole kekahi mea like.

Inā ʻoe e ʻimi iā Google Docs no ka ʻike e pili ana i kēia, manaʻolana ʻoe e kuhikuhi ʻia i ke ala o kahi mea e like me BigTable a me BigQuery. Eia nō naʻe, ua hui pū ʻia kēia mau hoʻonā āpau me ka jargon kūʻai ʻoihana nui loa e huli koke ʻoe a hoʻomaka e ʻimi i kahi mea ʻē aʻe.

ʻO ka mea hope loa āu e makemake ai me ka ʻikepili manawa maoli he mea i hana ʻia e a no nā poʻe ma nā unahi uku hoʻokele.

(*) He hoʻohenehene kēia, ʻaʻohe mea like 100% JSON kūpono.

Nā Pono o ka hoʻolaha

ʻimi i OE no nā papahana debugging, kahi kikowaena no ka hoʻomohala ʻana a me ka hoʻokipa? ʻO ʻoe nō kā mākou mea kūʻai aku 🙂 ʻO ke kumukūʻai o kēlā me kēia lā no nā kikowaena o nā hoʻonohonoho like ʻole, anti-DDoS a me nā laikini Windows ua hoʻokomo ʻia i ke kumukūʻai.

Ke ahi kēia waihona ...

Source: www.habr.com

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