Ин базаи маълумот дар оташ аст ...

Ин базаи маълумот дар оташ аст ...

Ичозат дихед як вокеаи техникиро накл кунам.

Солҳои зиёд пеш ман як барномаеро таҳия мекардам, ки дорои хусусиятҳои ҳамкорӣ дар он сохта шудааст. Ин як стеки таҷрибавии барои корбар дӯстона буд, ки аз потенсиали пурраи React ва CouchDB бартарият дошт. Он маълумотро дар вақти воқеӣ тавассути JSON ҳамоҳанг мекард OT. Он дар дохили ширкат истифода мешуд, аммо татбиқи васеъ ва потенсиали он дар дигар соҳаҳо равшан буд.

Ҳангоми кӯшиши фурӯши ин технология ба мизоҷони эҳтимолӣ, мо ба монеаи ғайричашмдошт дучор шудем. Дар видеои намоишӣ, технологияи мо хуб ба назар мерасид ва кор мекард, ҳеҷ мушкиле вуҷуд надорад. Дар видео маҳз чӣ гуна кор кардани он нишон дода шудааст ва ба ҳеҷ чиз тақлид накардааст. Мо барои истифодаи барнома сенарияи воқеиро таҳия ва рамзгузорӣ кардем.

Ин базаи маълумот дар оташ аст ...
Дар асл, ин мушкилот шуд. Намоиши мо маҳз ҳамон тавре кор мекард, ки ҳама барномаҳои худро тақлид мекарданд. Махсусан, иттилоот фавран аз A ба B интиқол дода мешуд, ҳатто агар он файлҳои медиаи калон бошад. Пас аз ворид шудан, ҳар як корбар вурудоти навро дид. Бо истифода аз барнома, корбарони гуногун метавонанд дар як лоиҳа якҷоя кор кунанд, ҳатто агар пайвасти интернет дар ягон деҳа қатъ шуда бошад. Ин дар ҳама гуна видеои маҳсулоте, ки дар After Effects бурида шудааст, дар назар дошта шудааст.

Гарчанде ки ҳама медонистанд, ки тугмаи Навсозӣ барои чӣ аст, ҳеҷ кас воқеан намефаҳмид, ки веб-барномаҳое, ки онҳо аз мо сохтан мехоҳанд, одатан ба маҳдудиятҳои худи онҳо тобеъанд. Ва агар онҳо дигар лозим нашаванд, таҷрибаи корбар комилан дигар хоҳад буд. Онҳо асосан пай бурданд, ки онҳо метавонанд бо гузоштани қайдҳо барои одамоне, ки бо онҳо сӯҳбат мекунанд, "сӯҳбат" кунанд, аз ин рӯ онҳо ҳайрон шуданд, ки ин аз Slack чӣ фарқ дорад. Оҳ!

Тарҳрезии ҳамоҳангсозии ҳаррӯза

Агар шумо дар таҳияи нармафзор таҷриба дошта бошед, бояд дар хотир дошта бошед, ки аксари одамон наметавонанд танҳо ба тасвири интерфейс нигоҳ кунанд ва дарк кунанд, ки он ҳангоми ҳамкорӣ бо он чӣ кор хоҳад кард. Ногуфта намонад, ки чӣ дар дохили худи барнома рӯй медиҳад. Бидонед, ки метавонад ҳодиса асосан натиҷаи донистани он аст, ки чӣ рӯй дода наметавонад ва чӣ набояд рӯй диҳад. Ин талаб мекунад модели равонӣ на танхо он чи ки нармафзор мекунад, балки инчунин чӣ гуна қисмҳои алоҳидаи он бо ҳамдигар ҳамоҳанг ва муошират мекунанд.

Мисоли классикии ин корбарест, ки ба а spinner.gif, хайронам, ки кор кай ба охир мерасад. Таҳиягар дарк мекард, ки ин раванд эҳтимолан часпидааст ва gif ҳеҷ гоҳ аз экран нопадид намешавад. Ин аниматсия иҷрои корро тақлид мекунад, аммо ба ҳолати он алоқаманд нест. Дар чунин ҳолатҳо, баъзе техникҳо мехоҳанд, ки чашмони худро ғелонда, аз дараҷаи нофаҳмиҳои корбарон ба ҳайрат оранд. Бо вуҷуди ин, аҳамият диҳед, ки чанде аз онҳо ба соати гардиш ишора мекунанд ва мегӯянд, ки он воқеан доимист?

Ин базаи маълумот дар оташ аст ...
Ин моҳияти арзиши вақти воқеӣ аст. Дар ин рӯзҳо, пойгоҳи додаҳои вақти воқеӣ ҳанӯз хеле кам истифода мешаванд ва бисёриҳо ба онҳо бо шубҳа менигаранд. Аксари ин пойгоҳи додаҳо ба услуби NoSQL такя мекунанд, аз ин рӯ онҳо одатан қарорҳои ба Mongo асосёфтаро истифода мебаранд, ки беҳтарин фаромӯш карда мешаванд. Аммо, барои ман ин маънои бароҳати кор бо CouchDB ва инчунин омӯхтани тарҳрезии сохторҳоеро дорад, ки на танҳо баъзе бюрократҳо метавонанд бо маълумот пур кунанд. Ман фикр мекунам, ки ман вақтамро беҳтар истифода мебарам.

Аммо мавзӯи аслии ин паём он чизест, ки ман имрӯз истифода мекунам. На бо ихтиёр, балки аз сабаби сиёсати бепарвоёна ва кур-курона ба кор бурдани корпоративӣ. Ҳамин тавр, ман муқоисаи комилан одилона ва беғаразонаи ду маҳсулоти ба ҳам наздики Google дар вақти воқеии махзани маълумотро пешниҳод мекунам.

Ин базаи маълумот дар оташ аст ...
Ҳарду дар номи худ калимаи оташ доранд. Як чизе, ки ман бо хушҳолӣ ёд дорам. Чизи дуюм барои ман як навъи дигари оташ аст. Ман ба гуфтани номи онҳо шитоб намекунам, зеро вақте ки ман гуфтам, мо бо аввалин мушкили калон дучор мешавем: номҳо.

Аввалин номида мешавад Махзани маълумоти Firebase дар вақти воқеӣва дуюм - Firebase Cloud Firestore. Ҳардуи онҳо маҳсулоти аз Маҷмӯаи Firebase Google. API-ҳои онҳо мутаносибан номида мешаванд firebase.database(…) и firebase.firestore(…).

Ин аз он сабаб руй дод Пойгоҳи маълумот дар вақти воқеӣ - ин танҳо аслӣ аст Сӯхтор пеш аз харидани он аз ҷониби Google дар соли 2014. Сипас Google тасмим гирифт, ки ҳамчун маҳсулоти мувозӣ эҷод кунад нусхае Firebase ба як ширкати бузурги додаҳо асос ёфтааст ва онро Firestore бо абр номидааст. Умедворам, ки шумо ҳанӯз ошуфта нашудаед. Агар шумо то ҳол ошуфта бошед, хавотир нашавед, ман худам ин қисми мақоларо даҳ маротиба аз нав навиштаам.

Зеро шумо бояд нишон диҳед Сӯхтор дар саволи Firebase, ва Firestore дар як савол дар бораи Firebase, ҳадди аққал барои фаҳмидани шумо чанд сол пеш дар Stack Overflow.

Агар ҷоиза барои бадтарин таҷрибаи номгузории нармафзор вуҷуд дошта бошад, ин бешубҳа яке аз довталабон хоҳад буд. Масофаи Ҳамминг байни ин номҳо он қадар хурд аст, ки ҳатто муҳандисони ботаҷрибае, ки ангуштонашон як ном менависанд, дар ҳоле ки сарашон дар бораи дигараш фикр мекунанд, иштибоҳ мекунад. Ин нақшаҳои неки ният доранд, ки ба таври ногувор ноком мешаванд; пешгуии дар бораи оташ гирифтани базаро ичро карданд. Ва ман тамоман шӯхӣ намекунам. Шахсе, ки бо ин нақшаи номгузорӣ баромад кард, боиси хуну арақ ва ашк гардид.

Ин базаи маълумот дар оташ аст ...

Пиррий ғалаба

Кас гумон мекунад, ки Firestore аст иваз Firebase, насли ояндаи он, аммо ин гумроҳкунанда хоҳад буд. Firestore кафолат дода намешавад, ки ивазкунандаи мувофиқ барои Firebase бошад. Чунин ба назар мерасад, ки касе аз он ҳама чизи ҷолибро буридааст ва аксари боқимондаҳоро бо роҳҳои гуногун омехта кардааст.

Бо вуҷуди ин, як нигоҳи зуд ба ин ду маҳсулот метавонад шуморо ба иштибоҳ андозад: онҳо ба назар чунин мекунанд, ки тавассути API-ҳои якхела ва ҳатто дар як сессияи пойгоҳи додаҳо. Тафовутҳо нозуканд ва танҳо дар натиҷаи омӯзиши бодиққат муқоисавии ҳуҷҷатҳои васеъ ошкор карда мешаванд. Ё вақте ки шумо кӯшиш карда истодаед, ки коди портӣ дошта бошед, ки дар Firebase комилан кор мекунад, то он бо Firestore кор кунад. Ҳатто пас аз он шумо мефаҳмед, ки интерфейси пойгоҳи додаҳо вақте ки шумо бо муш дар вақти воқеӣ кашола карда партофтан мехоҳед, равшан мешавад. Такрор мекунам, ман шӯхӣ намекунам.

Мизоҷи Firebase ба он маъност, ки тағиротро буферӣ мекунад ва ба таври худкор навсозиро аз нав месанҷад, ки ба амалиёти охирини навиштан афзалият медиҳанд. Аммо, Firestore дорои маҳдудияти 1 амалиёти навиштан барои як ҳуҷҷат дар як корбар дар як сония аст ва ин маҳдудият аз ҷониби сервер амалӣ карда мешавад. Ҳангоми кор бо он, аз шумо вобаста аст, ки роҳи атрофи онро пайдо кунед ва маҳдудияти суръати навсозӣ кунед, ҳатто вақте ки шумо танҳо кӯшиши сохтани замимаи худро доред. Яъне, Firestore як пойгоҳи додаҳои вақти воқеӣ бидуни муштарии вақти воқеӣ аст, ки ҳамчун як бо истифода аз API маскарад.

Дар ин ҷо мо ба дидани нишонаҳои аввалини raison d'être-и Firestore шурӯъ мекунем. Шояд ман хато карда бошам, аммо ман гумон мекунам, ки нафаре аз роҳбарияти Google пас аз харид ба Firebase нигариста, танҳо гуфт: "Не, эй Худоё, не. Ин ғайри қобили қабул аст. Танҳо таҳти роҳбарии ман нест."

Ин базаи маълумот дар оташ аст ...
Вай аз утоқи худ баромад ва гуфт:

"Як ҳуҷҷати бузурги JSON? Не. Шумо маълумотро ба ҳуҷҷатҳои алоҳида тақсим мекунед, ки андозаи ҳар яки онҳо на бештар аз 1 мегабайт хоҳад буд."

Чунин ба назар мерасад, ки чунин маҳдудият ҳангоми вохӯрии аввал бо ягон пойгоҳи корбарони ба таври кофӣ ҳавасманд тоб оварда наметавонад. Шумо медонед, ки он аст. Дар кор, масалан, мо зиёда аз якуним хазор презентатсия дорем ва ин комилан муқаррарӣ аст.

Бо ин маҳдудият, шумо маҷбур мешавед, ки як "ҳуҷҷат" дар пойгоҳи дода ба ягон объекте монанд нест, ки корбар метавонад онро ҳуҷҷат номид.

"Массивҳои массивҳо, ки метавонанд ба таври рекурсивӣ унсурҳои дигарро дар бар гиранд? Не. Массивҳо танҳо объектҳои дарозии собит ё рақамҳоро дар бар мегиранд, тавре ки Худо ният кардааст."

Пас, агар шумо умедворед, ки GeoJSON-ро ба Firestore-и худ ҷойгир кунед, шумо хоҳед дид, ки ин имконнопазир аст. Ҳеҷ чизи якченака қобили қабул нест. Умедворам, ки ба шумо Base64 ва/ё JSON дар дохили JSON маъқул аст.

"JSON воридот ва содирот тавассути HTTP, асбобҳои сатри фармон ё панели маъмурӣ? Не. Шумо танҳо метавонед маълумотро ба Google Cloud Storage содирот ва ворид кунед. Ба фикрам, холо хамин тавр номида мешавад. Ва вақте ки ман "шумо" мегӯям, ман танҳо ба онҳое муроҷиат мекунам, ки шаҳодатномаи соҳиби лоиҳа доранд. Ҳар каси дигар метавонад рафта чипта эҷод кунад."

Тавре ки шумо мебинед, модели маълумоти FireBaseро тавсиф кардан осон аст. Он дорои як ҳуҷҷати бузурги JSON мебошад, ки калидҳои JSON-ро бо роҳҳои URL алоқаманд мекунад. Агар шумо бо HTTP PUT в / FireBase ин аст:

{
  "hello": "world"
}

Дар бораи мо GET /hello бармегардад "world". Асосан он маҳз тавре кор мекунад, ки шумо интизор будед. Ҷамъоварии объектҳои FireBase /my-collection/:id ба луғати JSON баробар аст {"my-collection": {...}} дар реша, ки мазмуни он дар дастрас аст /my-collection:

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

Ин хуб кор мекунад, агар ҳар як ворид ID-и бе бархӯрд дошта бошад, ки система барои он ҳалли стандартӣ дорад.

Ба ибораи дигар, пойгоҳи додаҳо 100% JSON(*) мувофиқ аст ва бо HTTP, ба монанди CouchDB, хуб кор мекунад. Аммо аслан шумо онро тавассути API-и вақти воқеӣ истифода мебаред, ки вебсокетҳо, иҷозатҳо ва обунаҳоро абстракт мекунад. Панели администратор ҳар ду қобилиятро дорад, ки ҳам таҳрир дар вақти воқеӣ ва ҳам воридот/содироти JSON имкон медиҳад. Агар шумо дар коди худ ҳамин тавр кунед, шумо ҳайрон хоҳед шуд, ки чӣ қадар рамзи махсус сарф мешавад, вақте ки шумо дарк мекунед, ки пач ва фарқияти JSON 90% вазифаҳои муқаррарии коркарди ҳолати доимиро ҳал мекунад.

Модели маълумоти Firestore ба JSON шабоҳат дорад, аммо бо баъзе роҳҳои муҳим фарқ мекунад. Ман аллакай дар бораи набудани массивҳо дар массивҳо зикр кардам. Модели зермаҷмӯаҳо аз он иборат аст, ки онҳо консепсияҳои дараҷаи аввал бошанд, аз ҳуҷҷати JSON, ки онҳоро дар бар мегирад. Азбаски барои ин силсиласозии тайёр вуҷуд надорад, барои дарёфт ва навиштани маълумот роҳи махсуси код лозим аст. Барои коркарди коллексияҳои худ, шумо бояд скриптҳо ва асбобҳои худро нависед. Панели идоракунӣ ба шумо имкон медиҳад, ки дар як вақт дар як майдон тағйироти хурд ворид кунед ва имкони воридот/содиротро надорад.

Онҳо пойгоҳи додаи NoSQL-ро дар вақти воқеӣ гирифта, онро ба як ғайри SQL суст бо ҳамроҳшавии худкор ва сутуни алоҳидаи ғайри JSON табдил доданд. Чизе ба монанди GraftQL.

Ин базаи маълумот дар оташ аст ...

Java гарм

Агар Firestore бояд боэътимодтар ва миқёспазиртар бошад, пас таассурот дар он аст, ки таҳиягари миёна нисбат ба интихоби FireBase аз қуттӣ ҳалли камтар боэътимод хоҳад дошт. Навъи нармафзоре, ки ба Administrator Database Grumpy лозим аст, сатҳи саъю кӯшиш ва калибри истеъдодро талаб мекунад, ки барои чароғе, ки маҳсулот бояд дар он хуб бошад, ғайривоқеист. Ин ба он монанд аст, ки чӣ тавр HTML5 Canvas ивазкунандаи Flash нест, агар ягон асбоби таҳия ва плеер мавҷуд набошад. Ғайр аз он, Firestore ба хоҳиши тозагии додаҳо ва тасдиқи безарар, ки танҳо ба корбари миёнаи тиҷорат мувофиқат намекунад. мехнат карданро дуст медорад: барои вай хама чиз ихтиёрист, зеро то охир хама чиз лоиха аст.

Камбудии асосии FireBase дар он аст, ки муштарӣ чанд сол пеш аз замони худ сохта шудааст, пеш аз он ки аксари таҳиягарони веб дар бораи тағирнопазирӣ медонистанд. Аз ин рӯ, FireBase тахмин мекунад, ки шумо маълумотро тағир медиҳед ва аз ин рӯ, аз тағирнопазирии корбар истифода намебаред. Илова бар ин, он маълумотро дар аксҳои ба корбар интиқолёфта дубора истифода намебарад, ки ин фарқиятро хеле душвортар мекунад. Барои ҳуҷҷатҳои калон, механизми муомилоти тағйирёбандаи он, ки ба фарқият асос ёфтааст, танҳо нокифоя аст. Бачаҳо, мо аллакай дорем WeakMap дар JavaScript. Ин бароҳат аст.

Агар шумо ба маълумот шакли дилхоҳ диҳед ва дарахтонро аз ҳад зиёд калон накунед, пас ин мушкилотро бартараф кардан мумкин аст. Аммо ман ҳайронам, ки FireBase хеле ҷолибтар хоҳад буд, агар таҳиягарон API-и воқеан хуби муштариро интишор кунанд, ки тағирнопазириро дар якҷоягӣ бо маслиҳатҳои ҷиддии амалӣ оид ба тарҳрезии пойгоҳи додаҳо истифода баранд. Ба ҷои ин, онҳо ба назар мерасид, ки чизҳои вайроннашударо ислоҳ кунанд ва ин онро бадтар кард.

Ман тамоми мантиқи бунёди Firestore-ро намедонам. Мулоҳиза дар бораи ангезаҳои дар дохили қуттии сиёҳ пайдошуда низ як қисми фароғат аст. Ин ҳамбастагии ду пойгоҳи хеле монанд, вале беҳамто хеле кам аст. Гуё касе фикр мекард: "Firebase танҳо як функсияест, ки мо метавонем дар Google Cloud тақлид кунем", аммо консепсияи муайян кардани талаботи воқеии ҷаҳон ё эҷоди қарорҳои муфидро, ки ба ҳамаи ин талабот мувофиқат мекунанд, кашф накардааст. “Бигзор таҳиягарон дар ин бора фикр кунанд. Танҳо UI-ро зебо кунед... Оё шумо метавонед оташи бештар илова кунед?"

Ман якчанд чизро дар бораи сохторҳои додаҳо мефаҳмам. Ман бешубҳа мафҳуми "ҳама чиз дар як дарахти бузурги JSON" -ро ҳамчун кӯшиши абстракт кардани ҳама гуна ҳисси сохтори васеъмиқёс аз пойгоҳи додаҳо мебинам. Мунтазири он, ки нармафзор танҳо бо фрактали сохтори шубҳанок мубориза мебарад, танҳо девона аст. Ба ман ҳатто тасаввур кардан лозим нест, ки чӣ гуна чизҳо метавонанд бад бошанд, ман санҷишҳои дақиқи кодро анҷом додам ва Ман чизҳоеро дидам, ки шумо ҳеҷ гоҳ орзу намекардед. Аммо ман инчунин медонам, ки сохторҳои хуб чӣ гунаанд, чи тавр истифода бурдани онхо и чаро ин корро бояд кард. Ман ҷаҳонеро тасаввур карда метавонам, ки дар он Firestore мантиқӣ ба назар мерасад ва одамоне, ки онро офаридаанд, фикр мекунанд, ки онҳо кори хуб кардаанд. Аммо мо дар ин дунё зиндагӣ намекунем.

Дастгирии дархостҳои FireBase аз рӯи ҳама стандартҳо заиф аст ва амалан вуҷуд надорад. Он бешубҳа ба такмил ё ҳадди аққал таҷдиди назар ниёз дорад. Аммо Firestore он қадар беҳтар нест, зеро он бо ҳамон индексҳои якченакае, ки дар SQL оддӣ мавҷуданд, маҳдуд аст. Агар ба шумо дархостҳое лозим шавад, ки одамон аз рӯи маълумоти бесарусомон кор мекунанд, ба шумо ҷустуҷӯи пурраи матн, филтрҳои бисёрқабата ва фармоиши фармоишии аз ҷониби корбар муайяншуда лозим аст. Ҳангоми санҷиши наздиктар, функсияҳои SQL оддӣ ба худашон хеле маҳдуданд. Илова бар ин, танҳо дархостҳои SQL, ки одамон метавонанд дар истеҳсолот иҷро кунанд, дархостҳои зуд мебошанд. Ба шумо як ҳалли индексатсияи фармоишӣ бо сохторҳои оқилонаи додаҳо лозим аст. Барои ҳама чизи дигар, ҳадди аққал кам кардани харитаи афзоянда ё чизи шабеҳ вуҷуд дорад.

Агар шумо дар бораи ин маълумот дар Google Docs ҷустуҷӯ кунед, умедворед, ки шумо ба самти чизе монанди BigTable ва BigQuery ишора мекунанд. Бо вуҷуди ин, ҳамаи ин қарорҳо бо жаргонҳои зиччи фурӯши корпоративӣ ҳамроҳ мешаванд, ки шумо зуд бармегардед ва ба ҷустуҷӯи чизи дигар шурӯъ мекунед.

Охирин чизе, ки шумо бо пойгоҳи додаҳои вақти воқеӣ мехоҳед, чизест, ки аз ҷониби одамон ва барои одамоне, ки дар ҷадвали маоши идоракунӣ сохта шудаанд.

(*) Ин шӯхӣ аст, чунин чизе вуҷуд надорад 100% JSON мувофиқ.

Дар бораи ҳуқуқи реклама

Кофта истодаам ВДС барои ислоҳи лоиҳаҳо, сервер барои таҳия ва хостинг? Шумо бешубҳа муштарии мо ҳастед 🙂 Нархи ҳаррӯза барои серверҳои конфигуратсияҳои гуногун, иҷозатномаҳои зидди DDoS ва Windows аллакай ба нарх дохил карда шудаанд.

Ин базаи маълумот дар оташ аст ...

Манбаъ: will.com

Илова Эзоҳ