Loidsig gnìomhachais san stòr-dàta a’ cleachdadh SchemaKeeper

Is e adhbhar an artaigil seo eisimpleir leabharlann a chleachdadh neach-gleidhidh sgeama seall innealan a dh’ fhaodas pròiseas leasachadh stòran-dàta taobh a-staigh phròiseactan PHP a dhèanamh nas sìmplidhe a’ cleachdadh PostgreSQL DBMS.

Bidh am fiosrachadh bhon artaigil seo, an-toiseach, feumail do luchd-leasachaidh a tha airson a’ chuid as fheàrr a dhèanamh de chomasan PostgreSQL, ach a tha mu choinneimh duilgheadasan a’ cumail suas loidsig gnìomhachais air a chuir san stòr-dàta.

Cha toir an artaigil seo cunntas air na buannachdan no na h-eas-bhuannachdan a tha an lùib a bhith a’ stòradh loidsig gnìomhachais ann an stòr-dàta. Thathas a’ gabhail ris gu bheil an roghainn air a dhèanamh leis an leughadair mu thràth.

Thèid beachdachadh air na ceistean a leanas:

  1. Dè an cruth anns am bu chòir cnap structar stòr-dàta a bhith air a stòradh ann an siostam smachd dreach (ris an canar VCS an-seo)
  2. Mar a nì thu lorg air atharrachaidhean ann an structar an stòr-dàta às deidh dhut dump a shàbhaladh
  3. Mar a ghluaiseas tu atharrachaidhean ann an structar an stòr-dàta gu àrainneachdan eile às aonais còmhstri agus faidhlichean imrich mòr
  4. Mar a chuireas tu air dòigh pròiseas obair co-shìnte air pròiseact le grunn luchd-leasachaidh
  5. Mar a chleachdas tu barrachd atharrachaidhean ann an structar an stòr-dàta gu sàbhailte ann an àrainneachd cinneasachaidh

    Neach-gleidhidh sgeama air a dhealbhadh airson obrachadh le modhan-obrach a tha sgrìobhte sa chànan PL/pgSQL. Cha deach deuchainnean le cànanan eile a dhèanamh, agus mar sin is dòcha nach bi an cleachdadh cho èifeachdach no is dòcha nach bi e comasach.

Mar a chumas tu dump structar stòr-dàta ann an VCS

leabharlainn neach-gleidhidh sgeama a’ toirt seachad gnìomh saveDump, a shàbhaileas structar gach nì bhon stòr-dàta mar fhaidhlichean teacsa fa leth. Is e eòlaire a th’ anns an toradh anns a bheil structar an stòr-dàta, air a roinn ann am faidhlichean buidhne a ghabhas cur gu VCS gu furasta.

Bheir sinn sùil air rudan a thionndadh bho stòr-dàta gu faidhlichean a’ cleachdadh grunn eisimpleirean:

Seòrsa nì
An sgeama
Tiotal
Slighe coimeasach gu faidhle

Clàr
poblach
Cunntasan
./public/tables/accounts.txt

Dòigh-obrach air a stòradh
poblach
augh (hash bigint)
./public/functions/auth(int8).sql

Ro-ràdh
ro-chlàraidh
taraidhean
./booking/views/tariffs.txt

Tha susbaint nam faidhlichean mar riochdachadh teacsa de structar nì stòr-dàta sònraichte. Mar eisimpleir, airson modhan stòraidh, bidh susbaint an fhaidhle mar làn mhìneachadh air a 'mhodh-obrachaidh a tha air a stòradh, a' tòiseachadh leis a 'bhloc CREATE OR REPLACE FUNCTION.

Mar a chithear bhon chlàr gu h-àrd, tha an t-slighe chun an fhaidhle a 'stòradh fiosrachadh mun t-seòrsa, sgeama agus ainm an nì. Tha an dòigh-obrach seo ga dhèanamh nas fhasa a dhol tron ​​​​sgrùdadh dump agus còd air atharrachaidhean san stòr-dàta.

leudachan .sql airson faidhlichean le còd stòr modh-obrach stòraichte, chaidh seo a thaghadh gus am bi an IDE gu fèin-obrachail a’ toirt seachad innealan airson eadar-obrachadh leis an stòr-dàta nuair a thèid am faidhle fhosgladh.

Mar a nì thu lorg air atharrachaidhean ann an structar an stòr-dàta às deidh dhut dump a shàbhaladh

Le bhith a’ sàbhaladh cnap den structar stòr-dàta a th’ ann an-dràsta ann an VCS, gheibh sinn an cothrom faighinn a-mach an deach atharraichean a dhèanamh air structar an stòr-dàta às deidh don dump a bhith air a chruthachadh. Anns an leabharlann neach-gleidhidh sgeama gus atharrachaidhean ann an structar an stòr-dàta a lorg, tha gnìomh air a thoirt seachad verifyDump, a thilleas fiosrachadh mu na h-eadar-dhealachaidhean gun bhuaidhean taobh.

Is e dòigh eile air sgrùdadh a dhèanamh gus an gnìomh a ghairm a-rithist saveDump, a 'sònrachadh an aon eòlaire, agus thoir sùil ann an VCS airson atharrachaidhean. Leis gu bheil a h-uile nì bhon stòr-dàta air a shàbhaladh ann am faidhlichean fa leth, cha sheall VCS ach nithean atharraichte.
Is e prìomh eas-bhuannachd an dòigh seo an fheum air ath-sgrìobhadh faidhlichean gus na h-atharrachaidhean fhaicinn.

Mar a ghluaiseas tu atharrachaidhean ann an structar an stòr-dàta gu àrainneachdan eile às aonais còmhstri agus faidhlichean imrich mòr

Taing don ghnìomh deployDump Faodar còd stòr mhodhan-obrach a chaidh a stòradh a dheasachadh dìreach san aon dòigh ri còd stòr an tagraidh àbhaisteach. Faodaidh tu loidhnichean ùra a chur ris / a dhubhadh às anns a’ chòd modh-obrach a tha air a stòradh agus atharrachaidhean a phutadh sa bhad air smachd dreach, no dòighean-obrach a chruthachadh / a dhubhadh às le bhith a’ cruthachadh / a’ sguabadh às na faidhlichean co-fhreagarrach san eòlaire dump.

Mar eisimpleir, gus modh-obrach ùr a tha air a stòradh a chruthachadh ann an sgeama public dìreach cruthaich faidhle ùr leis an leudachadh .sql anns an eòlaire public/functions, cuir còd stòr a’ mhodh-obrach a tha air a stòradh ann, a’ toirt a-steach a’ bhloc CREATE OR REPLACE FUNCTION, an uairsin gairm an gnìomh deployDump. Bidh atharrachadh agus cuir às do mhodhan stòraichte a’ tachairt san aon dòigh. Mar sin, thèid an còd a-steach don VCS agus don stòr-dàta aig an aon àm.

Ma nochdas mearachd ann an còd stòr modh-obrach sam bith a tha air a stòradh, no ma tha eadar-dhealachadh eadar ainmean an fhaidhle agus am modh-obrach air a stòradh, an uairsin deployDump fàilligidh, a’ taisbeanadh teacsa mearachd. Tha e do-dhèanta mì-chothromachadh de mhodhan stòraichte eadar an dump agus an stòr-dàta gnàthach nuair a thathar ga chleachdadh deployDump.

Nuair a chruthaicheas tu modh-obrach ùr air a stòradh, cha leig thu leas ainm an fhaidhle ceart a chuir a-steach le làimh. Tha e gu leòr airson an leudachan a bhith aig an fhaidhle .sql. Às deidh a 'ghairm deployDump bidh an t-ainm ceart anns an teacsa mearachd, a dh'fhaodar a chleachdadh gus am faidhle ath-ainmeachadh.

deployDump a’ leigeil leat crìochan gnìomh no seòrsa tilleadh atharrachadh gun ghnìomhan a bharrachd, agus leis an dòigh-obrach chlasaigeach a dh’ fheumadh tu
cur an gnìomh an toiseach DROP FUNCTION, agus dìreach an uairsin CREATE OR REPLACE FUNCTION.

Gu mì-fhortanach, tha cuid de shuidheachaidhean far a bheil deployDump chan urrainn dha atharrachaidhean a chuir an sàs gu fèin-ghluasadach. Mar eisimpleir, ma thèid gnìomh brosnachaidh a tha air a chleachdadh le co-dhiù aon inneal-brosnachaidh a thoirt air falbh. Tha suidheachaidhean mar seo air am fuasgladh le làimh a’ cleachdadh faidhlichean imrich.

Ma tha thu cunntachail airson imrich atharrachaidhean air modhan-obrach a tha air an stòradh neach-gleidhidh sgeama, an uairsin feumar faidhlichean imrich a chleachdadh gus atharrachaidhean eile san structar a ghluasad. Mar eisimpleir, tha leabharlann math airson a bhith ag obair le imrich teagasg/imrich.

Feumar imrich a chuir an sàs mus tèid a chuir air bhog deployDump. Leigidh seo leat a h-uile atharrachadh a dhèanamh air an structar agus suidheachaidhean duilich fhuasgladh gus am bi atharrachaidhean ann am modhan stòraidh air an gluasad às deidh sin gun duilgheadasan.

Thèid obrachadh le imrich a mhìneachadh nas mionaidiche anns na h-earrannan a leanas.

Mar a chuireas tu air dòigh pròiseas obair co-shìnte air pròiseact le grunn luchd-leasachaidh

Feumar sgriobt a chruthachadh airson an stòr-dàta iomlan a thòiseachadh, a thèid a chuir air bhog leis an leasaiche air an inneal obrach aige, a ’toirt structar an stòr-dàta ionadail a rèir an dump a chaidh a shàbhaladh ann an VCS. Is e an dòigh as fhasa tòiseachadh an stòr-dàta ionadail a roinn ann an 3 ceumannan:

  1. Cuir a-steach faidhle le structar bunaiteach ris an canar e.e. base.sql
  2. Cur an sàs Imrich
  3. Dùbhlan deployDump

base.sql is e seo an t-àite tòiseachaidh air a bheil imrich air an cur an sàs agus air an cur an gnìomh deployDump, is e sin base.sql + миграции + deployDump = актуальная структура БД. Faodaidh tu faidhle mar sin a chruthachadh a’ cleachdadh a’ ghoireas pg_dump. Chleachdadh base.sql dìreach nuair a thòisicheas tu an stòr-dàta bhon fhìor thoiseach.

Canaidh sinn an sgriobt airson tùsachadh stòr-dàta iomlan refresh.sh. Is dòcha gum bi an sruth-obrach a’ coimhead mar seo:

  1. Bidh an leasaiche a’ cur air bhog san àrainneachd aige refresh.sh agus a’ faighinn structar an stòr-dàta làithreach
  2. Bidh an leasaiche a’ tòiseachadh ag obair air a’ ghnìomh a tha ri làimh, ag atharrachadh an stòr-dàta ionadail gus coinneachadh ri feumalachdan a’ ghnìomh ùr (ALTER TABLE ... ADD COLUMN msaa)
  3. Às deidh an obair a chrìochnachadh, bidh an leasaiche a’ gairm a ’ghnìomh saveDumpgus atharraichean a dhèanamh air an stòr-dàta ann an VCS
  4. Ath-chraoladh leasaiche refresh.shan uairsin verifyDumpa tha a-nis a’ sealltainn liosta de dh’ atharrachaidhean ri ghabhail a-steach san imrich
  5. Bidh an leasaiche a’ gluasad a h-uile atharrachadh structarail don fhaidhle imrich, a’ ruith a-rithist refresh.sh и verifyDump, agus, ma tha an imrich air a chur ri chèile gu ceart, verifyDump cha sheall e eadar-dhealachadh sam bith eadar an stòr-dàta ionadail agus an dump a chaidh a shàbhaladh

Tha am pròiseas a tha air a mhìneachadh gu h-àrd co-chòrdail ri prionnsapalan gitflow. Bidh a dreach fhèin den dump aig gach meur anns an VCS, agus nuair a thèid meuran a chur còmhla, thèid na dumps a chur còmhla. Anns a 'mhòr-chuid de shuidheachaidhean, chan fheumar gnìomh a bharrachd a dhèanamh às deidh aonachadh, ach ma chaidh atharrachaidhean a dhèanamh air diofar mheuran, mar eisimpleir chun an aon bhòrd, dh' fhaodadh còmhstri èirigh.

Beachdaichidh sinn air suidheachadh còmhstri a 'cleachdadh eisimpleir: tha meur ann leasachadh, as am bheil dà mheur a' meafg : feart1 и feart2, aig nach 'eil còmhstri ri leasachadh, ach biodh comhstri r'a chèile. Is e an obair an dà mheur a chur còmhla leasachadh. Airson a 'chùis seo, thathar a' moladh an toiseach aon de na meuran a chur còmhla leasachadhagus an uairsin cuir còmhla leasachadh chun a 'mheur a tha air fhàgail, a' fuasgladh chòmhstri anns a 'mheur a tha air fhàgail, agus an uairsin a' ceangal a 'mheur mu dheireadh a-steach leasachadh. Rè na h-ìre fuasglaidh còmhstri, is dòcha gum feum thu am faidhle imrich a chàradh anns a 'mheur mu dheireadh gus am bi e co-ionnan ris an dump mu dheireadh, a tha a' toirt a-steach toraidhean nan co-aonaidhean.

Mar a chleachdas tu barrachd atharrachaidhean ann an structar an stòr-dàta gu sàbhailte ann an àrainneachd cinneasachaidh

Mar thoradh air gu bheil cnap de structar an stòr-dàta gnàthach ann an VCS, bidh e comasach sgrùdadh a dhèanamh air an stòr-dàta toraidh airson gèilleadh ceart ris an structar riatanach. Bidh seo a’ dèanamh cinnteach gun deach a h-uile atharrachadh a bha an luchd-leasachaidh an dùil a ghluasad gu soirbheachail chun bhunait riochdachaidh.

bho DDL ann am PostgreSQL tha malairt, thathas a’ moladh cumail ris an òrdugh cleachdadh a leanas, gus an urrainn dhut “gun phian” a chuir an gnìomh ma thachras mearachd ris nach robh dùil. ROLLBACK:

  1. Tòisich malairt
  2. Dèan a h-uile gluasad ann an malairt
  3. Anns an aon ghnothach, cuir an gnìomh deployDump
  4. Gun a bhith a 'crìochnachadh a' ghnothaich, cuir an gnìomh verifyDump. Mura h-eil mearachdan ann, ruith COMMIT. Ma tha mearachdan ann, ruith ROLLBACK

Faodar na ceumannan sin a thoirt a-steach gu furasta anns na dòighean a th’ ann mu thràth a thaobh cleachdadh thagraidhean, a’ toirt a-steach ùine downt neoni.

co-dhùnadh

Taing dha na dòighean a tha air am mìneachadh gu h-àrd, tha e comasach an coileanadh as àirde a thoirt a-mach à pròiseactan “PHP + PostgreSQL”, agus aig an aon àm ag ìobradh glè bheag de ghoireas leasachaidh an taca ri bhith a’ buileachadh a h-uile loidsig gnìomhachais sa phrìomh chòd tagraidh. A bharrachd air an sin, giollachd dàta ann an PL/pgSQL gu tric a’ coimhead nas soilleire agus feumach air nas lugha de chòd na an aon gnìomh a chaidh a sgrìobhadh ann am PHP.

Source: www.habr.com

Cuir beachd ann