Loighic gnó sa bhunachar sonraí ag baint úsáide as SchemaKeeper

Is é cuspóir an ailt seo ná sampla leabharlann a úsáid scéimre-choimeádaí uirlisí a thaispeáint ar féidir leo an próiseas chun bunachair shonraí a fhorbairt laistigh de thionscadail PHP a shimpliú go suntasach trí úsáid a bhaint as PostgreSQL DBMS.

Beidh an t-eolas ón alt seo úsáideach, ar an gcéad dul síos, d'fhorbróirí atá ag iarraidh an leas is fearr a bhaint as cumais PostgreSQL, ach a bhfuil fadhbanna acu le loighic gnó a chuirtear sa bhunachar sonraí a chothabháil.

Ní dhéanfaidh an t-alt cur síos ar na buntáistí nó na míbhuntáistí a bhaineann le loighic gnó a stóráil i mbunachar sonraí. Glactar leis go bhfuil an rogha déanta ag an léitheoir cheana féin.

Breathnófar ar na ceisteanna seo a leanas:

  1. Cén fhoirm inar cheart dumpáil struchtúr bunachar sonraí a stóráil i gcóras rialaithe leagain (dá ngairfear VCS anseo feasta)
  2. Conas athruithe ar struchtúr an bhunachair sonraí a rianú tar éis dumpáil a shábháil
  3. Conas athruithe ar struchtúr an bhunachair sonraí a aistriú chuig timpeallachtaí eile gan coinbhleachtaí agus comhaid imirce ollmhóra
  4. Conas a eagrú ar an bpróiseas oibre comhthreomhar ar thionscadal ag roinnt forbróirí
  5. Conas níos mó athruithe ar struchtúr an bhunachair shonraí a imscaradh go sábháilte chuig timpeallacht táirgthe

    Coimeádaí Scéimre deartha chun oibriú le nósanna imeachta stóráilte atá scríofa sa teanga PL/pgSQL. Ní dhearnadh tástáil le teangacha eile, agus mar sin b’fhéidir nach mbeidh an úsáid chomh héifeachtach sin nó b’fhéidir nach mbeadh sé indéanta.

Conas dumpáil struchtúr bunachar sonraí a stóráil i VCS

leabharlann scéimre-choimeádaí Soláthraíonn feidhm saveDump, a shábhálann struchtúr gach réad ón mbunachar sonraí mar chomhaid téacs ar leith. Is eolaire é an t-aschur ina bhfuil struchtúr an bhunachair shonraí, roinnte i gcomhaid ghrúpáilte is féidir a chur le VCS go héasca.

Breathnaímid ar réada ó bhunachar sonraí a thiontú go comhaid ag úsáid roinnt samplaí:

Cineál réad
An scéim
Ainm
Conair choibhneasta go comhad

tábla
poiblí
cuntais
./public/tables/accounts.txt

Nós imeachta stóráilte
poiblí
auth(hash bigint)
./public/functions/auth(int8).sql

Réamhrá
áirithe
taraifí
./booking/views/tariffs.txt

Is léiriú téacsúil é ábhar na gcomhad ar struchtúr ruda bunachair shonraí ar leith. Mar shampla, le haghaidh nósanna imeachta stóráilte, beidh ábhar an chomhaid mar shainmhíniú iomlán ar an nós imeachta stóráilte, ag tosú leis an mbloc CREATE OR REPLACE FUNCTION.

Mar is léir ón tábla thuas, stórálann an cosán go dtí an comhad faisnéis faoi chineál, scéimre agus ainm an ruda. Fágann an cur chuige seo go bhfuil sé níos fusa dul tríd an athbhreithniú dumpála agus cód ar athruithe sa bhunachar sonraí.

síneadh .sql maidir le comhaid a bhfuil cód foinse nós imeachta stóráilte acu, roghnaíodh é seo ionas go soláthraíonn an IDE uirlisí go huathoibríoch chun idirghníomhú leis an mbunachar sonraí nuair a osclaítear an comhad.

Conas athruithe ar struchtúr an bhunachair sonraí a rianú tar éis dumpáil a shábháil

Trí dhumpáil den struchtúr bunachar sonraí reatha a shábháil i VCS, faighimid an deis a sheiceáil cibé an ndearnadh athruithe ar struchtúr an bhunachair sonraí tar éis don dumpáil a bheith cruthaithe. Sa leabharlann scéimre-choimeádaí chun athruithe ar struchtúr an bhunachair sonraí a bhrath, soláthraítear feidhm verifyDump, a thugann faisnéis ar ais faoi na difríochtaí gan fo-iarsmaí.

Bealach eile le seiceáil ná an fheidhm a ghlaoch arís saveDump, ag sonrú an eolaire céanna, agus seiceáil i VCS le haghaidh athruithe. Ós rud é go ndéantar gach réad ón mbunachar sonraí a shábháil i gcomhaid ar leith, ní thaispeánfaidh VCS ach réada athraithe.
Is é an míbhuntáiste is mó a bhaineann leis an modh seo ná an gá atá le comhaid a scríobh chun na hathruithe a fheiceáil.

Conas athruithe ar struchtúr an bhunachair sonraí a aistriú chuig timpeallachtaí eile gan coinbhleachtaí agus comhaid imirce ollmhóra

A bhuíochas leis an bhfeidhm deployDump Is féidir cód foinse na nósanna imeachta stóráilte a chur in eagar díreach mar an gcéanna le cód foinse an fheidhmchláir rialta. Is féidir leat línte nua a chur leis / a scriosadh i gcód nós imeachta stóráilte agus athruithe a bhrú láithreach ar rialú an leagain, nó nósanna imeachta stóráilte a chruthú / a scriosadh trí na comhaid chomhfhreagracha sa eolaire dumpála a chruthú / a scriosadh.

Mar shampla, chun nós imeachta nua stóráilte a chruthú i scéimre public ach cruthaigh comhad nua leis an síneadh .sql san eolaire public/functions, cuir cód foinse an nós imeachta stóráilte ann, lena n-áirítear an bloc CREATE OR REPLACE FUNCTION, ansin glaoch ar an fheidhm deployDump. Tarlaíonn modhnú agus scriosadh nós imeachta stóráilte ar an mbealach céanna. Mar sin, téann an cód isteach sa VCS agus sa bhunachar sonraí ag an am céanna.

Má léirítear earráid i gcód foinse aon nós imeachta stóráilte, nó neamhréireacht idir ainmneacha an chomhaid agus an nós imeachta stóráilte, ansin deployDump theipeann, ag taispeáint téacs earráide. Tá sé dodhéanta nósanna imeachta stóráilte a neamhréireacht idir an dumpáil agus an bunachar sonraí reatha agus é á úsáid deployDump.

Agus nós imeachta nua stóráilte á chruthú, ní gá an t-ainm comhaid ceart a chur isteach de láimh. Is leor go mbeadh an síneadh ag an gcomhad .sql. Tar éis an glaoch deployDump beidh an t-ainm ceart sa téacs earráide, ar féidir é a úsáid chun an comhad a athainmniú.

deployDump ligeann sé duit paraiméadair feidhme nó cineál fillte a athrú gan gníomhartha breise, agus leis an gcur chuige clasaiceach a bheadh ​​ort
fhorghníomhú ar dtús DROP FUNCTION, agus gan ach ansin CREATE OR REPLACE FUNCTION.

Ar an drochuair, tá roinnt cásanna ina deployDump in ann athruithe a chur i bhfeidhm go huathoibríoch. Mar shampla, má bhaintear feidhm truicear a úsáideann truicear amháin ar a laghad. Réitítear cásanna den sórt sin de láimh ag baint úsáide as comhaid ascnaimh.

Má tá tú freagrach as athruithe ar nósanna imeachta stóráilte a aistriú scéimre-choimeádaí, ansin ní mór comhaid imirce a úsáid chun athruithe eile sa struchtúr a aistriú. Mar shampla, tá leabharlann mhaith le haghaidh oibriú le himircigh fhoirceadal/imirce.

Ní mór ascnaimh a chur i bhfeidhm roimh sheoladh deployDump. Ligeann sé seo duit gach athrú a dhéanamh ar an struchtúr agus cásanna fadhbacha a réiteach ionas go n-aistrítear athruithe ar nósanna imeachta stóráilte ina dhiaidh sin gan fadhbanna.

Déanfar cur síos níos mine ar oibriú le himirce sna ranna seo a leanas.

Conas a eagrú ar an bpróiseas oibre comhthreomhar ar thionscadal ag roinnt forbróirí

Is gá script a chruthú chun an bunachar sonraí a thosú go hiomlán, a sheolfaidh an forbróir ar a mheaisín oibre, ag tabhairt struchtúr an bhunachair shonraí áitiúil i gcomhréir leis an dumpáil a shábháiltear i VCS. Is é an bealach is éasca tús a chur leis an mbunachar sonraí áitiúil a roinnt ina 3 chéim:

  1. Iompórtáil comhad le struchtúr bunúsach a thabharfar air e.g. base.sql
  2. Imirce a Chur i bhFeidhm
  3. Glaoigh deployDump

base.sql is é an pointe tosaigh ar a bharr a ndéantar ascnaimh a chur i bhfeidhm agus a fhorghníomhú deployDumpIs é sin, base.sql + миграции + deployDump = актуальная структура БД. Is féidir leat comhad den sórt sin a chruthú ag baint úsáide as an bhfóntas pg_dump. Úsáidte base.sql go heisiach nuair atá an bunachar sonraí á thúsú ón tús.

A ligean ar glaoch ar an script le haghaidh thúsú bunachar sonraí iomlán refresh.sh. Seans go mbeidh cuma mar seo ar an sreabhadh oibre:

  1. Seolann an forbróir ina thimpeallacht refresh.sh agus faigheann sé struchtúr an bhunachair shonraí reatha
  2. Tosaíonn an forbróir ag obair ar an tasc idir lámha, ag mionathrú ar an mbunachar sonraí áitiúil chun freastal ar riachtanais na feidhmiúlachta nua (ALTER TABLE ... ADD COLUMN srl)
  3. Tar éis an tasc a chríochnú, glaonn an forbróir an fheidhm saveDumpathruithe a rinneadh ar an mbunachar sonraí sa VCS a ghealladh
  4. Athsheoladh an fhorbróra refresh.sh, ansin verifyDumpa thaispeánann anois liosta athruithe le cur san áireamh san imirce
  5. Aistríonn an forbróir gach athrú struchtúir chuig an gcomhad imirce, ritheann sé arís refresh.sh и verifyDump, agus, má chuirtear an t-aistriú le chéile i gceart, verifyDump ní thaispeánfar aon difríochtaí idir an bunachar sonraí áitiúil agus an dumpa sábháilte

Tá an próiseas a gcuirtear síos air thuas ag luí le prionsabail gitflow. Beidh a leagan féin den dumpáil i ngach brainse sa VCS, agus nuair a bheidh brainsí á gcumasc, déanfar na dumpaí a chumasc. I bhformhór na gcásanna, ní gá aon ghníomhaíocht bhreise a dhéanamh tar éis cumaisc, ach dá ndéanfaí athruithe i mbrainsí éagsúla, mar shampla, ar an tábla céanna, d'fhéadfadh coinbhleacht teacht chun cinn.

Déanaimis staid choimhlinte a mheas ag baint úsáide as sampla: tá brainse ann fhorbairt, as a dtagann dhá bhrainse: gné1 и gné2, nach bhfuil aon choinbhleacht acu leis fhorbairt, ach coinbhleachtaí a bheith acu lena chéile. Is é an tasc ná an dá bhrainse a chumasc isteach fhorbairt. Don chás seo, moltar ceann de na brainsí a chumasc isteach ar dtús fhorbairtagus ansin chumasadh fhorbairt go dtí an brainse atá fágtha, coinbhleachtaí a réiteach sa bhrainse atá fágtha, agus ansin an brainse deireanach a chumasc isteach fhorbairt. Le linn na céime réitigh coinbhleachta, b'fhéidir go mbeidh ort an comhad imirce a shocrú sa bhrainse dheireanach ionas go mbeidh sé ag teacht leis an dumpáil deiridh, lena n-áirítear torthaí an chumaisc.

Conas níos mó athruithe ar struchtúr an bhunachair shonraí a imscaradh go sábháilte chuig timpeallacht táirgthe

Mar gheall ar dhumpáil struchtúr an bhunachair shonraí reatha a bheith i VCS, is féidir an bunachar sonraí táirgthe a sheiceáil le haghaidh comhlíonadh beacht an struchtúir riachtanach. Cinntíonn sé seo go ndearnadh na hathruithe go léir a bhí beartaithe ag na forbróirí a aistriú go rathúil chuig an mbonn táirgthe.

Mar DDL i PostgreSQL é idirbheartaíochta, moltar cloí leis an ordú imlonnaithe seo a leanas, ionas gur féidir leat, i gcás earráide gan choinne, a fhorghníomhú “gan phian”. ROLLBACK:

  1. Tosaigh idirbheart
  2. Déan gach ascnamh in idirbheart
  3. San idirbheart céanna, a fhorghníomhú deployDump
  4. Gan an t-idirbheart a chríochnú, a fhorghníomhú verifyDump. Mura bhfuil aon earráidí ann, rith COMMIT. Má tá earráidí ann, rith ROLLBACK

Is féidir na céimeanna seo a chomhtháthú go héasca sna cineálacha cur chuige atá ann cheana maidir le himscaradh feidhmchlár, lena n-áirítear aga neamhfhónaimh nialasach.

Conclúid

A bhuí leis na modhanna a gcuirtear síos orthu thuas, is féidir an fheidhmíocht uasta a bhaint de thionscadail “PHP + PostgreSQL”, agus ag an am céanna is beag áisiúlacht forbartha a íobairt i gcomparáid leis an loighic ghnó ar fad sa phríomhchód iarratais a chur i bhfeidhm. Thairis sin, próiseáil sonraí i PL/pgSQL cuma níos trédhearcaí go minic agus éilíonn sé níos lú cód ná an fheidhmiúlacht chéanna atá scríofa i PHP.

Foinse: will.com

Add a comment