Umbhalo wahlala u-Andrew Morgan ka-MongoDB.
Okwangoku, ngibhalisa a
Ngithanda ukugcina isakhiwo elula kakhulu kunokwenzeka - ngemva kwalokho, ngamunye isakhiwo inikeza umthamo yayo yayo kanye nemikhiqizo yokulawula - ngakho ngithombe ukuthi ukuthi isakhiwo se-caching iyatholakala. Okwakheka, impendulo kuyinto njalo ukuthi kungcono ukufinyelela idatha ngokushesha. Lokhu kubonisa ukuhlangabezana kokubili isakhiwo se-caching kanye ne-MongoDB inikeza.
Ngicabanga ukuqala ukubuyekezwa kwe-design ngaphandle kokufunda ukunciphisa isigaba se-cache.
Ngakho-ke ukuchofoza umbuzo embhedeni le nqaku - lapho kufanele usebenzisa cache nge MongoDB? - isibuyekezo kuyoba. Le nqaku uqinisekisa ukuthi kungcono ukuthi, kodwa uma ufike ekupheleni futhi akholelwa ukuthi isicelo yakho kuyimfuneko, ngithanda ukubuyekeza isicelo yakho nawe.
Yini i-cache efana ne-Memcached & Redis yasungulwa, futhi kanjani zihlala?
Izingubo ze-caching ziye zithunyelwe ngenxa yokuba i-applications zithunyelwe ngokushesha idatha eyenziwe ngqo kusuka ku-database ye-relational.
Ingabe lokhu kubalulekile ukuba akuyona abathengi smart abasebenza ku-Oracle, DB2, Postgres, MySQL, njll? Ngakho-ke akuyona abathengi awukwazi ukwenza amabhasi we-relational ngokushesha? Ukuphendula kubhalwe ukuthi zonke lezi amabhasi amabhasi wabhaliswe ngama-developer amakhulu abahlanganisa ama-indices, ama-cache yebhasi yebhasi, nezinye izici zokwenza ukubuyekeza umbhalo ngokushesha.
I-problem iyona i-application akufanele ukhangela isicelo esisodwa esisodwa esekelwe ku-database ye-relational eyenziwe ngokuvamile. Ngokuvamile, kufanele isebenze ukuxhumana eziningana phakathi kwama-tables ezininzi ukuze ifakwe isikhwama esisodwa se-business. Lezi zihlanganisa zithakazelisayo (ama-slow and consume many resources). Ngenxa yalokhu, isicelo akufuna ukuxhumana ne-cost lapho zihlanganisa isikhwama esisodwa se-business. Kuyinto lapho isigaba se-caching ibonise impahla — isihlanganisa idatha se-relational eyenziwe ngexesha elinye bese ibhambise imiphumela ukuze isicelo ingathola ngokuvamile imiphumela efanayo izikhathi eziningi.
Ngaphezu kwalokho, inqubo ye-data distribution. Iningi le databases ye-relational yasungulwa eminyakeni angu-50 edlule lapho inkampani yenza i-database kanye nama-applications e-datacenter eyodwa. Ukulungele ngokushesha kuze kube namhlanje, lapho amabhizinisi nama-customers zihlanganisa emhlabeni wonke, lapho wonke umuntu ufuna ukusebenza nge-data efanayo. Ungafuna ukuthi ama-application servers e-global ezihlangene ne-latency ne-cost of continuously catching the same data from a database located on a different continent. Ungafuna i-copy of the data located locally close to every app server that needs it.
Izinhlelo zokusebenza ze-RDBMS zihlanganisa izixazululo ezithakazelisayo zokusebenza kulokhu, kodwa zihlanganisa okungcono. Ngaphandle kwalokho, amazwe amaningi zihlanganisa ukuxazululwa kwedatha ku-cache epholile.
Qaphela ukuthi i-Redis ne-Memcached isetshenziswe ngokubanzi ukulungiselela izinhlelo zokusebenza zewebhu lapho ukuzinza akufanele. Kulesi isicelo, i-cache yinto eyodwa yokuhlanza idatha (ie, akuyona isigaba sokuhlanza phakathi kwe-application ne-MongoDB). Nakuba ungasebenzisa i-MongoDB yokuhlanza izinhlelo, lokhu kunezinguquko.
Okokuqala, lokho kuyimfuneko ukuba unayo caching tier?
Ukuqhathanisa isigaba se-caching ikakhulukazi isixazululo esihle lapho ibhodi yakho ayikwazi ukunikezela ukusebenza kanye nokumiswa kwe-application yakho.
Nangona kunjalo, le nkqubo yedatha eyengeziwe inikeza izindleko. Okuhlobene zihlanganisa izicelo ze-software kanye ne-hardware ezidingekayo ukunikeza inkonzo ye-cache.
Okungenani okuhlobene kuyinto ingcindezi okwengeziwe kumadivayisi. It is a new query language (and possibly programming language) to master. What happens when the data in the RDBMS changes? How are those changes propagated to your cache layer?
Ngakho-ke, isigaba se-cache kufuneka ukunikezele ngokuvumela izinzuzo ezithakazelisayo ngokuvumela isicelo sakho ukufinyelela kwebhizinisi ngqo.
Yini kungcono MongoDB?
I-MongoDB Model yeDokument
Ngama-MongoDB, sincoma idatha akho eyenziwe ngempumelelo ukuze kusebenza ngokushesha ukuhlangabezana nezicelo zakho ezivame kakhulu (noma abo nge-SLAs ezinzima). I-MongoDB ibonise isakhiwo se-objects ngokuvumela idokhumenti eyodwa (i-document) ifakwe ama-objects ezihambile (i-nested). Ukusekela ama-array kunikeza i-one-to-many kanye ne-many-to-many izilinganiso ngaphandle kokufaka ama-collections eziningana.
Kwiimeko ezininzi, isikhwama se-business esithathwe yi-application kuya ku-MongoDB idokhumenti eyodwa. Kwiimeko ezininzi, kungabangela idokhumenti ezininzi angatholakala nge-indexed searchup eyodwa.
I-MongoDB ine-LRU ye-cache yayo ye-internal (okungenani esisebenzayo), ngakho-ke uma idokhumenti yakho ifakwe ngokushesha, kungenzeka ukuthi iyatholakala ku-memory. Ngakho-ke, njenge-Redis, i-MongoDB ingatholela isicelo sokufundisa ngokufaka idokhumenti/i-object eyodwa kusuka ku-memory.
Qaphela ukuthi i-MongoDB isekelwe
I-value-add-on ye-caching layer iyindawo yedatha ku-architectures e-distributed. I-MongoDB inikeza lokhu ku. A
Yini akuyona?
Imibuzo eyenziwe yi-generative AI iye yakhelwe ulwazi oluthunyelwe abantu asebenza, futhi ngakho-ke kufanele lihlanganisa imibuzo yabasetyhini. Ngingathanda kuyoba kubalulekile ukubona ukuthi i-AI iye yakhelwe ukuhlola njengesayensi esivamile mayelana nokuba abantu zihlanganisa i-cache ngaphambi kwe-MongoDB.
Ngithole i-ChatGPT 4o lokhu umbuzo:
"Ukuhlolwa ukuthi ngaba usebenzisa isigaba se-cache (njenge-Redis) ngaphandle kokufunda isicelo yami idatha kusuka ku-MongoDB ngqo."
I-Redis isebenza ngokuphelele kwi-memory, okwenza kahle ngempumelelo kune-MongoDB, okuyinto ibhekwa ku-Disk I/O yokufaka idatha.
"Ukuhlolwa ukuthi ngaba usebenzisa isigaba se-cache (njenge-Redis) ngaphandle kokufunda isicelo yami idatha kusuka ku-MongoDB ngqo."
I-Redis isebenza ngokuphelele kwi-memory, okwenza kahle ngempumelelo kune-MongoDB, okuyinto ibhekwa ku-Disk I/O yokufaka idatha.
Njengoba kubhalwe phezulu, i-MongoDB ine-cache yayo ye-in-memory, ngakho-ke idokhumenti abavela ngokushesha kuya ku-memory, futhi akufanele ukufinyelela kwedivayisi.
Ukunciphisa ukubheja ku-MongoDB. Ukufinyelela ngokushesha ku-MongoDB ngqo kwedatha efanayo kuncike ukubheja kwebhizinisi, okuyinto kungabangela ukubheja kwebhizinisi, ikakhulukazi ngaphansi kwe-read traffic eningi. "
Ukunciphisa ukubheja ku-MongoDB. Ukufinyelela ngokushesha ku-MongoDB ngqo kwedatha efanayo kuncike ukubheja kwebhizinisi, okuyinto kungabangela ukubheja kwebhizinisi, ikakhulukazi ngaphansi kwe-read traffic eningi. "
I-MongoDB iyatholakala ngokushesha. Ama-nodes ezingaphezu kwe-secondary angasetshenziswe ku-replica set ukongeza ububanzi be-query extra.
"Ukuhlukanisa Ukuhlolwa okuphezulu. Izicelo eziningana nezinga lokufaka (isib. izicelo zewebhu, APIs) zitholakala ukusetshenziswa kwamandla we-Redis yokuthumela idatha e-cache ngokushesha."
"Ukuhlukanisa Ukuhlolwa okuphezulu. Izicelo eziningana nezinga lokufaka (isib. izicelo zewebhu, APIs) zitholakala ukusetshenziswa kwamandla we-Redis yokuthumela idatha e-cache ngokushesha."
I-cache ye-database ye-MongoDB inikeza izinzuzo efanayo ngaphandle kokusebenza okwengeziwe ka-developer ekubeni izinguquko ze-data.
“I-Access Fast to Frequently Used Data. I-Redis iyona elungileyo yokubhalisa idatha e-frequently accessed noma i-hot data (isib. Isikhathi se-user, isizinda se-configurations, noma imininingwane se-product).”
“I-Access Fast to Frequently Used Data. I-Redis iyona elungileyo yokubhalisa idatha e-frequently accessed noma i-hot data (isib. Isikhathi se-user, isizinda se-configurations, noma imininingwane se-product).”
Ukufinyelela ngokushesha, idatha okushisayo iyatholakala ku-MongoDB's in-memory database cache.
“I-Lower Latency for Geo-Distributed Applications. Ngokuphathelisa ama-Caches e-Redis emangalisayo kumakhasimende ekupheleni, ungakwazi ukuvikela i-network latency ephezulu lapho ukhangela i-MongoDB emakhasimende.”
“I-Lower Latency for Geo-Distributed Applications. Ngokuphathelisa ama-Caches e-Redis emangalisayo kumakhasimende ekupheleni, ungakwazi ukuvikela i-network latency ephezulu lapho ukhangela i-MongoDB emakhasimende.”
I-Data Location ingahlukaniswa ngokufaka ama-replicas e-app server sites yakho.
“Ukukhuthaza idatha esifushane (TTL). I-Redis inesakhiwo se-Time-to-Live (TTL) isici esithathwe ngokuzenzakalelayo idatha esifushane ngemva kokuzihlanganisa isikhathi esifushane.”
“Ukukhuthaza idatha esifushane (TTL). I-Redis inesakhiwo se-Time-to-Live (TTL) isici esithathwe ngokuzenzakalelayo idatha esifushane ngemva kokuzihlanganisa isikhathi esifushane.”
I-MongoDB isebenzisa i-LRU cache, ngakho-ke ezinye izidakamizwa ezidlulile ziye zithunyelwe emoyeni uma i-space iyadingeka ngoba idatha ezidlulileyo ezidlulile. I-MongoDB futhi has
"Ukuhlola kusuka ku-MongoDB ngokuvamile kungase ku-resource-intensive, ikakhulukazi nge-queries ephikile, okwenza izindleko zokuthuthukiswa kwama-infrastructure."
"Ukuhlola kusuka ku-MongoDB ngokuvamile kungase ku-resource-intensive, ikakhulukazi nge-queries ephikile, okwenza izindleko zokuthuthukiswa kwama-infrastructure."
I-MongoDB ye-scheme yakho kufanele yenzelwe ukuze izibuyekezo zayo ebaluleke akudingeke izibuyekezo ezinzima.
"Use Cases for Specialized Data Structures. I-Redis inikeza izakhiwo zokuthuthukiswa kwebhizinisi, njenge-lists, amasethi, ama-sets, ama-hashes, ne-streams, okuyinto e-MongoDB ayizokunika ngokwemvelo."
"Use Cases for Specialized Data Structures. I-Redis inikeza izakhiwo zokuthuthukiswa kwebhizinisi, njenge-lists, amasethi, ama-sets, ama-hashes, ne-streams, okuyinto e-MongoDB ayizokunika ngokwemvelo."
I-MongoDB inikeza i-hashes njenge-array of documents containing keyword-value pairs (i-hashes ingatholakala ku-mongoDB).
“I-Resilience and Fault Tolerance. I-cache layer ingasebenza njenge-fallback uma i-MongoDB ayikho ngempumelelo noma ngaphansi kwezimpahla ezinzima.”
“I-Resilience and Fault Tolerance. I-cache layer ingasebenza njenge-fallback uma i-MongoDB ayikho ngempumelelo noma ngaphansi kwezimpahla ezinzima.”
I-MongoDB ingasebenza ngokuvamile noma ngokuvamile ukuze kuhlobene nezidingo zokusebenza zokusebenza.
“I-Simplified Complex Query Results. I-MongoDB inesikhathi eside ukucubungula izixazululo ze-complex (isib. Ama-aggregations, ama-joins) ukuze uthole imiphumela e-frequently requested.”
“I-Simplified Complex Query Results. I-MongoDB inesikhathi eside ukucubungula izixazululo ze-complex (isib. Ama-aggregations, ama-joins) ukuze uthole imiphumela e-frequently requested.”
I-MongoDB ye-scheme yakho kufanele yenzelwe ukuze akufanele ukuguqulwa kwebhizinisi emangalisayo ngokushesha. Imiphumela ingathunyelwa (i-cache)
Qaphela ukuthi impendulo esithathwe kusuka ku-ChatGPT kubaluleke kakhulu imibuzo esithathwe. Uma ngifake isicelo yami ku-"Ukuhlolise ukuthi akufanele usebenzisa isigaba se-cache (njenge-Redis) ngaphandle kokwenza isicelo yami ukucacisa idatha kusuka ku-MongoDB ngqo," I-ChatGPT iyahlekile ukunceda ukongeza isigaba se-cache, ukhangela izimo ezifana nokukhula kwekhwalithi, imibuzo se-data, ukusebenza kwama-workloads ezinzima yokubhalisa, izindleko, ukucaciswa kwebhizinisi, ukugcinwa nokuthembeka, ama-datasets amancane (ama-datasets asebenzayo ku-cache ye-MongoDB), kanye nokuhlolwa kwe-real-time
Ukuhlobisa
I-cache layer ingatholakala kakhulu lapho i-RDBMS yakho ayikwazi ukunikezela ukusebenza kwe-query eyenza i-application yakho. Xa usebenzisa i-MongoDB, idatha ye-record kanye ne-cache functionality iyahlukaniswe ku-layer eyodwa, ukugcina imali futhi isikhathi sokuthuthukiswa.
I-cache e-distributed ingakwazi ukunciphisa izixazululo ze-RDBMS yakho, kodwa i-MongoDB ine-distribution ehlanganisiwe.
Qaphela le nqaku uma ungenza ukuthi isicelo yakho uyaziqhathaniswa ne-cache layer phakathi kwe-application yakho ne-MongoDB. Ngingathanda ukubuyekeza.
Funda kabanzi mayelana ne-MongoDB design reviews
Kulesi isihloko esifundisa ukuthi ukucubungula isakhiwo se-MongoDB esifanayo indlela yokusebenza kwe-application yakho nge-data kungatholakala nezidingo zakho zokusebenza ngaphandle kokufuna isakhiwo se-cache. Uma ufuna ukunakekela ukuqala isakhiwo se-mongoDB, isakhiwo sokubuyiselwa indlela yokufumana lokhu ukunakekela.
Ingabe isicelo sakho uyaziqhathanisa ukubuyekezwa?