Neomodel Python OGM: Qoto dheer u gal qaabaynta Neo4j

Cusbooneysiintii ugu dambeysay: 12/06/2025
  • Neomodel waa Pythonic OGM ee Neo4j, oo bixiya moodooyinka ku salaysan fasalka, fulinta schema, iyo API su'aal qani ah oo korka ka saaran darawalka rasmiga ah.
  • Siideynta hadda waxay raacdaa SemVer, waxay taageertaa noocyada casriga ah ee Python iyo Neo4j, waxayna soo bandhigaan hubinta wadnaha ee adag, habayn wanaagsan, iyo kontaroolada isku darka dufcadaha.
  • Maktabadu waxay siisaa API-yada isku-dhafka ah iyo async-ka labadaba, aaladaha schema ee tooska ah, isku-dhafka Django, iyo fur-furasho dabacsan oo Cypher cayriin ah loogu talagalay weydiimaha adag.
  • Hadda qayb ka mid ah Shaybaarada Neo4j, neomodel faa'iidooyinka dayactirka firfircoon, tijaabooyinka isdhexgalka, iyo jawaab celinta wax soo saarka adduunka dhabta ah ee ka yimaada hawlgelinta ganacsiga.

neomodel Python ogm

Neomodel waa Python Object-Graph Mapper (OGM) oo loogu talagalay inuu ka dhigo la shaqaynta Neo4j inuu dareemo mid dabiici ah sida qorista koodka Python caadiga ah. Halkii aad gacanta ku samayn lahayd su'aalaha Cypher had iyo jeer, waxaad ku sifaynaysaa garaafkaaga fasalo, goobo, iyo xidhiidhyo, oo u ogolow neomodel inuu qabto khariidaynta u dhaxaysa walxaha Python iyo qanjidhada Neo4j iyo xidhiidhada. Waxaa lagu dhisay dusha sare ee darawalka Neo4j Python ee rasmiga ah, oo leh lakab khafiif ah oo khafiif ah, si aad u hesho ku habboonaansho heer sare ah adigoon u hurayn waxqabad badan.

Iyada oo qayb ka ah nidaamka deegaanka Neo4j Shaybaarka, neomodel si firfircoon ayaa loo ilaaliyaa, si buuxda ayuu u taageeraa noocyada casriga ah ee Python iyo Neo4j, wuxuuna bixiyaa API-yada isku-dhafka ah iyo kuwa aan isku midka ahayn. Waxay keentaa qeexitaanno la yaqaan oo u eg Django, API su'aal qani ah, dhaqan gelinta schema iyada oo loo sii marayo wacadnimada, macaamilo la dhisay, iyo is dhexgal adag oo lala yeesho Django iyada oo loo marayo django_neomodel. Isla mar ahaantaana, waxay ku dhowdahay birta: waxaad had iyo jeer hoos ugu dhici kartaa Cypher cayriin marka waxqabadka ama kakanaanta weydiintu ay dalbato.

Waa maxay neomodel iyo sababta ay muhiim u tahay

Neomodel waa Shayga Graph Mapper ee Neo4j xogta garaafyada, isku xidhka fasallada Python iyo qaab-dhismeedka garaafyada. Halkii aad gacanta ku abuuri lahayd qanjidhada iyo cilaaqaadka iyada oo loo marayo xargaha Cypher, waxaad qeexdaa fasallada Python ee matalaya hay'adaha domainkaaga, neomodelna wuxuu u rogaa noodo calaamadeysan oo leh astaamo la tilmaamay iyo xannibaadyo gudaha Neo4j. Waxay ku dul dhistaa dusha sare ee rasmiga ah neo4j-python-driver, sidaa darteed hab-dhaqankiisu waxa uu la jaan qaadayaa waxa aad samayn lahayd adigoo si toos ah u isticmaalaya darawalka.

Maktabadu waxay diiradda saartaa qaab la yaqaan, qaab qaabaynta fasalka ku salaysan oo leh dhaxal adag, qabsatooyin, iyo ansaxinta. Habkani wuxuu si gaar ah ugu raaxaystaa horumariyeyaasha loo isticmaalo Django ORM ama Python ORM-yada kale: sifooyinka fasallada moodeelkaaga waxay u dhigmaan guryaha Neo4j, halka goobaha xiriirka gaarka ah ay qabtaan geesaha garaafyada. Habayntan, socodka garaafku waxa uu noqdaa arin raacaya sifada walxaha halkii aad qori lahayd Cypher mar kasta.

Daboolka hoostiisa, neomodel wuxuu bixiyaa API weydiimo awood leh oo daboolaya qaababka gelitaanka garaafyada caadiga ah iyada oo aan kugu qasbin Cypher cayriin isla markaaba. Waad shaandheyn kartaa, dalban kartaa, xiriiri kartaa, gooyn kartaa noodhka, oo waxaad samayn kartaa hawlgallo horumarsan adoo adeegsanaya interface Pythonic ah. Marka loo baahdo, weli waxaad heli kartaa a cypher_query caawiye si uu u fuliyo weydiimaha gaarka ah oo si toos ah ula shaqeeyo natiijooyinka la soo celiyay.

Tilmaame kale oo udub dhexaad u ah waa fulinta schema iyada oo loo marayo xeerarka diinta ee cilaaqaadka iyo caqabadaha hantida. Adigoo si toos ah u qeexaya kartida (tusaale, eber-ama-ka badan, hal-ama-kabadan, ama hal) si toos ah goobaha xiriirka, waxaad ku xoojin kartaa filashada qaabdhismeedka garaafkaaga oo u ogolow neomodel inuu kaa caawiyo inaad iska ilaaliso xogta aan iswaafaqsanayn. Tusmooyinka iyo xaddidaadaha si toos ah ayaa loo abuuraa iyadoo lagu salaynayo qeexitaannada moodeelka, waxaana jira utilities CLI si loogu dabaqo ama looga saaro xogta hab la kontoroolo.

Neomodel sidoo kale wuxuu si buuxda u taageeraa shaqada wax kala iibsiga waana badbaado in lagu isticmaalo bey'ado badan oo xadhig leh. Macaamilku waa la furi karaa oo waa la samayn karaa si la saadaalin karo, iyo sababtoo ah duubista ku wareegsan darawalka rasmiga ah ayaa si ula kac ah u khafiif ah, waxqabadka sare ee waxqabadka waa yar yahay. Astaamaha leh aaladaha sida Ayaxa ayaa muujinaya in lakabka abstraction neomodel uu ku daro daahitaanka ugu yar, xitaa marka uu ku jiro culeys isku mid ah.

Taageerada nooca, SemVer iyo qaabeynta

Soo daynta neomodel-ka casriga ahi waxa ay raacdaa nooca semantic (SemVer) iyada oo la isticmaalayo qaabka major.minor.patch. Tani waxay ka dhigan tahay in isbeddelada jebinta lagu soo bandhigo oo kaliya iyada oo leh kuuskuusan nooca weyn, sifooyin cusub iyada oo aan dabeecad jebin ay u yimaadaan siideyn yaryar, iyo hagaajinta cayayaanka ayaa loo soo raray sidii noocyo balastar ah. Istaraatiijiyadan qaabaynta ayaa sahlaysa in la qorsheeyo cusboonaysiinta, gaar ahaan nidaamyada wax soo saarka.

Taxanaha 6.x, neomodel waxa uu bartilmaameedsadaa nooca cusub ee Python iyo nooca Neo4j si uu ula mid noqdo waxa ugu daran ee la dirayo. Gaar ahaan, neomodel 6.x wuxuu u baahan yahay Python 3.10 ama ka cusub wuxuuna taageeraa Neo4j 5.x, Neo4j 4.4 LTS, iyo khadka cusub ee Neo4j 2025.xx. Labada Neo4j Community, Neo4j Enterprise, iyo Neo4j Aura (adeegga la martigeliyay) waa la taageeray, taasoo ku siinaysa dabacsanaan sida iyo meesha aad ku martigeliso xogta.

Deegaanadii qadiimka ahaa, laamihii hore ee neomodel weli waxay daboolayaan isku darka Python iyo Neo4j dhaxalka ah. Xariiqda 5.x waxay taageertaa Python 3.8+ oo leh Neo4j 5.x iyo 4.4 (LTS), halka xariiqda 4.x ay daboosho Python 3.7 illaa 3.10 iyo Neo4j 4.x, oo ay ku jiraan 4.4 LTS marka la isticmaalayo neomodel 4.0.10. Sheekadan waafaqid waxa ay suurtogal ka dhigaysaa in si tartiib tartiib ah hore loogu socdo iyadoo la ilaalinayo habayntaada hadda jirta.

Laga bilaabo neomodel 6, qaabeynta waxaa lagu maamulaa qaab casri ah, nooca xogta lagu sharraxay oo leh ansaxinta runtime iyo taageerada beddelka deegaanka. Halkii laga heli lahaa goobaha ad-hoc ee kala firdhiyey, goobaha qaabaynta ayaa lagu ansaxiyey cusboonaysiinta, oo ay ku jiraan hubinta nooca iyo caqabadaha macquulka ah. Doorsoomayaasha deegaanka waxaa loo isticmaali karaa in si dadaal la'aan ah loo buriyo qaabeynta, kaas oo si wacan ugu ciyaara meelaynta weelka iyo jawiga daruuraha.

Siideynta 6.0 waxay sidoo kale soo bandhigaysaa isbeddelada jebinta cad iyo hagaajinta habdhaqanka si API looga dhigo mid la saadaalin karo. Tusaale ahaan, liiska xallinta ee Cypher hadda waxay soo celisaa qoto dheer oo la filayo: weydiin sida RETURN collect(node) ayaa khariidad u samayn doona results[0][0] halkii hore, aan caqli-gal ahayn results[0][0][0] qaab dhismeedka. Jeegaga wadinnimada ayaa adag oo si toos ah loo kartiyeeyay, iyo dhawr hawlo caawiye oo gooni ah ayaa loo wareejiyay bartamaha Database() iyo AsyncDatabase() fasalada singleton.

Rakibaadda iyo dejinta

Habka lagu taliyay ee lagu rakibo neomodel waa si toos ah PyPI adoo isticmaalaya maareeyaha xirmada ee aad doorbidayso. Waxaad ku dari kartaa jawi dalwad leh oo leh amar rakibid fudud ka dibna ku maamul casriyaynta adoo isticmaalaya ku-tiirsanaantaada caadiga ah. Haddii aad u baahan tahay isbeddeladii ugu dambeeyay ama aad rabto inaad wax ku darsato, waxa kale oo suurtogal ah inaad si toos ah uga rakibto kaydka GitHub.

Kahor intaadan socodsiin koodka neomodelka, waa inaad dejisaa URL-ka isku xirka si ay maktabaddu u ogaato sida loo gaadho tusaalahaaga Neo4j. Habayntan ayaa sida caadiga ah ka mid ah nidaamka (Bolt ama Neo4j), martida loo yahay, dekedda, magaca isticmaalaha, erayga sirta ah, iyo magaca xogta macluumaadka ikhtiyaariga ah. Mashaariicda Django, qaabayntan waxaa badanaa lagu meeleeyaa settings.py sidaas awgeed waa la bilaabay isla marka codsigu bilaabo.

Haddii serfarkaga Neo4j uu dhawaan rakiban yahay, waa inaad beddeshaa erayga sirta ah ee caadiga ah adoo isticmaalaya browserka Neo4j ama maamulka. Sida caadiga ah, guddigaas waxaa laga heli karaa at http://localhost:7474. Markaad cusboonaysiisay furaha sirta ah oo aad xaqiijiso dbms.security.auth_enabled=true qaabeynta xogta xogta, waxaad diyaar u tahay inaad ka xirto neomodel.

Horumarinta iyo tijaabinta, waa wax caadi ah in la isticmaalo xog-ururin Neo4j oo gooni ah iyo aqoonsiyo gaar ah. Qaybta tijaabada ee Neomodel waxay filaysaa kaydka Neo4j 4+ waxayna ku tiirsan tahay doorsoomayaasha deegaanka si ay isugu xidhmaan. Haddii aad imtixaanada ku waddo kayd cusub oo cusub, qolka imtixaanku wuxuu dejin doonaa erayga sirta ah test sida caadiga ah; haddii ay ogaato kaydka xogta ee jira, way diidi doontaa inay sii socoto ilaa aad si cad u gudbiso calan dib u dejineed, kaa caawinaysa inaad iska ilaaliso luminta xogta shilalka ah.

Marka aad rabto in aad tijaabiso neomodel ee noocyada badan ee Python iyo Neo4j, Docker iyo docker-compose ayaa wax walba si toos ah u habayn kara. Mashruucu wuxuu bixiyaa qaabaynta si loo miisaamo jaantusyada noocyada turjubaanka iyo sii deynta Neo4j si imtixaanada isdhexgalka loo fuliyo si joogto ah. Tani waxay si gaar ah faa'iido u leedahay haddii aad wax ku biirinayso sifooyin ay tahay inay ka shaqeeyaan noocyo badan oo la taageeray.

Astaamaha asaasiga ah: moodooyinka, schema iyo tusmooyinka

Wadnaha Neomodel wuxuu ku dhex jiraa qeexitaannada qaabka fasalka ku salaysan ee si toos ah u khariidadeeya sumadaha Neo4j iyo xidhiidhada. Caadi ahaan waxaad ka soo qaadanaysaa fasallada noodegaaga StructuredNode, iyo fasallada xiriirka ka StructuredRel. Goobaha Node waxaa lagu qeexaa iyadoo la adeegsanayo noocyada hantida neomodel-gaar ah, kuwaas oo xakameynaya sida xogta loo kaydiyo loona ansaxiyo Neo4j.

Nooc kasta oo nooc ah wuxuu noqdaa calaamad ku taal Neo4j, iyo neomodel wuxuu si toos ah u maamulaa tusmooyinka iyo caqabadaha ku salaysan qeexitaannadaada. Tani waxay ka dhigan tahay in gaar-ahaanshiyaha, guryaha loo baahan yahay, iyo meelaha tusmaysan ay dhammaantood lagu qeexi karo Python iyada oo aan la isticmaalin amarrada Cypher ee abuuritaanka schema. Muuqaalka gadaashiisa, neomodel waxa uu u tarjumaa tusaalaha badan ee xogtaada hawlo qorshaysan oo Neo4j ah.

Cilaaqaadku waxa ay ku xidhan yihiin fasalada node-ka iyadoo la isticmaalayo sharraxayaal gaar ah sida RelationshipTo, RelationshipFrom, Iyo Relationship. Sharaxayaashu waxay qeexayaan nooca xiriirka, jacaylka, iyo jihada loo maro. RelationshipTo iyo RelationshipFrom u muuji jihayn hal-jiho ah marka laga eego aragtida Python, halka Relationship waxaa loo isticmaalaa marka aad rabto in aad ula dhaqanto xiriirka sida loo maro labada jiho ee code, in kastoo Neo4j laftiisa had iyo jeer kaydiyaa cilaaqaadka jihada.

Marka cilaaqaadku si macquul ah u laba jiho, dhaqanka lagu taliyay waa in laga fogaado abuurista laba goobood oo muraayad ah oo la isticmaalo hal Relationship halkii. Samaynta sidaas ayaa ka dhigaysa moodelkaaga nadiif ah oo joogto ah iyadoo weli u oggolaanaysa in loo maro labada jiho ee code kaaga Python. Neo4j wuxuu wali ku kaydin doonaa xidhiidhka toosan ee daboolka hoostiisa, laakiin neomodel's abstraction's ayaa qarinaya faahfaahintaas marka la marayo.

Xaaladaha halka qaab-dhismeedka noodhka aan si buuxda loo aqoon ka hor, neomodel wuxuu bixiyaa a SemiStructuredNode fasalka salka. Fasallada laga soo qaatay noocaan waxay hayn karaan guryaha "ad-hoc" kuwaas oo aan si cad loogu qeexin qaabka. Tani waxay si gaar ah u anfacaysaa marka jaantuska garaafku uu si joogto ah u horumaro ama marka aad u baahan tahay inaad ku xidho sifooyin dheeraad ah oo marmar ah adiga oo aan dib u habayn qaabka mar kasta.

Xeerarka Cardinality waxay xoojiyaan tirada xidhiidhada la ogol yahay ee u dhexeeya noodhka waxaana hadda taageeray hubinta adag ee neomodel 6. Jeegaga jilicsan ee wadnaha ayaa diyaar u ah dhammaan kaararka xidhiidhka, iyo hubinta adag waa la suurtogeliyaa si toos ah. Haddii xogtaadu ku xad gudubto xeerarka xiriirka habaysan, neomodel ayaa soo bixi doona arrinta halkii uu aamusnaan u ogolaan lahaa in qaab-dhismeedka aan iswaafaqsanayn uu sii jiro.

Maaraynta schema ee tooska ah iyo kormeerka

Markaad qeexdo ama cusbooneysiiso moodooyinkaaga, waxaad u baahan tahay inaad ku dabaqdo caqabadaha iyo tusmooyinka u dhigma xogta Neo4j. Neomodel wuxuu wataa qoraal la yiraahdo neomodel_install_labels kaas oo baara moodooyinkaaga oo abuura ama cusbooneysiiya tusmooyinka iyo caqabadaha loo baahan yahay. Ka dib markaad bedesho qorshahaaga, waa inaad socodsiisaa qoraalkan oo aad dib u eegtaa tirada la soo sheegay ee fasallada la habeeyey si aad u xaqiijiso in wax walba ay isku mid yihiin.

Haddii aad waligaa u baahan tahay inaad tirtirto caqabadaha iyo tusmooyinka ay maamusho neomodel, waxaa jira amar dhammaystiran oo la yiraahdo neomodel_remove_labels. Qoraalkani wuxuu si toos ah hoos ugu dhigayaa dhammaan caqabadaha jira iyo tusmooyinka uu neomodel hore u rakibay. Waxa kale oo ay daabacdaa waxa la saaray si aad si cad u aragto saamaynta hawlgalka.

Labada amar-maamuleedka waxay taageeraan a --db dooda iyo u qalmida NEO4J_BOLT_URL doorsooma deegaan marka aan la bixin. Dabeecaddani waxay caawisaa in aqoonsiga iyo tafaasiisha isku xidhka laga ilaaliyo taarikhda xariiqda taliska waxayna awood u siinaysaa qaabaynta fudud iyada oo loo marayo doorsoomayaasha deegaanka. Waxa kale oo ay ka dhigaysa automation-ka iyo qoraalada geynta si fudud in la maareeyo.

Dusha sare ee abuuritaanka schema, neomodel waxa ku jira qalab baadhista kaydka kaas oo rogi kara-injineer garaaf jira oo dhalin kara fayl moodeel ah. Isticmaalka inspect amarka (kaas oo u baahan habraacyada APOC ee lagu rakibay Neo4j), waad iskaan kartaa keydka macluumaadka oo aad soo saartaa a models.py ku fayl gareeya hagaha bartilmaameedka ah sida yourapp. Faylka la soo saaray waxaa ka mid ah soo dejinta, qeexitaannada fasalka noodhka, iyo qeexitaannada xiriirka ee u dhigma qaab dhismeedka garaafyada la ogaaday.

Habka kormeerka waxaa lagu hagaajin karaa garaafyo waaweyn iyadoo laga boodo guryaha xiriirka iyo sawirka wadnaha. Xog-ururin leh boqollaal kun oo nood ah iyo in ka badan hal milyan oo xiriir, sawirka buuxa wuxuu qaadan karaa daraasiin ilbiriqsi. Ikhtiyaarada sida --no-rel-props iyo --no-rel-cardinality dedejiso adiga oo meesha ka saaraya falanqaynta faahfaahsan, walina soo saaraysa goobaha xidhiidhka laakiin ka dhigaysa cardinnimada qiime guud sida ZeroOrMore.

La shaqaynta neomodel Query API

Neomodel's Query API wuxuu kuu ogolaanayaa inaad ku sameyso su'aalo garaafyo qani ah adigoo isticmaalaya hababka Python ee fasalada moodeelka halkii aad si toos ah u qori lahayd Cypher. Nooc kastaa wuxuu daaha ka qaadaa a .nodes sifada maareeye u eeg oo ka dhigan go'an noodhka leh summada u dhiganta. Halkaa, waxaad tirin kartaa, shaandhayn kartaa, dalban kartaa, jarjari kartaa, oo aad soo qaadan kartaa xogta garaafyada hoose.

Wicitaan len(MyModel.nodes) kiciya su'aal Cypher ah oo tirinaya noodhadhka leh calaamadda u dhiganta MyModel. Tani waxay bixisaa hab dareen leh oo lagu helo tirinta adoon ka tagin Python syntax. Haddii guntinkaaga mar hore la sifeeyey, tiradu waxay ka tarjumaysaa oo keliya qanjidhada u dhigma filtarradaas, oo u dhigma habdhaqanka aad ka filan karto ORM-ga caadiga ah.

Goynta waxaa si toos ah loogu taageeraa xirmooyinka noodhka, taas oo aad faa'iido u leh markaad rabto inaad ka shaqeyso natiijooyin la dubay. Odhaahyada sida MyModel.nodes[0:10] soo celi gogol go'an oo aad ku celcelin karto silsilad dheeraad ah oo leh filtarrada dheeraadka ah. Jeexdu kuma soo celiso liis cayriin isla markaaba balse waxay soo celisaa shay kale oo nood ah, si aad tallaabo tallaabo u dhisto weydiimaha adag.

Node wuxuu dejiyaa taageerada soo noqnoqoshada iyo hubinta booleenka, in kasta oo dhererka iyo hawlgallada runtu ay yihiin kuwo dhammaad ah. Markaad qiimeyso len() ama isticmaal noode ku dhejisan macnaha boolean, waxaad si wax ku ool ah u kicinaysaa tallaabo qiimayn ah oo soo celinaysa natiijo la taaban karo halkii aad ka ahaan lahayd shay kale oo la silsiladaysan karo. Naqshadani waxay dheellitiraysaa sarbeebaha Python iyo dabeecadda caajiska ah ee dhismaha weydiinta.

Soo celinta walxaha dhabta ah, waxaad caadi ahaan isticmaashaa habab sida .all() iyo .get() ku saabsan .nodes maamulaha. Hababkani waxay heli karaan a lazy=True dood ku saabsan in la soo celiyo aqoonsiyada noodhka oo kaliya halkii ay ka ahaan lahaayeen walxo buuxa iyo dhammaan hantidooda. Tani waa mid waxtar leh haddii aad rabto inaad yareyso wareejinta xogta ama aad sameyso su'aalo dabagal ah gacanta oo ku saleysan aqoonsiga.

Abuur, cusboonaysii, tirtir oo xidhiidho

Abuuritaanka qanjidhada leh neomodel waa mid fudud sida degdegga fasalkaaga moodeelka iyo wacitaanka save(). Markaad qeexdo hantidaada iyo khaladaadkaaga, waxaad samayn kartaa tusaale leh qiyamka goobta aad rabto, wac save, iyo neomodel ayaa abuuri doona ama cusbooneysiin doona noodhka u dhigma ee Neo4j. Tani waxay la mid tahay sida badi ORM-yada ay ula tacaalaan adkaysiga.

Cusbooneysiinta qanjirada waxay raacdaa qaab la mid ah: soo qaado tusaale, ku qor qiimeyaal cusub sifadeeda, oo mar kale badbaadi. Neomodel waxa uu daryeelaa soo saarida Cypher saxda ah si uu wax uga bedelo kaliya guryaha la bedelay ee ku yaala noodhka jira. Habkani wuxuu ilaalinayaa koodkaaga mid toos ah wuxuuna ka dhigayaa faahfaahinta hawlgallada cusboonaysiinta inay ka baxsan yihiin caqligalnimada ganacsigaaga.

Tirtirka noodhka sidoo kale waa toos: mar haddii aad haysato tusaale, waxaad wacdaa delete() habka. Tani waxay meesha ka saaraysaa noodhka oo, iyadoo ku xidhan qaabaynta xidhiidhkaaga iyo caqabadaha xog ururinta, waxa kale oo laga yaabaa inay meesha ka saarto xidhiidhada ku lifaaqan. Kahor tirtirka iyo tirtirka ka dib jillaabyada waxaa lagu qeexi karaa habdhaqan aad u horumarsan ama qorid.

Cilaaqaadka ka dhexeeya qanjidhada waxaa lagu maareeyaa goobaha xiriirka iyo hababka ku haboon sida connect(). Marka aad leedahay laba nood, waxaad wici kartaa wax la mid ah actor.movies.connect(movie) si loo abuuro tusaale xiriir ku habboon garaafka. Guryaha xidhiidhka waxa loo qaabayn karaa iyada oo loo marayo StructuredRelfasalo ku salaysan, oo ku siinaya meel aad ku kaydiso sifooyinka geesaha sidoo kale.

Garaafyo badan oo kakan ayaa lagu gaari karaa iyadoo la raaco sifooyinka xiriirka ama la isku daro shaandhada weydiimaha ee xiriirka. Tusaale ahaan, waxaa laga yaabaa inaad ka bilowdo a Entity noodhka go'an, ku shaandhee hantida qaar, ka dibna u gudub noodhadhka la xidhiidha sifooyinkooda sidoo kale. Tani waxay si tartiib tartiib ah u dhiseysaa weydiinta Cypher hoosteeda, kaas oo neomodel uu ku fulinayo magacaaga.

Async neomodel iyo sync API oo la turjumay

Neomodel waxaa ku jira taageerada asynchronous ee lagu dhisay korka awoodaha async ee darawalka rasmiga ah ee Neo4j Python. Tani waxay ka dhigan tahay inaad ku dhex dari karto hawlaha Neo4j qaab-dhismeedka casriga ah ee async Python qaab-dhismeedka iyo adeegyada, adigoo si buuxda uga faa'iideysanaya isku-dhafka culeyska shaqada ee ku lug leh hawlo badan oo I/O ku xiran.

Tijaabada waxqabadka ee qalabyada sida Locust ayaa tusiyay in async neomodel, marka isla markaa la isticmaalo, uu ka sarreeyo labada weydiimood ee taxanaha ah iyo isla mar ahaantaana la fuliyay wicitaanada neomodel-ka ee isku midka ah. Sababtoo ah hawlo garaafyo badan ayaa ku lug leh shabakada I/O iyo sugitaanka jawaabaha xogta, u ogolaanta dhacdada loop in ay qabato su'aalo badan hal mar waxay dhalinaysaa wax soo saar wanaagsan iyo ka faa'iidaysiga kheyraadka.

Gudaha, neomodel waxa uu hayaa async-ka iyo isku xidhka API-yada is-waafaqsan iyadoo la adeegsanayo tillaabada gudbinta oo u beddeleysa koodhka async u dhigma. Maktabad gaar ah ayaa loo isticmaalaa in si toos ah loo furo await ereyada muhiimka ah, dib u magacaw fasalada (tusaale, ka saarida Async Horgalayaasha), oo sameeya beddelka la beegsaday sida beddelka adb ilaa db or mark_async_test ilaa mark_sync_test. Habkani waxa uu ka fogaanayaa in la sii hayo laba codebases oo kala duwan.

Markaad wax ku darsanayso, waxaad ugu horrayn ka shaqeysaa hirgelinta async ee hoos timaada neomodel/async_ ka dibna socodsii qoraalka gudbinta ee la bixiyay si aad u abuurto kala duwanaanshiyaha isku midka ah. Waxa kale oo aad ku tiirsanaan kartaa qabsatooyinka ballan-qaadka hore si aad si otomaatig ah ugu samayso tallaabadan oo aad u hubiso in labada noocba ay sii wada socdaan. Xaalado badan, caqligaaga ganacsigu wuxuu u baahan yahay kaliya in lagu qoro hal mar lakabka async.

Hawlaha qaar ayaa laga yaabaa in loogu talagalay oo kaliya async ama kaliya isticmaalka isku xidhka, iyo neomodel wuxuu daaha ka qaadaa qaabka utility (oo uu dhiirigeliyay darawalka Neo4j ee rasmiga ah) si loo kala saaro waddooyinka koodka. Tani waxay kuu ogolaanaysaa inaad qeexdo dabeecadaha ku kala duwan labada hab adiga oo ilaalinaya guud ahaan dushaada API mid isku xiran. Qaybaha tijaabada, sida kuwa daboolaya API-ga ciyaarta, waxay muujinayaan sida koodhka async-ka loo soo guuriyay iyo sida uu u dhaqmo koodka isku xidhka ee soo baxay.

Database iyo AsyncDatabase singletons

Neomodel 6, ee Database() iyo AsyncDatabase() fasalada waxaa loo hirgeliyay sida singletons run ah si loo caddeeyo sida hawlgallada caalamiga ah loo maareeyo. Halkii ay kala firdhi lahayd hawlaha tamarta keliga ah, neomodel hadda wuxuu kooxeeyaa hawlgallo xog-ururin ah oo ku jira tusaalooyinkan hal-abuurka ah, taasoo API ka dhigaysa mid la ogaan karo oo joogto ah.

Dhowr hawlo dhaxalgal ah ayaa loo raray Database() fasalka oo laga saaray meel-magaceedka caalamiga ah. Tusaalooyinka waxaa ka mid ah change_neo4j_password, clear_neo4j_database, drop_constraints, drop_indexes, remove_all_labels, install_labels, Iyo install_all_labels. Async-ga dhiggiisa ayaa laga heli karaa AsyncDatabase() singleton, badanaa waxaa loo tixraacaa sida adb macnaha guud.

Dib-u-qaabayntani waxay fududaynaysaa moodooyinka maskaxda ee agagaarka hawlgallada heerka-database waxayna ka fogaanaysaa madmadowga ku jira sida qaabaynta iyo xaaladda caalamiga ah loo maareynayo. Iyadoo la hubinayo in hababka sync iyo async labadaba ay wadaagaan qaab-dhismeed la mid ah, waxay sidoo kale noqonaysaa mid sahlan in laga fekero goorta aad si badbaado leh uga beddeli karto mid ka mid ah habka kale ama u socodsiiso dhinac dhinac ah qaybaha kala duwan ee codsiga weyn.

Intaa waxaa dheer, sii deynta 6.0 waxay soo bandhigtay a merge_by Halbeegga hawlgallada dufcaddii, taasoo siinaysa koontarool dheeraad ah sida qanjidhada iyo cilaaqaadka la isugu daray. Waxaad habayn kartaa summadaha iyo furayaasha hantida qeexaya u gaarka ah isku darka dufcaddii, taas oo muhiim u ah marka la qabanayo xaddi badan oo xog-ururin ah ama hawlo isku-dubarid.

Is dhexgalka Django iyo isticmaalka dhabta ah ee aduunka

Neomodel wuxuu si nadiif ah ula mideeyaa Django iyada oo loo marayo django_neomodel xirmo, taasoo awood kuu siinaysa inaad daawato moodooyinka garaafkaaga qayb ka mid ah mashruuca Django. Isku dhafkan, qaabeynta ayaa caadi ahaan ku dhex nool settings.py, iyo noodhkaaga iyo xiisadaha xidhiidhku waxay la nool yihiin inta ka hadhay nidaamka deegaankaaga Django, oo ay ku jiraan abka, dhex dhexaadinta, iyo aragtida.

Tusaalaha la taaban karo waa tabobarka Django oo qaybo badan ka kooban oo isticmaala neomodel si uu u sahamiyo oo u baadho kaydka garaafyada qaabka warqadaha Jannada. Qaybaha hore, waxaad dejisay mashruuca Django oo aad isku dhejisay neomodel; qaybaha dambe, waxaad dhistaa a fetch_api app, qeex moodooyinka ka tarjumaya hay'adaha, cilaaqaadka, iyo guryaha garaafka, ka dibna si tartiib tartiib ah u dhis utility iyo views dushooda.

Mashruucan dhexdiisa, waxaad si toos ah u isticmaali kartaa moodooyinka neomodel gudaha Django views, serializers, ama modules helping. Habka caadiga ah waa in la abuuro a utils.py faylka meesha aad ku qeexday hawlaha ku habboon ee wacaya API Query. Tusaale ahaan, waxaa laga yaabaa inaad hirgeliso count_nodes, fetch_nodes, Iyo fetch_node_details caawiyayaasha soo geliya filtarrada, cabbirrada pagination, iyo magacyada moodeelka si firfircoon.

Xogta qaar, sida liisaska wadamada, awoodaha, ama ilaha xogta, ayaa laga yaabaa inay qaali ku noqdaan waydiinta si isdaba joog ah, markaa waxaad hore u xisaabin kartaa iyaga oo isticmaalaya Cypher ceeriin oo u kaydi si joogto ah. A constants.py moduleka wuxuu fulin karaa weydiimaha Cypher hal mar, soona saaro liisaska la soocay sida COUNTRIES, JURISDICTIONS, Iyo DATASOURCE, oo ka dhig kuwa si fudud loogala soo degi karo abka Django.

Si loo hubiyo in kuwan joogtada ahi ay diyaar u yihiin bilowga arjiga, waxaad ku xidhi kartaa habaynta abka Django adiga oo qeexaya ready() habka in fetch_api/app.py. Gudaha habkaas, aad soo dejiso constants.py, Kaas oo kicinaya weydiimaha Cypher ee bilowga ah oo buuxiya liisaska u dhigma. Sidan, codsiyada soo socda ayaa si fudud looga akhrin karaa qaabdhismeedka xogta ee hore loo diyaariyey.

Cypher vs OGM ee su'aalo adag

Iyadoo neomodel's OGM uu ku habboon yahay CRUD maalin kasta iyo socdaalka xiriirka, waxaa jira xaalado kuwaas oo gacan-ku-qorista weydiimaha Cypher ay aad ugu hufan yihiin. Si qoto dheer oo buul-ku-socod ah, weydiimaha heerka-labaad ama hop badan, iyo isku-ururinta casriga ah ayaa mararka qaarkood loo sheegi karaa si cad oo leh waxqabad ka wanaagsan sida Cypher cayriin marka loo eego sida silsiladaha OGM.

Tusaalaha caadiga ah ayaa ah in la helo wada-jilayaal ka soo muuqday filim kasta oo ay la socdaan jilaa gaar ah, sida go'aaminta dhammaan dadka la soo shaqeeyay Tom Hanks. Weydiinta Cypher ahaan, tani waxay noqon kartaa mid toos ah: waxaad la mid tahay jilaaga, waxaad u gudubtaa filimadii ay jileen, ka dibna u gudub jilayaasha kale ee filimadaas, adigoo isticmaalaya filtarrada iyo isu geynta hadba sida loogu baahdo. Natiijadu waa qaab garaaf oo kooban, la hagaajiyay.

Ku-noqoshada isla dhaqankaas oo kaliya iyadoo loo marayo hababka ku habboonaanta OGM waxay u baahan kartaa habka O(n²), oo ku duuban filimada iyo jilayaasha la xidhiidha heerka Python. Tani labaduba waa ka xarrago yar yihiin oo way ka tayo yar yihiin in loo ogolaado Neo4j inuu qabto qaadista culus ee hal qoraal oo Cypher ah. Waxay muujineysaa in OGM-yadu aysan ahayn xabbad qalin ah oo loogu talagalay hannaanka gelitaanka garaaf kasta.

Intaa waxaa dheer, marka aad ku tiirsan tahay hawlgallada OGM ee marinnada qoto dheer, qaabka xogta la soo celiyay waxay noqon kartaa mid aad u adag. Cypher-ka la sameeyay ayaa inta badan ka mid noqon doona noodhka bilawga ah, xidhiidhada dhexe, noodhka deriska ah, iyo xidhiidhkooda. Tani waxay faa'iido yeelan kartaa markaad u baahato xaalad qani ah, laakiin waxay noqon kartaa mid xad dhaaf ah markaad rabto kaliya natiijooyin gaar ah oo la isku daray ama qayb ka mid ah guryaha.

Xaaladaha ay waxqabadka iyo caddayntu yihiin kuwa ugu muhiimsan, isticmaalka cypher_query si toos ah in loo fuliyo Cypher gacanta lagu sameeyay waxay noqon kartaa doorashada ugu fiican. Neomodel waxa uu si ula kac ah uga dhigayaa baxsigan dillaaca: waxaad isku dari kartaa oo aad ku dari kartaa isdhexgalka heerka sare ee OGM iyo Cypher heerka hoose ee isla mashruuca, adigoo dooranaya aaladda saxda ah ee su'aal kasta oo gaar ah adiga oo weli ilaalinaya moodooyinka sida isha keliya ee runta ee qorshahaaga.

Neomodel ee Neo4j Labs iyo maamulka mashruuca

U guuritaanka Neomodel ee barnaamijka Neo4j Shaybaadhka ayaa si rasmi ah u qaabeeyey xaaladdiisa sidii mashruuc si firfircoon loo ilaaliyo, oo ay bulshadu waddo oo leh rajooyin tayo leh oo cad. Neo4j Labs wuxuu u adeegaa sidii guri loogu talagalay mashaariicda tijaabada ah iyo kuwa horumarsan ee leh jiidashada dhabta ah laakiin aan ka mid ahayn alaabta asaasiga ah. Qalab badan oo caan ah, sida qaybaha sayniska xogta garaafyada, maktabadda GraphQL, APOC core, iyo isdhexgalka qulqulka, ayaa xididada ku leh barnaamijkan.

Lahaanshaha Shaybaadhka Neo4j macnaheedu waa neomodel wuxuu u hoggaansamaa heerarka aasaasiga ah ee ku saabsan tijaabinta, hubinta amniga, iyo qalabaynta tooska ah sida dhuumaha CI/CD. Kooxda dayactirka waxay waddaa imtixaanada isdhexgalka oo ka dhan ah matrix ballaaran oo ah noocyada Python iyo Neo4j, iyaga oo hubinaya iswaafajinta marka ay cusubi soo baxaan. Tani waa qayb ka mid ah sababta neomodel uu u codsan karo taageero buuxda dhammaan noocyada Python iyo Neo4j ee hadda la taageero, labadaba Bulshada iyo Ganacsiga.

Mashruucu wuxuu ahaanayaa mid si buuxda u furan oo bulshada udub dhexaad u ah, iyadoo GitHub ay u adeegto xudunta ugu weyn ee arrimaha, doodaha, iyo wax ku biirinta. Diiwaanka arrimaha ayaa mar kale si firfircoon loo habeeyey, iyada oo alaabta duugga ah la kala saarayo oo la soo koobay sida wakhtigu oggol yahay, halka aagga wada-hadalku u furan yahay qof kasta oo loo isticmaalo ogaysiisyada iyo wada sheekaysiga naqshadaynta. Waxaa jira ugu yaraan hal shaqaale Neo4j ah oo u shaqeeya sidii ilaaliye, isku xirka khibrada goobta dib ugu noqoshada mashruuca.

Soo saarista wax soo saarka adduunka dhabta ah, sida OpenStudyBuilder oo ka socda Novo Nordisk, ayaa door muhiim ah ka ciyaara qaabeynta khariidadda waddada neomodel. Codsiyadan baaxadda leh, ee nolosha dhabta ah waxay bixiyaan shuruudo la taaban karo iyo jawaab celin u tarjumaysa sifooyin cusub iyo horumarin dib loogu soo celiyay bulshada. Wareegan suuban ayaa muujinaya sida isticmaalka ganacsiga iyo horumarinta il furan ay isu xoojin karaan.

Inta u dhaxaysa qaabaynteeda Pythonic, alignment Neo4j xoog leh, async iyo sync APIs, iyo kobcinta shaybaadhka-taageerka firfircoon, neomodel wuxuu bixiyaa hab adag oo looga shaqeeyo garaafyada Python labadaba mashaariicda yaryar iyo dalabaadka nidaamyada wax soo saarka. Waxaa loo adeegsaday si fakar ah — ku tiirsanaanta OGM qaabaynta cad ee domainka iyo isdhexgalka garaafyada caadiga ah, iyo gaaritaanka Cypher cayriin marka qaabab adag ama waxqabad ay dalbadaan — waxay si weyn u fududayn kartaa sida aad u qaabaynayso, waydiinayso, oo aad u ilaalinayso codsiyada garaaf ku salaysan.

Related posts: