Alternatīva tam, kas tika izstrādāta, bija ORM (Object Relational Mapping) ietvari, kas faktiski izveido tiltu datu bāzes un programmēšanas valodas savienošanai, kuru vēlaties izmantot savas lietojumprogrammas izveidē. Tā kā Python šogad ir viena no populārākajām programmēšanas valodām, mēs šajā rakstā aplūkosim un salīdzināsim divu tā vispopulārāko un plaši izmantoto ORM - Django un SQLAlchemy - plusus un mīnusus.
Django vs. SQLAlchemy
Gan ORM - Django un SQLAlchemy ir divi populārākie uz Python balstītie relāciju kartēšanas rīki, un katram no tiem ir īpašas, unikālas priekšrocības. Tagad pārbaudīsim un aplūkosim abas viņu atšķirības.
1) Datu piekļuves slāņa ieviešana
Django izmanto tā saukto aktīvo ierakstu ieviešanu, kurā katrā objekta rindā tiek kartēts viens objekta gadījums, un dati ir viegli pieejami no datu bāzes. Šeit nav nepieciešams iepriekš iestatīt datu bāzes shēmu, un lietotāji tos var viegli izmantot, jo Django galvenā ideja ir tā, ka tā var saprast struktūru tieši, vienkārši ieskatoties datu bāzes shēmā. Turklāt, tā kā tā ir tieša kartēšana starp datu bāzi un objektu, visas izmaiņas objektā tiks atjauninātas arī datu bāzē.
SQLAlchemey izmanto Data Mapper ieviešanu, kas darbojas kā vidējais slānis starp jūsu lietojumprogrammu un datu bāzi un pārsūta datus starp šiem diviem, vienlaikus saglabājot to savienojumu neatkarīgi no cita. Tas ļauj daudz lielāku elastību starp abiem slāņiem, kā arī daudz efektīvāk izmantot datu bāzi.
2) Labāk, izmantojot sarežģītus vaicājumus
Gan Django, gan SQLAlchemy ir divi lieliski ORM, kas nodrošina dažas no labākajām funkcijām, kuras varat atrast relāciju kartēšanas rīkos. Runājot par sarežģītu vaicājumu pārvarēšanu un risināšanu, SQLAlchemy iegūst priekšrocības, jo tas daudz labāk mijiedarbojas ar datu bāzi, kā rezultātā to var izmantot, lai rakstītu sarežģītus vaicājumus, neatgriežoties pie neapstrādātas SQL. Lai saprastu šo jēdzienu, apskatīsim šādus jautājumus, kas rakstīti gan Django, gan SQLAlchemy.
Django:
Futbols.objektiem.filtrs (team__name = "Manchester United")SQLAlchemy:
SQLAlchemy: sesija.vaicājums (futbols).pievienoties (Futbols, Komanda).filtrs (Komanda.nosaukums == "Kamma Sing")Kā redzams no divu ORM sintakses, Django vaicājumā šķiet abstraktāks un parāda tikai izveidoto savienojumu starp dažādām datu bāzes tabulām, savukārt SQLAlchemy nonāk daudz dziļāk. Šī atšķirība starp abām liecina, ka Django ir daudz slinkāks un daudz efektīvāks, lai risinātu sarežģītus jautājumus.
3) Kopienas un datu bāzu atbalsts
Gan Django, gan SQLAlchemy ir ārkārtīgi populāri relāciju kartēšanas ietvari, un tos atbalsta dažas ārkārtīgi pārsteidzošas kopienas. Tomēr pēdējais ar to izceļas, jo tai ir daudz lielāka kopiena, kā arī absolūti satriecoša dokumentācija, kas liecina par to, ka kopienas locekļi tajā iegulda savu laiku. Pat ja rodas kāda problēma, varat viegli izlikt ziņas StackOverflow vai citos forumos, un būs liela daļa cilvēku, kas vēlas jums palīdzēt.
Līdz ar to gan Django, gan SQLAlchemy atbalsta lielu datu bāzu kolekciju, piemēram, MySQL, PostgreSQL, Oracle un SQLite. Lietotājiem, kuri jau izmanto Microsoft SQL vai plāno to darīt, SQLAlchemy atkal ir atbilde, jo MSSQL to pilnībā atbalsta.
Kopumā abām ir lieliskas kopienas un tās atbalsta dažādas datubāzes, kas ir laba zīme par katras no tām milzīgo kvalitāti.
4) Pieteikumi
Django galvenokārt tika izstrādāts tīmekļa lietojumprogrammām, un tieši tur tas darbojas vislabāk, jo tajā ir daudz iebūvētu rīku, piemēram, veidlapu integrēšana, iepriekšēja validācija utt. tas viss ir ārkārtīgi noderīgs tīmekļa lietojumprogrammām. Papildus tam, ja jums vienkārši ir nepieciešami pamata vaicājumi, tad Django izdotos diezgan labi, jo to ir arī daudz vieglāk iemācīties.
Tomēr, ja jūsu tīmekļa lietojumprogrammām vai ietvariem ir nepieciešami nedaudz sarežģītāki vaicājumi, tad SQLAlchemy. Turklāt, tā kā tā tieši mijiedarbojas ar datu bāzi, varat vienkārši izpildīt vaicājumus pret datu bāzi, faktiski neizmantojot ORM. Turklāt SQLAlchemy ir daudz spēcīgāks nekā Django, kaut arī ar nedaudz augstāku mācīšanās līkni.
Secinājums:
Gan Django, gan SQLAlchemy ir ārkārtīgi populāri objektu relāciju kartēšanas rīki, kuriem ir lielas kopienas, lai tos dublētu, un tos izmanto plašā lietojumprogrammu klāstā visā pasaulē. Kurš no tiem jums ir piemērotāks? Tas galvenokārt ir atkarīgs no tā, kādas ir jūsu prasības un kur tieši vēlaties tās izmantot. Kopumā abas ir lieliskas izvēles iespējas izmantot ORM sistēmu.