Hacker News

Ana rarrabawa akan Tari

Sharhi

14 min read Via go.dev

Mewayz Team

Editorial Team

Hacker News

Me yasa Har yanzu Rarraba Tari Yana Da Muhimmanci A Injiniyan Software na Zamani

A duk lokacin da aikace-aikacen ku ya aiwatar da buƙatu, ya ƙirƙiri mai canzawa, ko ya kira aiki, ana yin yanke shawara shiru a bayan fage: a ina ya kamata wannan bayanan su kasance cikin ƙwaƙwalwar ajiya? Shekaru da yawa, rabon tari ya kasance ɗaya daga cikin mafi sauri, mafi yawan dabarun ƙwaƙwalwar ajiya da ke akwai ga masu shirye-shirye - duk da haka ya kasance ba a fahimta sosai ba. A cikin wani zamanin da gudanar runtimes, datti tara, da kuma girgije-yan qasar architectures, fahimtar yadda da kuma lokacin da za a kasaftawa a kan tari iya nufin bambanci tsakanin aikace-aikace da cewa rike 10,000 lokaci guda masu amfani da daya cewa buckles a karkashin 500. A Mewayz, inda mu dandali hidima a kan 138,000 kasuwanci tare da 207 microconse hadedde modules.

Tari vs. Heap: Muhimmin Kashe Kasuwanci

Memory a yawancin mahallin shirye-shirye an kasu kashi biyu na farko: tari da tudu. Tarin yana aiki azaman tsarin bayanai na ƙarshe, na farko (LIFO). Lokacin da ake kiran aiki, ana tura sabon "frame" akan tari mai ƙunshe da sauye-sauye na gida, adiresoshin mayar, da sigogin aiki. Lokacin da wannan aikin ya dawo, gabaɗayan firam ɗin yana fitowa nan take. Babu bincike, babu ajiyar kuɗi, babu rarrabuwa - daidaitawar mai nuni ɗaya kawai.

Tarin, da bambanci, babban tafkin ƙwaƙwalwar ajiya ne inda rabo da ma'amala na iya faruwa ta kowane tsari. Wannan sassauci yana zuwa da tsada: dole ne mai rarrabawa ya bi diddigin waɗanne tubalan ke da kyauta, sarrafa rarrabuwa, kuma a cikin yaruka da yawa, dogara ga mai tara shara don dawo da ƙwaƙwalwar da ba a yi amfani da ita ba. Rarraba tsibi a cikin shirin C na yau da kullun yana ɗaukar kusan sau 10 zuwa 20 fiye da rabon tari. A cikin yarukan da aka tattara datti kamar Java ko C#, abin da ke sama zai iya zama mafi girma idan aka dakatar da tarin.

Fahimtar wannan ciniki ba kawai ilimi ba ne. Lokacin da kuke gina software wanda ke aiwatar da dubban ma'amaloli a cikin daƙiƙa guda - ko wannan injin invoicing ne, dashboard ɗin tantancewa na ainihin lokaci, ko shigo da manyan lambobin sadarwa na CRM - zabar dabarun rabon da ya dace don hanyoyin zafi kai tsaye yana tasiri lokutan amsawa da farashin kayayyakin more rayuwa.

Yadda Rarraba Tari A Gaske Aiki

A matakin kayan masarufi, yawancin gine-ginen na'ura mai sarrafawa suna sadaukar da rajista (ma'anar tari) don bin diddigin saman tari na yanzu. Bayar da ƙwaƙwalwar ajiya akan tari yana da sauƙi kamar rage girman wannan mai nuni da adadin da ake buƙata na bytes. Ma'amala shine baya: ƙara mai nuni. Babu masu rubutun metadata, babu lissafin kyauta, babu haɗar tubalan da ke kusa. Wannan shine dalilin da ya sa galibi ana bayyana rabon tari azaman samun aiki na O(1) akai-akai tare da sama da ƙasa mara kyau.

Yi la'akari da aikin da ke ƙididdige jimillar abin layin daftari. Yana iya ayyana wasu ƴan canji na gida: lamba mai yawa, tasowar farashin raka'a, tasowar ruwa na haraji, da kuma sakamakon iyo. Ana tura duk darajoji huɗu akan tari lokacin da aka shigar da aikin kuma ana karɓar su ta atomatik lokacin da ya fita. Gabaɗayan tsarin rayuwa yana da ƙayyadaddun ƙayyadaddun ƙayyadaddun bayanai kuma yana buƙatar shiga tsakani daga mai tsara shirye-shirye ko mai tara shara.

Maɓalli mai mahimmanci: Rarraba tari ba kawai sauri ba ne - ana iya tsinkaya. A cikin tsarin aiki mai mahimmanci, tsinkaya sau da yawa yana da mahimmanci fiye da ɗanyen gudu. Aikin da ke ci gaba da ƙarewa cikin daƙiƙa 2 yana da daraja fiye da wanda ke kai matsakaicin 1 microsecond amma lokaci-lokaci yana ƙaru zuwa 50 micro seconds saboda dakatarwar tattara shara.

Lokacin da za'a yarda da Rarraba Tari

Ba kowane yanki na bayanai ne ke cikin tarin ba. Ƙwaƙwalwar ƙwaƙwalwar ajiya tana da iyaka (yawanci tsakanin 1 MB zuwa 8 MB akan kowane zaren, dangane da tsarin aiki), kuma bayanan da aka keɓe akan tari ba zai iya wuce aikin da ya ƙirƙira shi ba. Koyaya, akwai bayyanannun yanayi inda rabon tari shine mafi kyawun zaɓi.

  • Masu canjin yanayi na ɗan gajeren lokaci: Ma'auni, masu tarawa, maƙallan wucin gadi a ƙarƙashin ƴan kilobytes, da fihirisar madauki sun dace da tari. An ƙirƙira su, amfani da su, kuma a watsar da su a cikin iyakar aiki ɗaya.
  • Tsarin bayanai masu ƙayyadaddun girman: Tsarukan tare da sanannen girman lokacin tattarawa, ƙananan tsari, da nau'ikan ƙima ana iya sanya su a kan tari ba tare da haɗarin ambaliya ba. Matsakaicin 256-byte don tsara kirtani kwanan wata shine cikakken ɗan takara.
  • Performance-mahimman madaukai na ciki: Lokacin da ake kiran aikin miliyoyin sau a cikin daƙiƙa guda - kamar injin ƙididdige farashin farashi akan kasidun samfur - kawar da ƙayyadaddun ƙima a cikin madauki na iya samar da 3x zuwa 10x haɓaka abubuwan samarwa.
  • Hanyoyi na ainihi ko latency-hanyoyi: Gudanar da biyan kuɗi, sabuntawar dashboard ɗin kai tsaye, da aika sanarwar duk suna fa'ida daga nisantar dakatarwar da ba ta dace ba.
  • Algorithms masu maimaitawa tare da zurfin iyaka: Idan za ku iya ba da tabbacin zurfin maimaitawa ya tsaya a cikin iyakoki masu aminci, firam ɗin da aka keɓancewa suna kiyaye ayyukan maimaitawa cikin sauri da sauƙi.

A aikace, masu tarawa na zamani sun yi fice sosai wajen inganta amfani da tari. Dabaru kamar binciken tserewa a cikin Go da Java's JIT compiler na iya matsar da ma'auni ta atomatik zuwa tari lokacin da mai tara bayanai ya tabbatar da cewa bayanan ba su tsira daga aikin ba. Fahimtar waɗannan haɓakawa yana ba ku damar rubuta lambar tsabta yayin da kuke ci gaba da fa'ida daga aiki.

Masu Matsalolin Da Suka Faru Da Yadda Ake Gujewa Su

Mafi shaharar kwaro da ke da alaƙa shine tari mai cike da zubewa - ware ƙarin bayanai fiye da abin da za a iya ɗauka, yawanci ta hanyar maimaitawa mara iyaka ko manyan jeri na gida. A cikin yanayin samarwa, tari mai ambaliya yakan rushe zaren ko gaba dayan aikin ba tare da wata kyakkyawar hanyar dawowa ba. Wannan shine dalilin da ya sa ginshiƙai da tsarin aiki ke ƙaddamar da iyakokin girman tari.

Wani ramin dabara shine maido da masu nuni ko nassoshi ga bayanan da aka ware. Saboda ana dawo da tari a lokacin da aiki ya dawo, duk wani mai nuni ga wannan ƙwaƙwalwar yana zama abin tunani mai raɗaɗi. A cikin C da C++, wannan yana haifar da halayen da ba a bayyana ba wanda zai iya bayyana yana aiki a gwaji amma ya kasa yin bala'i a samarwa. Mai duba bashi na Rust yana kama wannan nau'in kuskure a lokacin tattarawa, wanda shine dalili ɗaya da ya sa yaren ya sami karɓuwa don shirye-shiryen tsarin.

Batu na uku ya ƙunshi amincin zaren. Kowane zaren yana samun nasa jigon, wanda ke nufin bayanan da aka keɓe tari-na-sani ne. Wannan haƙiƙa fa'ida ce a yawancin lokuta - ba a buƙatar makullai don samun dama ga masu canjin gida. Koyaya, masu haɓakawa wani lokaci suna yin kuskure na ƙoƙarin raba bayanan da aka ware tsakanin zaren, haifar da yanayin tsere ko kwaro-bayan amfani. Lokacin da ake buƙatar raba bayanai a cikin zaren ko nace fiye da kiran aiki, tarin shine zaɓin da ya dace.

💡 DID YOU KNOW?

Mewayz replaces 8+ business tools in one platform

CRM · Invoicing · HR · Projects · Booking · eCommerce · POS · Analytics. Free forever plan available.

Start Free →

Tsarin Rarraba Tsakanin Harsuna da Tsarin Mulki

Harsunan shirye-shirye daban-daban suna gudanar da rabon tari tare da mabanbantan matakan bayyanawa. A cikin C da C++, mai shirye-shiryen yana da iko a bayyane: masu canji na gida suna tafiya akan tari, kuma malloc ko sabuwa yana sanya bayanai akan tulin. A cikin Go, mai tarawa yana yin nazarin tserewa don yanke hukunci ta atomatik, kuma goroutines suna farawa da ƙananan 2 KB masu girma da ƙarfi - ingantaccen bayani wanda ke daidaita aminci tare da aiki. PHP, tsarin sarrafa harshe kamar Laravel, yana keɓance mafi yawan dabi'u ta wurin mai sarrafa ƙwaƙwalwar ajiya na Zend Engine na ciki, amma fahimtar ƙa'idodin da ke ƙasa yana taimaka wa masu haɓakawa su rubuta ingantaccen lamba har ma a matakin aikace-aikacen.

Don ƙungiyoyin da ke gina hadaddun dandamali - kamar ƙungiyar injiniya a Mewayz, inda buƙatu ɗaya za ta iya ƙetare dabarun CRM, lissafin lissafin kuɗi, ƙididdigar harajin biyan kuɗi, da tattara ƙididdiga - waɗannan ƙananan matakan yanke shawara. Lokacin da nau'ikan 207 ke raba lokacin aiki, rage yawan adadin ƙwaƙwalwar ajiyar buƙata ta ko da 15% na iya fassara zuwa ragi mai ma'ana a cikin farashin uwar garken da ci gaba mai ma'ana a lokutan amsa ga masu amfani da ƙarshen sarrafa kasuwancin su akan dandamali.

JavaScript da TypeScript, waɗanda ke iko da mafi yawan gaban gaba na zamani da Node.js baya, sun dogara gaba ɗaya ga mai tara shara na injin V8 don sarrafa ƙwaƙwalwar ajiya. Masu haɓakawa ba za su iya rarrabawa kai tsaye akan tari ba, amma V8's optimizing compiler (TurboFan) yana aiwatar da rabon tari a ciki don ƙimar da zai iya tabbatar da ɗan gajeren lokaci. Rubutun ƙananan ayyuka masu tsafta tare da masu canji na gida yana ba injin mafi kyawun damar yin amfani da waɗannan abubuwan ingantawa.

Dabarun Mahimmanci don Rage Matsayin Heap

Ko da kuna aiki a cikin babban yare inda ba za ku iya sarrafa tari kai tsaye ba tare da rarraba tudu, kuna iya yin amfani da tsarin da zai rage matsi maras buƙata kuma ya bar lokacin aiki ya inganta da ƙarfi.

  1. Fifi nau'ikan ƙima fiye da nau'ikan tunaniinda harshe ke goyan bayan su. A cikin C #, ta amfani da struct maimakon class don ƙananan abubuwa da aka ƙirƙira akai-akai suna ajiye su a kan tari. A cikin Go, wucewa ƙananan tsari ta ƙima maimakon ta mai nuni yana samun tasiri iri ɗaya.
  2. A guji raba madaukai masu tsatsauran ra'ayi. Idan kana buƙatar yanki na wucin gadi ko tsararru a cikin madauki wanda ke gudana sau 100,000, ware shi sau ɗaya kafin madauki kuma sake saita shi akan kowane juzu'i.
  3. Yi amfani da haɗa abubuwan don abubuwan da aka ƙirƙira akai-akai da kuma lalata su. Tafkunan haɗin bayanai sune misali na yau da kullun, amma tsarin yana aiki daidai da abubuwan buƙatun HTTP, serialization buffers, and computation context structs.
  4. Profile kafin ingantawa. Kayan aiki kamar Go's pprof, Java's async-profiler, ko PHP's Blackfire na iya nuna daidai inda aka ware. Ingantawa ba tare da yin bayanin bayanan ba yana haifar da haɗarin kashe ƙoƙari kan hanyoyin sanyi waɗanda ba kasafai ake aiwatarwa ba.
  5. Yi amfani da na'urori masu rarraba fage don gudanar da ayyukan batch.

Wadannan dabarun ba kawai ka'ida ba ne. Lokacin da dandamali na SaaS ke ɗaukar nauyin aiki na ainihi na duniya - ƙaramin ɗan kasuwa wanda ke samar da daftarin wata-wata, manajan HR yana gudanar da biyan albashi ga ma'aikata 200, ƙungiyar tallan tallace-tallace da ke nazarin ayyukan yaƙin neman zaɓe a cikin tashoshi - tasirin ingantaccen sarrafa ƙwaƙwalwar ajiya yana ɗaukar hankali, ƙarin ƙwarewar amsawa wanda masu amfani ke ji koda kuwa ba su taɓa tunanin abin da ke faruwa a ƙasa ba.

Ƙararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwaƙwalwa

Rarraba tari shine yanki ɗaya na babban wasan wasa mai wuyar warwarewa, amma yana da tushe. Fahimtar yadda ƙwaƙwalwar ajiya ke aiki a mafi ƙanƙanci yana ba injiniyoyi ƙirar tunani da suke buƙata don yanke shawara mafi kyau a kowane yanki na tari - daga zaɓar tsarin bayanai da ƙirƙira APIs zuwa daidaita abubuwan more rayuwa da saita iyakokin albarkatu don ayyukan kwantena.

Ga 'yan kasuwa da ke dogaro da dandamali kamar Mewayz don gudanar da ayyukansu na yau da kullun, sakamakon waɗannan yanke shawara na injiniya abu ne mai ma'ana: lodin shafi cikin sauri, mu'amala mai laushi, da kuma kwarin gwiwa cewa tsarin ba zai ragu a ƙarƙashin babban nauyi ba. Lokacin da tsarin yin rajista yana buƙatar bincika samuwa a cikin ɗimbin kalanda a cikin ainihin lokaci, ko dashboard ɗin nazari yana tattara bayanai a cikin sassan kasuwanci da yawa, dabarun ƙwaƙwalwar ajiya yana da mahimmanci fiye da yawancin masu amfani da za su taɓa fahimta.

Mafi kyawun software yana jin ƙarancin amfani da shi daidai saboda waɗanda suka ƙirƙira su sun yi gumi da cikakkun bayanai waɗanda suka rage ganuwa. Rarraba tari - mai sauri, ƙaddara, da kyakkyawa a cikin sauƙi - yana ɗaya daga cikin waɗannan cikakkun bayanai da suka cancanci fahimta sosai, ko kuna rubuta shirinku na farko ko ƙirƙirar dandamali wanda ke hidimar dubban kasuwanci a duk duniya.

Tambayoyin da ake yawan yi

Mene ne rabon tari kuma me yasa yake da mahimmanci?

Ƙididdigar tari shine dabarun sarrafa ƙwaƙwalwar ajiya inda ake adana bayanai a cikin tsari na ƙarshe, na farko wanda tsarin aiwatar da shirin ke sarrafa kai tsaye. Yana da mahimmanci saboda ƙayyadaddun ƙwaƙwalwar ajiya tana da sauri fiye da rarrabuwa - babu mai tara shara sama da ƙasa, babu rarrabuwa, kuma ma'amala yana nan take lokacin da aikin ya dawo. Don aikace-aikacen da ke da mahimmanci, fahimtar rarraba tari na iya rage jinkiri sosai da haɓaka kayan aiki.

Yaushe zan yi amfani da kayyade tari akan kasafi?

Yi amfani da rarrabuwa ga ƙananan, gajere masu canji tare da sanannen girman a lokacin tattarawa - kamar su ƙididdiga na gida, tsari, da tsararraki masu tsayi. Rarraba tsibi ya fi dacewa da manyan tsarin bayanai, tarin masu girman gaske, ko abubuwan da ke buƙatar wuce aikin da ya ƙirƙira su. Ƙa'idar maɓalli: idan bayanan rayuwar rayuwar ya yi daidai da iyakar aikin kuma girmansa ana iya hasashensa, tari kusan koyaushe shine zaɓi mafi sauri.

Shin za a iya hana tari kurakurai a cikin aikace-aikacen samarwa?

Ee, ana iya hana kurakuran cunkoso tare da ingantattun ayyukan injiniya. Guji maimaituwa mai zurfi ko mara iyaka, iyakance manyan guraben rarrabuwa na gida, da amfani da algorithms na maimaitawa inda zai yiwu. Yawancin harsuna da tsarin aiki suna ba ku damar saita iyakokin girman tari. Kayan aikin sa ido da mafita kamar Mewayz, OS na kasuwanci-module 207 wanda ke farawa daga $19/mo, zai iya taimakawa ƙungiyoyi su bibiyar lafiyar aikace-aikacen da kuma kama koma bayan aiki da wuri.

Shin har yanzu harsunan zamani suna cin gajiyar rabon tari?

Lallai. Hatta harsunan da ake gudanar da lokacin gudu-kamar Go, Rust, C#, da Java - suna amfani da bincike na tserewa don sanin ko za a iya rarraba masu canji maimakon tarawa. Tsatsa tana tilasta wa kasafta ta farko ta hanyar samfurin mallakarta, kuma mai tarawa Go's yana inganta shi sosai. Fahimtar waɗannan injiniyoyi na taimaka wa masu haɓakawa su rubuta lambar da masu tarawa za su iya inganta yadda ya kamata, yana haifar da ƙarancin amfani da ƙwaƙwalwar ajiya da saurin aiwatarwa.

Try Mewayz Free

All-in-one platform for CRM, invoicing, projects, HR & more. No credit card required.

Start managing your business smarter today

Join 30,000+ businesses. Free forever plan · No credit card required.

Ready to put this into practice?

Join 30,000+ businesses using Mewayz. Free forever plan — no credit card required.

Start Free Trial →

Ready to take action?

Start your free Mewayz trial today

All-in-one business platform. No credit card required.

Start Free →

14-day free trial · No credit card · Cancel anytime