Neomodel Python OGM: Yakadzika Dive muNeo4j Modelling

Kugadziridza kwekupedzisira: 12/06/2025
  • Neomodel iPythonic OGM yeNeo4j, inopa kirasi-yakavakirwa modhi, schema enforcement, uye yakapfuma yemubvunzo API pamusoro pemutyairi wepamutemo.
  • Kuburitswa kwazvino kunotevera SemVer, tsigira yemazuva ano Python uye Neo4j shanduro, uye suma yakasimba makadhiinality cheki, zvirinani config, uye batch merge controls.
  • Iyo raibhurari inopa ese ari maviri sync uye async APIs, otomatiki schema maturusi, Django kubatanidzwa, uye inochinjika yekupukunyuka hatch kune mbishi Cypher yemibvunzo yakaoma.
  • Ikozvino chikamu cheNeo4j Labs, neomodel inobatsira kubva kune inoshanda kugadzirisa, bvunzo dzekubatanidza, uye chaiyo-yepasirese yekugadzira mhinduro kubva kumabhizinesi deployments.

neomodel python ogm

Neomodel iPython Object-Graph Mapper (OGM) yakagadzirirwa kuita kuti kushanda neNeo4j kunzwe kwakasikwa sekunyora nguva dzose Python kodhi. Panzvimbo pekugadzira nemaoko Cypher mibvunzo nguva dzese, unotsanangura yako girafu domain nemakirasi, minda, uye hukama, uye rega neomodel ibate mepu pakati pePython zvinhu neNeo4j node uye hukama. Iyo yakavakirwa pamusoro peiyo yepamutemo Neo4j Python mutyairi, iine chete yakatetepa yekubvisa layer, saka iwe unowana yakakwira-level nyore pasina kupira kuita kwakawanda.

Sechikamu cheNeo4j Labs ecosystem, neomodel inochengetedzwa, inotsigira zvizere zvemazuva ano Python uye Neo4j shanduro, uye inopa ese ari maviri anoenderana uye asynchronous APIs. Iyo inounza yakajairwa, Django-senge modhi tsananguro, yakapfuma yemubvunzo API, schema enforcement kuburikidza nekadhinari, yakavakirwa-mukati matranseksheni, uye yakasimba kubatanidzwa neDjango kuburikidza. django_neomodel. Panguva imwecheteyo, inoramba iri padyo nesimbi: unogona kugara uchidonha pasi kuCypher mbishi kana kuita kana kuoma kwemubvunzo kuchida.

Chii chinonzi neomodel uye nei ichikosha

Neomodel iObject Graph Mapper yeNeo4j graph dhatabhesi, bhiridha makirasi ePython uye magirafu zvimiro. Panzvimbo pekugadzira nemaoko node uye hukama kuburikidza neCypher tambo, iwe unotsanangura makirasi ePython anomiririra yako domain masangano, uye neomodel inoashandura kuita akanyorwa node ane indexed zvivakwa uye zvipingaidzo muNeo4j. Inovaka pamusoro pemukuru neo4j-python-driver, saka maitiro ayo anoenderana nezvawaizoita uchishandisa mutyairi zvakananga.

Raibhurari inotarisa pane yakajairika, kirasi-yakavakirwa modhi maitiro ane yakasimba nhaka, hoko, uye kusimbiswa. Iyi nzira inoita kuti ive yakanyanya kugadzikana kune vanogadzira vanoshandiswa kuDjango ORM kana mamwe maPython ORMs: hunhu pamakirasi ako emhando dzinoenderana nezvivakwa muNeo4j, nepo hukama hwakakosha minda ichitora mipendero yegirafu. Nekuseta uku, kutenderera kwegirafu inova nyaya yekutevera hunhu pane zvinhu pachinzvimbo chekunyora verbose Cypher nguva dzese.

Pasi pehodhi, neomodel inopa ine simba yemubvunzo API inovhara zvakajairika magirafu ekuwana mapatani pasina kukumanikidza iwe muCypher mbishi ipapo. Unogona kusefa, kurongeka, kuyambuka hukama, kucheka node seti, uye kuita mashandiro epamberi kuburikidza nePythonic interface. Kana zvichidikanwa, uchiri kukwanisa kuwana a cypher_query mubatsiri kuita mibvunzo yetsika uye kushanda nemhinduro dzakadzoserwa zvakananga.

Chimwe chepakati ficha ndeyekusimbisa schema kuburikidza nemitemo yekadhini pahukama uye zvipingamupinyi zvezvivakwa. Nekudoma kadhini (semuenzaniso, zero-kana-zvimwe, imwe-kana-zvinopfuura, kana imwe) zvakanangana nendima dzehukama, unogona kumanikidza tarisiro yezvimiro mugirafu yako uye rega neomodel ikubatsire kudzivirira data risingawirirane. Indexes uye zvipingaidzo zvinogadzirwa otomatiki zvichibva pane tsananguro yemuenzaniso, uye kune CLI zvishandiso zvekushandisa kana kuzvibvisa kubva mudhatabhesi nenzira inodzorwa.

Neomodel zvakare inotsigira zvizere basa rekutengeserana uye yakachengeteka kuti ishandiswe munzvimbo dzine tambo dzakawanda. Transactions inogona kuvhurwa nekuitwa nenzira inofanotaurwa, uye nekuti kuputira kutenderedza mutyairi wepamutemo kutetepa nemaune, kuita kwepamusoro kudiki. Mabhenji ane zvishandiso seMhashu anoratidza kuti neomodel's abstraction layer inowedzera kushoma latency, kunyangwe pasi pemutoro wakafanana.

Shanduro yekutsigira, SemVer uye kugadzirisa

Kuburitswa kwemazuva ano neomodel kunotevera semantic shanduro (SemVer) uchishandisa yekare major.minor.patch pattern. Izvi zvinoreva kuti kuchinja kwekuchinja kunounzwa chete nemabhampa makuru evhezheni, maficha matsva asina kutyora maitiro anouya sekuburitswa kudiki, uye kugadzirisa kwebug kunotumirwa sechigamba shanduro. Iyi shanduro yekushandura inoita kuti zvive nyore kuronga kukwidziridzwa, kunyanya kune masisitimu ekugadzira.

Muchikamu che6.x, neomodel inonangana neshanduro dzePython neNeo4j kuti dzienderane nezvinonyanya kutumirwa. Zvakananga, neomodel 6.x inoda Python 3.10 kana kuti itsva uye inotsigira Neo4j 5.x, Neo4j 4.4 LTS, uye Neo4j 2025.xx mutsara mutsva. Ose ari maviri Neo4j Nharaunda, Neo4j Enterprise, uye Neo4j Aura (iyo inotambirwa sevhisi) inotsigirwa, ichikupa iwe kuchinjika munzira uye kupi kwaunotambira dhatabhesi.

Kune nharaunda dzechikuru, matavi ekare neomodel achiri kuvhara nhaka Python uye Neo4j musanganiswa. Mutsetse we5.x unotsigira Python 3.8+ neNeo4j 5.x uye 4.4 (LTS), ukuwo mutsetse we4.x uchivhara Python 3.7 kuburikidza ne3.10 uye Neo4j 4.x, kusanganisira 4.4 LTS paunenge uchishandisa neomodel 4.0.10. Iyi inoenderana nyaya inoita kuti zvikwanise kutamira kumberi zvishoma nezvishoma uchichengeta yako iripo setups ichimhanya.

Kutanga neomodel 6, gadziriso inobatwa kuburikidza neazvino, mhando-yakatsanangurwa dhatakirasi ine runtime yekusimbisa uye nharaunda inosiyana tsigiro. Panzvimbo pekuparadzira ad-hoc marongero, minda yekumisikidza inosimbiswa pakuvandudza, kusanganisira yemhando yekutarisa uye zvine musoro zvipingaidzo. Mamiriro ezvakatipoteredza anogona kushandiswa kupfuudza gadziriso zvisingaite, iyo inotamba zvakanaka nemidziyo yakarongedzerwa uye makore nharaunda.

Iyo 6.0 kuburitswa inosumawo zvakajeka kuchinja kwekuchinja uye maitiro ekugadzirisa kuita kuti API inyatso kufanotaura. Semuyenzaniso, rondedzero resolution kubva kuCypher ikozvino inodzosa hudzamu hunotarisirwa: mubvunzo senge RETURN collect(node) ichaita mepu ku results[0][0] pachinzvimbo chekare, unintuitive results[0][0][0] chimiro. Macheki eCardinality akasimba uye anogoneswa nekusarudzika, uye akati wandei akamira emubatsiri mabasa akaendeswa pakati. Database() uye AsyncDatabase() singleton makirasi.

Kuisa uye setup

Iyo yakakurudzirwa nzira yekuisa neomodel yakananga kubva kuPyPI uchishandisa yako yaunofarira package maneja. Iwe unogona kuiwedzera kune chaiyo nharaunda ine yakapusa yekuisa rairo uye wozogadzirisa kukwidziridzwa kuburikidza neyako yakajairwa kutsamira tooling. Kana iwe uchida shanduko dzichangoburwa kana kuti uchida kugovera, zvinokwanisika kuisa zvakananga kubva kuGitHub repository.

Usati wamhanyisa chero neomodel kodhi, unofanirwa kugadzirisa iyo URL yekubatanidza kuti raibhurari izive nzira yekusvika yako Neo4j muenzaniso. Iyi setup inowanzo sanganisira chirongwa (Bolt kana Neo4j), host, port, username, password, uye sarudzo yedatabase zita. Kune mapurojekiti eDjango, iyi gadziriso inowanzoiswa mukati settings.py saka inotangwa pachangotanga application.

Kana sevha yako yeNeo4j ichangobva kuiswa, unofanirwa kushandura password yekushandisa uchishandisa Neo4j browser kana admin panel. Nekusarudzika, iyo mapaneru inowanikwa pa http://localhost:7474. Paunenge uchinge wavandudza password uye wasimbisa dbms.security.auth_enabled=true mune dhizaini dhizaini, wagadzirira kubatanidza kubva neomodel.

Nekusimudzira uye kuyedzwa, zvakajairika kushandisa akaparadzana Neo4j dhatabhesi uye yakazvitsaurira magwaro. Neomodel's own test suite inotarisira Neo4j 4+ dhatabhesi uye inovimba nezvakasiyana siyana nharaunda kuti ibatanidze. Kana iwe uchimhanyisa bvunzo pane nyowani-itsva dhatabhesi, test suite inoisa password kuti test by default; kana ikaona dhatabheti iripo, inoramba kuenderera mberi kunze kwekunge iwe wapfuura pachena mureza wekugadzirisa, zvichikubatsira kudzivirira kurasikirwa netsaona.

Paunenge uchida kuyedza neomodel pane akawanda Python uye Neo4j shanduro, Docker uye docker-compose inogona kuronga zvese otomatiki. Iyo purojekiti inopa gadziriso yekumhanyisa matrix yeshanduro yemuturikiri uye Neo4j inoburitswa kuitira kuti bvunzo dzekubatanidza dziitwe nguva dzose. Izvi zvinonyanya kubatsira kana iwe uri kupa maficha anofanirwa kushanda kune akati wandei anotsigirwa shanduro.

Core maficha: modhi, schema uye indexes

Mwoyo weNeomodel uri mukirasi-yakavakirwa modhi tsananguro iyo mepu yakananga kuNeo4j node mavara uye hukama. Iwe unowanzo tora yako node makirasi kubva StructuredNode, uye makirasi ehukama kubva StructuredRel. Node minda inotsanangurwa uchishandisa neomodel-chaiyo pfuma mhando, iyo inodzora kuti data rinochengetwa sei uye rinosimbiswa muNeo4j.

Yega yega modhi kirasi inova label muNeo4j, uye neomodel inongozvibata indexes uye zvipingaidzo zvichibva pane tsananguro dzako. Izvi zvinoreva kuti kusarudzika, zvivakwa zvinodikanwa, uye minda ine indexed zvese zvinogona kutsanangurwa muPython pasina kuita nemaoko mirairo yeCypher yekugadzira schema. Kuseri kwezviratidziro, neomodel inoshandura metadata yako yemuenzaniso kuita yakakodzera Neo4j schema mashandiro.

Hukama hwakasungirirwa kumakirasi e node uchishandisa akakosha anotsanangura senge RelationshipTo, RelationshipFrom, uye Relationship. Aya anotsanangura anotsanangura rudzi rwehukama, kadhinari, uye nzira yekutenderera. RelationshipTo uye RelationshipFrom ratidza uni-directional navigation kubva paPython poindi yekuona, uku Relationship inoshandiswa kana iwe uchida kubata hukama sekufambiswa munzira mbiri kubva kukodhi, kunyangwe Neo4j pachayo inogara ichichengeta hukama negwara.

Kana hukama huine musoro, tsika inokurudzirwa ndeyekudzivisa kugadzira minda miviri ine magirazi uye kushandisa imwe chete. Relationship panzvimbo. Kuita izvi kunoita kuti modhi yako irambe yakachena uye ichienderana uchiri kubvumira kuyambuka mumativi ese muPython kodhi yako. Neo4j icharamba ichichengeta hukama hwakanangana pasi pehodhi, asi kutorwa kweneomodel kunoviga izvo zvakadzama kana uchifamba.

Kune zviitiko apo zvimiro zvenode zvisingazivikanwe zvizere pamberi, neomodel inopa a SemiStructuredNode base class. Makirasi anobva kurudzi urwu anogona kubata "ad-hoc" zvivakwa zvisina kutsanangurwa zvakajeka mumuenzaniso. Izvi zvinonyanya kubatsira kana girafu schema yako ichishanduka kazhinji kana iwe paunoda kubatanidza dzimwe nguva humwe hunhu pasina kudzokorora modhi nguva dzese.

Cardinality mitemo inosimbisa huwandu hwehukama hunotenderwa pakati penodhi uye ikozvino inotsigirwa nekuomesesa cheki mu neomodel 6. Soft cardinality cheki inowanikwa kune ese ehukama makadhinali, uye kunyatsoongorora kunogoneswa nekusarudzika. Kana data rako richityora yakamisikidzwa hukama hukama, neomodel inotarisa iyo nyaya pane kunyarara kurega chimiro chisingaenderane chichienderera.

Otomatiki schema manejimendi uye kuongorora

Paunenge uchinge watsanangura kana kugadzirisa mamodheru ako, iwe unofanirwa kushandisa zvinoenderana zvipingaidzo uye indexes kune Neo4j dhatabhesi. Neomodel ngarava ine script inonzi neomodel_install_labels iyo inoongorora mamodheru ako uye inogadzira kana kugadzirisa inodiwa indexes uye zvipingaidzo. Mushure mekushandura schema yako, iwe unofanirwa kumhanyisa script uye ongorora iyo yakashumwa nhamba yemakirasi akagadziridzwa kuti aone kuti zvese zviri musync.

Kana iwe uchizoda kudzima zvipingaidzo uye indexes inotungamirwa neomodel, pane murairo unoenderana unonzi. neomodel_remove_labels. Ichi chinyorwa chinodonhedza zvese zviripo zvinomanikidza uye indexes iyo neomodel yakamboiswa. Inodhinda zvakare zvakabviswa kuitira kuti unyatsoona kushanda kwekushanda.

Ose ari maviri schema-management mirairo anotsigira a --db nharo uye default kune iyo NEO4J_BOLT_URL shanduko yemamiriro ekunze kana isina kupihwa. Maitiro aya anobatsira kuchengetedza zvitupa uye ruzivo rwekubatanidza kunze kweiyo yekuraira mutsara nhoroondo uye inogonesa gadziriso yakapusa kuburikidza nemamiriro ekunze. Inoitawo kuti otomatiki uye deployment zvinyorwa zvive nyore kubata.

Pamusoro pekugadzira schema, neomodel inosanganisira dhatabhesi yekuongorora chishandiso chinogona kudzosera kumashure-injiniya girafu iripo uye kugadzira faira remuenzaniso. kushandisa inspect command (inoda APOC maitiro akaiswa muNeo4j), unogona kuongorora dhatabhesi uye kugadzira a models.py faira pasi pechinangwa dhairekitori senge yourapp. Iro faira rakagadzirwa rinosanganisira kunze kwenyika, node kirasi tsananguro, uye tsananguro yehukama inofanana neyakaonekwa girafu chimiro.

Iyo yekuongorora maitiro inogona kurongedzerwa magirafu akakura nekusvetuka hukama zvivakwa uye makadhiinality scanning. Kune dhatabhesi rine mazana ezviuru zvemanodhi uye hukama hunodarika miriyoni, scan izere inogona kutora akawanda masekonzi. Sarudzo senge --no-rel-props uye --no-rel-cardinality mhanyisa zvinhu nekusiya ongororo yakadzama, ichiri kugadzira hukama minda asi defaulting kadhinari kune generic kukosha seZeroOrMore.

Kushanda neomodel Query API

Neomodel's Query API inoita kuti iwe uite yakapfuma girafu mibvunzo kuburikidza nePython nzira pamakirasi ako emuenzaniso pane kunyora Cypher zvakananga. Imwe neimwe modhi inoburitsa a .nodes maneja-senge hunhu hunomiririra seti yemanodhi ine inoenderana label. Kubva ipapo, unogona kuverenga, kusefa, kurongeka, kucheka, uye kutora iyo iri pasi pegraph data.

Kufona len(MyModel.nodes) inokonzeresa Cypher query inoverenga nodes ine label inoenderana ne MyModel. Izvi zvinopa intuitive nzira yekuwana kuverenga pasina kusiya Python syntax. Kana node yako seti yakatopepetwa, kuverenga kunongoratidza node dzinoenderana nemafirita iwayo, achienderana nehunhu hwaungatarisira kubva kune yakajairika ORM.

Slicing inotsigirwa zvakananga pane node seti, iyo inobatsira zvakanyanya kana iwe uchida kushanda nebatched mhedzisiro. Matauriro akadai MyModel.nodes[0:10] dzosa node yakachekwa seti yaunokwanisa kudzokorodza pamusoro kana kuwedzera cheni nemamwe mafirita. Chidimbu hachidzore runyoro nekukurumidza asi imwe node yakaiswa chinhu, saka iwe unogona kuvaka yakaoma mibvunzo nhanho nhanho.

Node inoseta inotsigira iteration uye boolean cheki, kunyangwe kureba uye chokwadi mashandiro ari terminal. Kana wangoongorora len() kana kushandisa node yakaiswa mumamiriro e boolean, uri kunyatso mutsa nhanho yekuongorora iyo inodzosera mhedzisiro yekongiri pane chimwe chetani chemubvunzo chinhu. Dhizaini iyi inoenzanisa madimikira ePython nehusimbe hwekuvaka mibvunzo.

Kuti utorezve zvinhu chaizvo, unowanzo shandisa nzira dzakadai .all() uye .get() pa .nodes maneja. Nzira idzi dzinogona kugamuchira a lazy=True nharo yekudzosera chete maID ID panzvimbo yezvinhu zvizere uye zvese zvivakwa zvavo. Izvi zvinobatsira kana iwe uchida kudzikisira kuendesa data kana kuita mibvunzo yekutevera nemaoko zvichienderana nemaID.

Gadzira, gadziridza, bvisa uye hukama

Kugadzira node neomodel iri nyore sekusimbisa yako modhi kirasi uye kufona save(). Kana uchinge watsanangura zvivakwa zvako uye zvisizvo, iwe unogona kuvaka chiitiko neinodiwa yemunda kukosha, invoke. save, uye neomodel ichagadzira kana kugadzirisa node inoenderana muNeo4j. Izvi zvakafanana nemabatiro anoita ORM mazhinji kushingirira.

Kuvandudza node kunotevera muenzaniso wakafanana: tora muenzaniso, ipa hunyowani hutsva kune hunhu hwayo, uye chengetedza zvakare. Neomodel inotarisira kugadzira iyo Cypher chaiyo kugadzirisa chete zvivakwa zvakashandurwa pane iripo node. Iyi nzira inochengeta kodhi yako yakatwasuka uye inochengeta iyo nhoroondo yekuvandudza mashandiro kunze kwebhizinesi rako logic.

Kudzima node zvakare kwakananga: kana uchinge uine muenzaniso, unodaidza iyo delete() Nzira. Izvi zvinobvisa node uye, zvichienderana nekugadziriswa kwehukama hwako uye zvipingamupinyi zve database, zvinogonawo kubvisa hukama hwakabatana. Pre-delete uye post-delete hooks inogona kutsanangurwa kune yakawedzera hunhu kana kutema matanda.

Hukama pakati pemanodhi hunodzorwa kuburikidza nendima dzehukama uye nzira dzakareruka dzakadai se connect(). Paunenge wava node mbiri, unogona kudana chimwe chinhu chakadai actor.movies.connect(movie) kugadzira chiitiko chakakodzera chehukama mugirafu. Hukama zvivakwa zvinogona kuenzanisirwa kuburikidza StructuredRel-yakavakirwa makirasi, inokupa iwe nzvimbo yekuchengetera hunhu pamipendero zvakare.

Mamwe magirafu akaomarara anogona kuwanikwa nekutevera hunhu hwehukama kana kubatanidza mafirita emibvunzo pahukama. Semuenzaniso, unogona kutanga kubva kune Entity node set, sefa neimwe pfuma, uye wobva wapfuura uchienda kune zvine hukama node kusefa pahunhu hwavo zvakare. Izvi zvishoma nezvishoma zvinovaka mubvunzo weCypher pasi pehodhi, iyo neomodel inoita panzvimbo yako.

Async neomodel uye transpiled sync API

Neomodel inosanganisira asynchronous rutsigiro rwakavakirwa pamusoro peasync kugona kweiyo official Neo4j Python mutyairi. Izvi zvinoreva kuti unogona kubatanidza Neo4j mashandiro mune yemazuva ano async Python masisitimu nemasevhisi, uchitora mukana wakazara we concurrency yemabasa anosanganisira akawanda I/O-akasungwa mashandiro.

Kuyedzwa kwekuita nemidziyo yakaita seMhashu kwakaratidza kuti async neomodel, kana ikashandiswa panguva imwe chete, inokunda ese ari maviri mibvunzo uye panguva imwe chete inoitwa synchronous neomodel mafoni. Nekuti akawanda magirafu mashandiro anosanganisira network I/O uye kumirira mhinduro dzedhatabhesi, kurega chiitiko loop ichibata yakawanda mibvunzo kamwechete inoburitsa zvirinani kuburikidza nekushandisa zviwanikwa.

Mukati, neomodel inochengeta async uye sync APIs yakabatana nekushandisa nhanho yekududzira inoshandura async kodhi kuita yayo synchronous yakaenzana. Raibhurari yakatsaurirwa inoshandiswa kubvisa otomatiki await keywords, rename makirasi (semuenzaniso, kubvisa Async prefixes), uye ita zvinotsiva zvakanangwa sekuchinja adb to db or mark_async_test to mark_sync_test. Iyi nzira inodzivirira kuchengetedza maviri akaparadzana macodebases.

Paunenge uchipa, iwe unonyanyo shanda pane iyo async kuita pasi neomodel/async_ wobva wamhanyisa chinyorwa chakapihwa chekushandura kuti ugadzire musiyano wesync. Iwe unogona zvakare kuvimba ne-pre-commit hooks kuti uite iyi nhanho uye ive nechokwadi chekuti mavhezheni ese ari maviri anogara ari musync. Muzviitiko zvakawanda, bhizinesi rako logic rinongoda kunyorwa kamwe chete muasync layer.

Kumwe kushanda kunogona kuitirwa async chete kana kushandiswa chete, uye neomodel inofumura maitiro ekushandisa (yakafuridzirwa nemukuru Neo4j mutyairi) kuparadzanisa nzira idzodzo dzekodhi. Izvi zvinokutendera kuti utsanangure maitiro anosiyana pakati pemamodhi maviri uku uchichengeta yako yese API nzvimbo yakabatana. Mamodule ekuyedza, akadai seaya anovhara mutambo API, anoratidza kuti async kodhi inofambiswa sei uye kuti inokonzeresa sync code inoita sei.

Database uye AsyncDatabase singletons

Mune neomodel 6, iyo Database() uye AsyncDatabase() makirasi anoitwa sema singleton echokwadi kujekesa maitirwo emabasa epasi rose. Panzvimbo pekuparadzira akamira ekushandisa mabasa, neomodel ikozvino inounganidza dhatabhesi-yakakura mashandiro mune idzi singleton zviitiko, zvichiita kuti API iwanikwe uye inoenderana.

Several legacy mabasa akaendeswa mukati Database() kirasi uye yakabviswa kubva pasi rose namespace. Mienzaniso inosanganisira change_neo4j_password, clear_neo4j_database, drop_constraints, drop_indexes, remove_all_labels, install_labels, uye install_all_labels. Iwo async vanobatana vanowanikwa kubva ku AsyncDatabase() singleton, inowanzotaurwa se adb mune async mamiriro.

Kugadzira patsva uku kunorerutsa mamodheru epfungwa akatenderedza dhatabhesi-level mashandiro uye inodzivirira kusanzwisisika mumagadzirirwo uye mamiriro epasirese anobatwa. Nekuona kuti ese ari maviri sync uye async modhi anogovera chimiro chakafanana, zvinova zvakare nyore kufunga nezve kana iwe uchikwanisa kushandura zvakachengeteka kubva kune imwe nzira kuenda kune imwe kana kumhanyisa padivi nedivi munzvimbo dzakasiyana dzechikumbiro chikuru.

Uye zvakare, iyo 6.0 kuburitswa yakaunza a merge_by parameter yebasa rebatch, ichipa kutonga kwakawanda pamusoro pekuti node nehukama zvinobatanidzwa sei. Iwe unogona kugadzirisa kuti ndeapi mavara uye makiyi ezvivakwa anotsanangura kusarudzika kwekubatanidzwa kwebatch, izvo zvakakosha kana uchibata huwandu hukuru hwekupinza data kana mabasa ekubatanidza.

Django kubatanidzwa uye chaiyo-nyika kushandiswa

Neomodel inobatanidza zvakachena neDjango kuburikidza ne django_neomodel package, ichikugonesa kubata ako magirafu mamodheru sechikamu cheDjango chirongwa. Nekubatanidza uku, gadziriso inowanzogara mukati settings.py, uye node yako uye makirasi ehukama anogara pamwe chete neyako yese Django ecosystem, kusanganisira maapplication, middleware, uye maonero.

Muenzaniso wekongiri ndeye yakawanda-chikamu Django chidzidzo chinoshandisa neomodel kuongorora uye kutsvaga Paradhiso Mapepa-maitiro emagirafu database. Muzvikamu zvekutanga, iwe unogadzira chirongwa cheDjango uye unobatanidza neomodel; muzvikamu zvinotevera, iwe unovaka a fetch_api app, tsanangura mamodheru anoratidza masangano, hukama, uye zvivakwa mugirafu, uye zvishoma nezvishoma kuvaka zvishandiso uye maonero pamusoro pazvo.

Mukati mechirongwa chakadaro, unogona kushandisa neomodel modhi zvakananga mukati meDjango maonero, serializers, kana mubatsiri module. Nzira yakajairika ndeyekugadzira a utils.py faira kwaunotsanangura zviri nyore mabasa anofona muQuery API. Somuenzaniso, unogona kushandisa count_nodes, fetch_nodes, uye fetch_node_details vabatsiri vanopinza mafirita, pagination paramita, uye mazita emhando zvine simba.

Mamwe data, senge mazita enyika, nzvimbo, kana kunobva data, anogona kudhura kubvunza kakawanda, saka unogona kuaverengera uchishandisa Cypher mbishi woachengeta seanogara. A constants.py module inogona kuita iyo Cypher mibvunzo kamwe chete, tora yakarongwa rondedzero senge COUNTRIES, JURISDICTIONS, uye DATASOURCE, uye ita kuti dzigone kupinza zviri nyore pane yako Django app.

Kuve nechokwadi chekuti maconstindu aya akagadzirira pakutanga kwekushandisa, unogona kukochekera mukati meiyo Django's app kumisikidza nekutsanangura a ready() nzira mu fetch_api/app.py. Mukati menzira iyoyo, unopinza constants.py, iyo inomutsa mibvunzo yekutanga yeCypher uye inozadza mazita anoenderana. Nenzira iyi, zvikumbiro zvinotevera zvinogona kungoverenga kubva kune yakatogadzirirwa data zvimiro.

Raw Cypher vs OGM yemibvunzo yakaoma

Nepo neomodel's OGM yakanakira CRUD yemazuva ese uye hukama hwekutenderera, pane mamiriro ezvinhu ayo akanyorwa nemaoko Cypher mibvunzo inoshanda zvakanyanya. Yakadzika matendere ekufamba, yechipiri-dhigirii kana akawanda-hop mibvunzo, uye yakaomesesa aggregations dzimwe nguva inogona kuratidzwa zvakajeka uye nekuita zvirinani seCypher mbishi pane seOGM cheni.

Muenzaniso wekuwana vatambi biyake vakaonekwa mune chero firimu padivi pemumwe mutambi, sekuona vanhu vese vakashanda naTom Hanks. Semubvunzo weCypher, izvi zvinogona kuve zvakanangana: unofananidza mutambi, famba uchienda kumabhaisikopo avakaita, wobva wapfuura uchienda kune vamwe vatambi mumabhaisikopo iwayo, uchishandisa mafirita uye muunganidzwa sezvinodiwa. Mhedzisiro ndeye pfupi, yakagadziridzwa girafu pateni.

Kudzokorodza iwo maitiro akafanana chete kuburikidza neOGM nzira dzekureruka kungangoda O(n²) maitiro maitiro, kutenderera pamusoro pemafirimu nevatambi vane hukama padanho rePython. Izvi zvese hazvina kunaka uye hazvina kunyatso shanda pane kurega Neo4j inobata inorema kusimudza mune imwechete Cypher chirevo. Inotaridza kuti maOGM haazi bara resirivheri kune yega yega magirafu maitiro.

Uyezve, kana iwe uchivimba neOGM mashandiro ekufamba kwakadzika, chimiro che data rakadzoserwa chinogona kuoma. Iyo Cypher inogadzirwa inowanzo sanganisira yekutanga node, hukama hwepakati, node dzakavakidzana, uye hukama hwavo. Izvi zvinogona kubatsira kana iwe uchida hupfumi mamiriro, asi zvinogona kunge zvakanyanyisa kana iwe uchingoda chaiwo akaunganidzwa mhedzisiro kana subset yezvivakwa.

Mumamiriro ezvinhu apo kushanda uye kujekesa zvakakosha, kushandisa cypher_query zvakananga kuita Cypher yakagadzirwa nemaoko inogona kuve iri nani sarudzo. Neomodel inoita iyi hatch yekupunyuka nemaune: unogona kusanganisa uye kuenzanisa yakakwira-level OGM kupindirana neiyo yakaderera-level Cypher mupurojekiti imwechete, uchisarudza chishandiso chakakodzera chemubvunzo wega wega uchiri kuchengeta mamodheru sechinhu chimwe chete chechokwadi che schema yako.

Neomodel muNeo4j Labs uye kutonga kweprojekiti

Kufamba kweNeomodel muchirongwa cheNeo4j Labs kwakagadzira chimiro chayo sechirongwa chinochengetedzwa, chinotungamirwa nenharaunda chine tarisiro dzakajeka dzemhando. Neo4j Labs inoshanda semba yekuyedza uye yepamberi mapurojekiti ane chaiyo traction asi isiri chikamu chepakati chigadzirwa. Maturusi mazhinji anozivikanwa, senge graph data sainzi zvikamu, iyo GraphQL raibhurari, APOC musimboti, uye kusanganisa kusanganisa, zvine midzi muchirongwa ichi.

Kuve weNeo4j Labs zvinoreva kuti neomodel inonamatira kune yekutanga zviyero zvakatenderedza kuyedza, cheki chekuchengetedza, uye otomatiki maturusi seCI/CD mapaipi. Chikwata chekuchengetedza chinomhanyisa bvunzo dzekubatanidza kupesana neyakakura matrix yePython neNeo4j shanduro, ichiona kuenderana sezvo zvitsva zvinobuda. Ichi chikamu chechikonzero nei neomodel inogona kudaira kutsigirwa kwakazara kune ese anotsigirwa Python uye Neo4j shanduro, ese Nharaunda uye Enterprise.

Iyo purojekiti inoramba yakavhurika yakazara sosi uye nharaunda-centric, neGitHub inoshanda seyakanyanya hubhu yenyaya, nhaurirano, uye mipiro. The Issues log is once again active curated, with old things being triaged and shorted as the time permit, ukuwo Nhaurirano nzvimbo yakavhurirwa chero munhu uye inoshandiswa pakuzivisa nekugadzira hurukuro. Pane angangoita mushandi weNeo4j anoshanda semuchengeti, achibatanidza ruzivo rwemumunda kumashure mupurojekiti.

Chaiyo-yepasirese kugadzira deployments, senge OpenStudyBuilder kubva kuNovo Nordisk, inoita basa rakakosha mukugadzira neomodel's roadmap. Aya mahombe, ehupenyu-chaiwo maapplication anopa kongiri zvinodikanwa uye mhinduro inoturikira muzvinhu zvitsva uye gadziridzo dzakapihwa kumashure munharaunda. Iyi yakanaka loop inoratidza kuti kushandiswa kwebhizinesi uye yakavhurika-sosi kusimudzira kunogona kusimbisana.

Pakati pePythonic modelling, yakasimba Neo4j kurongeka, async uye sync APIs, uye inoshanda Lab-yakatsigirwa shanduko, neomodel inopa inomanikidza nzira yekushanda nemagirafu kubva kuPython mune ese mapurojekiti madiki uye inoda masisitimu ekugadzira. Inoshandiswa nekufunga-kutsamira paOGM yekujekesa domain modhi uye yakajairwa magirafu kupindirana, uye kusvika kune yakaomeswa Cypher kana maitiro akaomarara kana kuita kwayo kuchida-inogona kurerutsa magadzirirwo aunoita, kubvunza, uye kuchengetedza magirafu-based application.

Related posts: