Negotiatio logica in usu database SchemaKeeper

Propositum huius articuli exemplo bibliothecae est utendum schema instrumenta monstrare quae signanter simpliciorem reddere possunt processum explicandi databases in PHP inceptis utendo in PostgreSQL DBMS.

Informatio ex hoc articulo erit, imprimis, usui esse ad tincidunt qui maxime ex PostgreSQL facultates facere volunt, sed versantur cum quaestionibus conservandis negotia logica in datorum posita.

Articulus hic non describet logicam commoda vel incommoda conponenda negotia database. Ipsam assumenda est, optio jam facta est a lectore.

Sequuntur quaestiones considerandae:

  1. In qua forma structura database TUBER reponenda est in systematis versionis (inferius ad VCS referendum est)
  2. Quomodo indagare mutationes in structuram datorum servato TUBER
  3. Quomodo mutationes in structuram datorum transferre ad alios ambitus sine pugnis et imagini immanium migrationum
  4. Quomodo ordinare processum parallelae operis in incepto per plures tincidunt
  5. Quam ut tuto disponamus plures mutationes in structura database ad productionem environment?

    SchemaKeeper disposito operandi cum condita ratio in lingua PL/pgSQL. Probatio cum aliis linguis exercitata non est, quare usus non sit tam efficax vel non possibilis.

Quomodo reponere database structuram TUBER in VCS

library schema munus praebet saveDump, quae structuram omnium obiecti datorum servat a imagini textu separato. Output est directorium continens structuram datorum, in fasciculos distinctos divisos, qui VCS facile addi possunt.

Intueamur res convertendas a database in files pluribus exemplis utentes:

Object genus
ratio
nomine
Relativum iter ad lima

mensam
publicae
rationibus
./public/tables/accounts.txt

Procedure stored
publicae
auth (mage bigint)
./public/functions/auth(int8).sql

idea
Cras
tariffs
./booking/views/tariffs.txt

Documenta contenta sunt repraesentatio textualis structurae obiecti specificae database. Exempli gratia, pro processibus conditis, contenta tabella plena erit definitio rei conditae, incipiens a clausura CREATE OR REPLACE FUNCTION.

Ut e schemate supra videri potest, iter ad tabella notitias de genere, schemate et nomine obiecti. Hic aditus faciliorem reddit recognitionem per TUBER et codicem mutationum in datorum datorum navigare.

extensio .sql nam lima in repositoria repositoria source code, hoc delectus est ut IDE instrumenta mutuae datorum cum tabella aperta sponte praebet.

Quomodo indagare mutationes in structuram datorum servato TUBER

Servando TUBER hodiernae structurae database in VCS, opportunitatem habemus ad reprimendam num mutationes factae sint ad structuram datorum post TUBER creatum est. In bibliotheca schema ad deprehendere mutationes in structuram datorum, functio provisa est verifyDumpquae reddit informationem de differentiis sine effectibus.

Vel modus reprimendi est munus iterum vocare saveDumpeundem directorium specificans et in VCS mutationibus deprime. Cum omnia objecta e datorum in singulis fasciculis salventur, VCS solum res mutatas ostendet.
Praecipuum huius methodi incommodum necesse est tabulas rescribere ad mutationes videndas.

Quomodo mutationes in structuram datorum transferre ad alios ambitus sine pugnis et imagini immanium migrationum

Gratias ad munus deployDump Fons ratio processuum repositae recenseri potest eodem prorsus modo ac fons schedula ordinaria in codice. Potes addere/delere novas lineas in codice procedure condito et statim mutationes in potestate versionis detrudere, seu modum conditum creare/deleto creando/deleto respondens lima in TUBER presul.

Exempli gratia, novam repositam procedendi in schemate creare public sicut creare novum lima cum extensio .sql in indicem public/functionsconstitue fontem codicem procedendi conditi in eo, inter scandalum CREATE OR REPLACE FUNCTIONErgo vocant munus deployDump. Eodem modo occurrit modus repositae modificationis et delendi. Ita in utroque codice VCS et datorum simul accedit.

Si error apparet in fonte codicis alicuius procedendi repositae, vel discrepantia inter nomina tabella et procedendi reposita, tunc deployDump deficiet, ostendens errorem textum. Mismatch rationes repositae inter TUBER et current database non potest cum usura deployDump.

Cum novam procedure conditum creando, manually recte nomen lima inire non est. Sufficit tabella extensionem habere .sql. Post vocationem deployDump Error in textu continebit nomen verum, quod ad tabulam renominandam adhiberi potest.

deployDump sino te mutare parametri functionis vel reditus genus sine adiectis actionibus, cum classicum accessum habere debeas.
primum facere DROP FUNCTIONAc tunc tantum CREATE OR REPLACE FUNCTION.

Infeliciter, nonnullae sunt condiciones ubi deployDump non statim mutationes adhibere. Verbi gratia, si munus felis adhibitum est saltem unum felis amoveatur. Huiusmodi condiciones resolvuntur manually utentes imagini migrationis.

Si reus migrandi mutationes condita ratio schematunc fasciculi migrationis adhibendae sunt ad alias mutationes in structura transferendas. Exempli gratia, bibliotheca bona cum migrationibus operandi est doctrinam / migrationes.

Donec adipiscing ante Lorem deployDump. Hoc tibi permittit ut omnes mutationes ad structuram et ad condiciones difficultates componendas facias, ita ut mutationes in processibus reconditis postea sine problematibus transferantur.

Migrationes laborantes in sequentibus sectionibus fusius describentur.

Quomodo ordinare processum parallelae operis in incepto per plures tincidunt

Necessarium est scripturam creare ad integram initializationem datorum, quae ab elit in machina operis sui deducetur, structuram datorum localium ad normam TUBER servatam VCS afferens. Via facillima est initializationem datorum localium in 3 gradus dividere:

  1. Fasciculum importare cum structurae fundamentali quae vocabitur e.g. base.sql
  2. Applicando Migrationes
  3. voca deployDump

base.sql est principium super quo migrationes applicantur et executi sunt deployDump, Id est, base.sql + ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ + deployDump = Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ структура Π‘Π”. Talem fasciculi utilitatem creare potes pg_dump. Used " base.sql solum cum initializing database a VULNUS.

Vocemus scripturam plenariam datorum initialization refresh.sh. Workflow videre sic:

  1. In sollicitudin elit in elit refresh.sh et accipit hodiernam database compages
  2. Elit incipit operari in munere prope, modificare datorum localium ad usus necessarios novae functionalitatis.ALTER TABLE ... ADD COLUMN etc.)
  3. Munus expleto, elit vocat munus saveDumpcommittere mutationes factae ad database in VCS
  4. Elit relaunch refresh.shtum verifyDumpquod nunc ostendit elenchum mutationum quae in migrationibus continentur
  5. Elit omnes structurae mutationes in migrationem fasciculi transfert, iterum fugit refresh.sh ΠΈ verifyDumpet, si migratio recte compilata; verifyDump ostendam nullas differentias inter database locales et TUBER servatos

Processus suprascriptus compatitur cum principiis gitflownis. VCS quisque ramus in VCS versionem suam TUBER continebit, et cum ramis mergis immiscet eri. In pluribus, nulla addita actio post mergam sumenda est, sed si mutationes in diversis ramis factae sunt, verbi gratia, ad eandem tabulam, conflictus oriri potest.

Consideremus certaminum condicionem utentes exemplo: ramus est developa quo duo rami rami; feature1 ΠΈ feature2quae nullas habent contentiones developsed certamina inter se habent. Negotium est utrasque ramos in iungi develop. Hoc casu commendatur ut unus ramorum in primo confundatur developtum merge develop ad ramum reliquum, confligit in reliquo ramo resolvens, et deinde in ramum ultimum seta develop. In conflictu solutionis periodi, migrationem fasciculi in ultimo ramo figere potes, ut TUBER finali respondeat, quod merges eventus includit.

Quam ut tuto disponamus plures mutationes in structura database ad productionem environment?

Gratias coram TUBER hodiernae structurae database in VCS, fieri potest ad reprimendam datorum productionem ad exigendum obsequium cum debita structura. Hoc efficit ut omnes mutationes tincidunt destinatae ad basis productionis feliciter transferantur.

Quia Warez in PostgreSQL est transactionalcommendatur, sequenti instruere ordinem inhaerere, ut, si inopinato errore, possis "sine dolore" exequi. ROLLBACK:

  1. Satus transaction
  2. Praestare omnes migrationes in transaction
  3. In eadem re facite deployDump
  4. Absque transactione faciente verifyDump. Si errores non sunt, curre COMMIT. Si errores, curre ROLLBACK

Hi gradus facile coniungi possunt in accessibus exsistentibus applicationis instruere, incluso zephyro-downtime.

conclusio,

Propter methodos supra descriptos, maximas operationes ex "PHP + PostgreSQL" inceptis exprimi potest, dum commodum comparatione parum evolutionis sacrificans comparatur ad exsequendam universam rem logicam in summa applicationis codice. Praeterea, MGE PL/pgSQL saepe magis perspicuum spectat et minus requirit codicem quam eandem functionem in PHP scriptam.

Source: www.habr.com