የዚህ ጽሑፍ ዓላማ የቤተ-መጽሐፍትን ምሳሌ መጠቀም ነው።
ከዚህ ጽሑፍ የተገኘው መረጃ በመጀመሪያ የ PostgreSQL ችሎታዎችን ለመጠቀም ለሚፈልጉ ገንቢዎች ጠቃሚ ይሆናል ፣ ግን በመረጃ ቋቱ ውስጥ የተቀመጠውን የንግድ አመክንዮ የመጠበቅ ችግሮች ያጋጥሟቸዋል።
ይህ መጣጥፍ የንግድ ሎጂክን በመረጃ ቋት ውስጥ ማከማቸት ያለውን ጥቅምና ጉዳት አይገልጽም። ምርጫው አስቀድሞ በአንባቢው እንደተደረገ ይገመታል.
የሚከተሉት ጥያቄዎች ግምት ውስጥ ይገባሉ.
- የውሂብ ጎታ መዋቅር መጣል በምን አይነት መልኩ በስሪት ቁጥጥር ስርዓት ውስጥ መቀመጥ አለበት (ከዚህ በኋላ ቪሲኤስ ተብሎ ይጠራል)
- ቆሻሻን ከቆጠቡ በኋላ በመረጃ ቋቱ መዋቅር ላይ ለውጦችን እንዴት መከታተል እንደሚቻል
- በዳታቤዝ መዋቅር ውስጥ ያሉ ለውጦችን ያለ ግጭት እና ግዙፍ የፍልሰት ፋይሎች ወደ ሌሎች አካባቢዎች እንዴት ማስተላለፍ እንደሚቻል
- በበርካታ ገንቢዎች በፕሮጀክት ላይ ትይዩ ስራዎችን እንዴት ማደራጀት እንደሚቻል
- በመረጃ ቋት መዋቅር ላይ ተጨማሪ ለውጦችን በአስተማማኝ ሁኔታ ወደ ምርት አካባቢ እንዴት ማሰማራት እንደሚቻል
የመርሃግብር ጠባቂ በቋንቋው ከተፃፉ የተከማቹ ሂደቶች ጋር ለመስራት የተነደፈ
PL/pgSQL . ከሌሎች ቋንቋዎች ጋር መሞከር አልተካሄደም, ስለዚህ አጠቃቀሙ ያን ያህል ውጤታማ ላይሆን ይችላል ወይም ላይሆን ይችላል.
በቪሲኤስ ውስጥ የውሂብ ጎታ መዋቅርን እንዴት ማከማቸት እንደሚቻል
ቤተ መጻሕፍት saveDump
, ይህም የሁሉንም ነገሮች መዋቅር ከውሂብ ጎታ እንደ የተለየ የጽሑፍ ፋይሎች ያስቀምጣቸዋል. ውጤቱ በቀላሉ ወደ ቪሲኤስ ሊጨመሩ በሚችሉ በቡድን የተከፋፈሉ የመረጃ ቋቱን መዋቅር የያዘ ማውጫ ነው።
ብዙ ምሳሌዎችን በመጠቀም ነገሮችን ከውሂብ ጎታ ወደ ፋይሎች እንለውጣለን።
የነገር አይነት
መርሃግብሩ
ርዕስ
ወደ ፋይል አንጻራዊ መንገድ
ጠረጴዛ
ሕዝባዊ
መለያዎች
./public/tables/accounts.txt
የተከማቸ አሰራር
ሕዝባዊ
auth(ሀሽ ቢግንት)
./public/functions/auth(int8).sql
መግቢያ
ማስያዣ
ታሪፎች
./booking/views/tariffs.txt
የፋይሎቹ ይዘቶች የአንድ የተወሰነ የውሂብ ጎታ ነገር አወቃቀር የጽሑፍ ውክልና ናቸው። ለምሳሌ ፣ ለተከማቹ ሂደቶች ፣ የፋይሉ ይዘት ከብሎክ ጀምሮ ፣ የተከማቸ አሰራር ሙሉ ፍቺ ይሆናል ። CREATE OR REPLACE FUNCTION
.
ከላይ ካለው ሰንጠረዥ እንደሚታየው, ወደ ፋይሉ የሚወስደው መንገድ ስለ እቃው አይነት, እቅድ እና ስም መረጃን ያከማቻል. ይህ አካሄድ በዳታ ቤዝ ውስጥ የተደረጉ ለውጦችን በቆሻሻ እና በኮድ ግምገማ ውስጥ ለማሰስ ቀላል ያደርገዋል።
ቅጥያ
.sql
ለተከማቸ የአሰራር ሂደት ምንጭ ኮድ ፋይሎች ይህ የተመረጠው IDE ፋይሉ በሚከፈትበት ጊዜ ከመረጃ ቋቱ ጋር መስተጋብር ለመፍጠር መሳሪያዎችን በራስ-ሰር እንዲያቀርብ ነው።
ቆሻሻን ከቆጠቡ በኋላ በመረጃ ቋቱ መዋቅር ላይ ለውጦችን እንዴት መከታተል እንደሚቻል
አሁን ያለውን የውሂብ ጎታ መዋቅር በቪሲኤስ ውስጥ በማስቀመጥ፣ መጣያው ከተፈጠረ በኋላ በመረጃ ቋቱ መዋቅር ላይ ለውጦች መደረጉን ለማረጋገጥ እድሉን እናገኛለን። በቤተ-መጽሐፍት ውስጥ verifyDump
ስለ ልዩነቶቹ ያለ የጎንዮሽ ጉዳቶች መረጃን የሚመልስ.
ለመፈተሽ አማራጭ መንገድ ተግባሩን እንደገና መጥራት ነው። saveDump
፣ ተመሳሳዩን ማውጫ በመጥቀስ እና ለውጦችን ለማግኘት VCSን ያረጋግጡ። ከመረጃ ቋቱ ውስጥ ያሉ ሁሉም ነገሮች በተለየ ፋይሎች ውስጥ ስለሚቀመጡ፣ VCS የሚያሳየው የተለወጡ ነገሮችን ብቻ ነው።
የዚህ ዘዴ ዋነኛው ኪሳራ ለውጦቹን ለማየት ፋይሎችን እንደገና መጻፍ አስፈላጊ ነው.
በዳታቤዝ መዋቅር ውስጥ ያሉ ለውጦችን ያለ ግጭት እና ግዙፍ የፍልሰት ፋይሎች ወደ ሌሎች አካባቢዎች እንዴት ማስተላለፍ እንደሚቻል
ለተግባሩ ምስጋና ይግባው deployDump
የተከማቹ ሂደቶች ምንጭ ኮድ ልክ እንደ መደበኛው መተግበሪያ ምንጭ ኮድ በተመሳሳይ መንገድ ሊስተካከል ይችላል። በተከማቸ የአሰራር ኮድ ውስጥ አዲስ መስመሮችን ማከል/መሰረዝ እና ለውጦችን ወዲያውኑ ወደ ስሪት ቁጥጥር መጫን ወይም በቆሻሻ ማውጫ ውስጥ ያሉትን ተዛማጅ ፋይሎች በመፍጠር/መሰረዝ የተከማቹ ሂደቶችን መፍጠር/መሰረዝ ትችላለህ።
ለምሳሌ, አዲስ የተከማቸ አሰራርን በእቅድ ውስጥ ለመፍጠር public
በቀላሉ ከቅጥያው ጋር አዲስ ፋይል ይፍጠሩ .sql
በማውጫው ውስጥ public/functions
, እገዳውን ጨምሮ የተከማቸ የአሰራር ሂደት ምንጭ ኮድ ያስቀምጡ CREATE OR REPLACE FUNCTION
, ከዚያም ተግባሩን ይደውሉ deployDump
. የተከማቸ አሰራርን ማስተካከል እና መሰረዝ በተመሳሳይ መንገድ ይከሰታል. ስለዚህ, ኮዱ ወደ ሁለቱም VCS እና የውሂብ ጎታ በአንድ ጊዜ ውስጥ ይገባል.
በማናቸውም የተከማቸ አሰራር ምንጭ ኮድ ላይ ስህተት ከታየ ወይም በፋይሉ እና በተከማቸ አሰራር መካከል ልዩነት ካለ። deployDump
የስህተት ጽሑፍ በማሳየት አይሳካም። በቆሻሻ ማጠራቀሚያ እና አሁን ባለው የውሂብ ጎታ መካከል የተከማቹ ሂደቶች አለመመጣጠን በሚጠቀሙበት ጊዜ የማይቻል ነው deployDump
.
አዲስ የተከማቸ አሰራር ሲፈጥሩ ትክክለኛውን የፋይል ስም እራስዎ ማስገባት አያስፈልግም. ፋይሉ ቅጥያው እንዲኖረው በቂ ነው
.sql
. ከጥሪው በኋላdeployDump
የስህተት ጽሑፉ ትክክለኛውን ስም ይይዛል, ይህም ፋይሉን እንደገና ለመሰየም ሊያገለግል ይችላል.
deployDump
ያለ ተጨማሪ እርምጃዎች የተግባርን ወይም የመመለሻ አይነትን መለኪያዎች እንዲቀይሩ ይፈቅድልዎታል ፣ በጥንታዊው አቀራረብ ግን ያስፈልግዎታል
መጀመሪያ ማስፈጸም DROP FUNCTION
እና ከዚያ በኋላ ብቻ CREATE OR REPLACE FUNCTION
.
በሚያሳዝን ሁኔታ, አንዳንድ ሁኔታዎች አሉ deployDump
ለውጦችን በራስ ሰር መተግበር አልተቻለም። ለምሳሌ ቢያንስ በአንድ ቀስቅሴ ጥቅም ላይ የሚውለው ቀስቅሴ ተግባር ከተወገደ። እንደነዚህ ያሉ ሁኔታዎች የስደት ፋይሎችን በመጠቀም በእጅ መፍትሄ ያገኛሉ.
በተከማቹ ሂደቶች ላይ ለውጦችን የማሸጋገር ሃላፊነት እርስዎ ከሆኑ
ስደት ከመጀመሩ በፊት መተግበር አለበት። deployDump
. ይህ በአወቃቀሩ ላይ ሁሉንም ለውጦች እንዲያደርጉ እና ችግር ያለባቸውን ሁኔታዎች እንዲፈቱ ይፈቅድልዎታል ስለዚህ የተከማቹ ሂደቶች ለውጦች በቀጣይ ያለምንም ችግር ይተላለፋሉ።
ከስደት ጋር አብሮ መስራት በሚቀጥሉት ክፍሎች በበለጠ ዝርዝር ይገለጻል።
በበርካታ ገንቢዎች በፕሮጀክት ላይ ትይዩ ስራዎችን እንዴት ማደራጀት እንደሚቻል
የውሂብ ጎታውን ሙሉ በሙሉ ለመጀመር ስክሪፕት መፍጠር አስፈላጊ ነው, ይህም በገንቢው በስራው ማሽን ላይ ይጀምራል, የአካባቢያዊ የውሂብ ጎታ አወቃቀሩን በቪሲኤስ ውስጥ በተቀመጠው መጣያ መሰረት ያመጣል. በጣም ቀላሉ መንገድ የአካባቢ ዳታቤዝ አጀማመርን በ 3 ደረጃዎች መከፋፈል ነው።
- ለምሳሌ ተብሎ የሚጠራው መሰረታዊ መዋቅር ያለው ፋይል ያስመጡ.
base.sql
- ስደትን መተግበር
- ግጥሚያ
deployDump
base.sql
ፍልሰት የሚተገበርበት እና የሚፈፀምበት መነሻ ነጥብ ነው።deployDump
ነውbase.sql + миграции + deployDump = актуальная структура БД
. መገልገያውን በመጠቀም እንዲህ አይነት ፋይል መፍጠር ይችላሉpg_dump
. ጥቅም ላይ የዋለbase.sql
የውሂብ ጎታውን ከባዶ ሲጀምር ብቻ።
የተሟላ የውሂብ ጎታ አጀማመር ለማግኘት ስክሪፕቱን እንጥራ refresh.sh
. የስራ ሂደቱ ይህን ሊመስል ይችላል፡-
- ገንቢው በአካባቢያቸው ይጀምራል
refresh.sh
እና የአሁኑን የውሂብ ጎታ መዋቅር ያገኛል - ገንቢው የአዲሱን ተግባር ፍላጎቶች ለማሟላት የአካባቢውን ዳታቤዝ በማስተካከል በተያዘው ተግባር ላይ መስራት ይጀምራል (
ALTER TABLE ... ADD COLUMN
ወዘተ) - ሥራውን ካጠናቀቀ በኋላ ገንቢው ተግባሩን ይጠራል
saveDump
በቪሲኤስ ውስጥ ባለው የውሂብ ጎታ ላይ የተደረጉ ለውጦችን ለማድረግ - የገንቢ ዳግም ማስጀመር
refresh.sh
እንግዲህverifyDump
አሁን በስደት ውስጥ የሚካተቱትን ለውጦች ዝርዝር ያሳያል - ገንቢው ሁሉንም የመዋቅር ለውጦች ወደ ፍልሰት ፋይል ያስተላልፋል፣ እንደገና ይሰራል
refresh.sh
иverifyDump
, እና, ፍልሰት በትክክል ከተጠናቀረ,verifyDump
በአካባቢው የውሂብ ጎታ እና በተቀመጠው ቆሻሻ መካከል ምንም ልዩነት አይታይም
ከላይ የተገለፀው ሂደት ከ gitflow መርሆዎች ጋር ተኳሃኝ ነው. በቪሲኤስ ውስጥ ያለው እያንዳንዱ ቅርንጫፍ የራሱ የሆነ የቆሻሻ መጣያ ሥሪት ይይዛል፣ እና ቅርንጫፎችን ሲዋሃዱ ቆሻሻዎቹ ይዋሃዳሉ። በአብዛኛዎቹ ሁኔታዎች, ከተዋሃዱ በኋላ ምንም ተጨማሪ እርምጃ መውሰድ አያስፈልግም, ነገር ግን በተለያዩ ቅርንጫፎች ላይ ለውጦች ከተደረጉ, ለምሳሌ, ወደ አንድ ጠረጴዛ, ግጭት ሊፈጠር ይችላል.
አንድ ምሳሌ በመጠቀም የግጭት ሁኔታን እናስብ፡ ቅርንጫፍ አለ። ማዳበር, ከየትኛው ሁለት ቅርንጫፎች ቅርንጫፎች; ባህሪይNUMX። и ባህሪይNUMX።ጋር ምንም ግጭት የሌላቸው ማዳበር, ግን እርስ በእርሳቸው ይጋጫሉ. ተግባሩ ሁለቱንም ቅርንጫፎች ማዋሃድ ነው ማዳበር. በዚህ ጉዳይ ላይ በመጀመሪያ ከቅርንጫፎቹ አንዱን ወደ ውስጥ ማዋሃድ ይመከራል ማዳበርእና ከዚያ ይዋሃዱ ማዳበር ወደ ቀሪው ቅርንጫፍ, በቀሪው ቅርንጫፍ ውስጥ ግጭቶችን መፍታት, ከዚያም የመጨረሻውን ቅርንጫፍ ወደ ውስጥ በማዋሃድ ማዳበር. በግጭት አፈታት ጊዜ የፍልሰት ፋይሉን በመጨረሻው ቅርንጫፍ ላይ ማስተካከል ሊኖርብዎት ይችላል ይህም ከመጨረሻው ቆሻሻ ጋር ይዛመዳል, ይህም የውህደቶቹን ውጤቶች ያካትታል.
በመረጃ ቋት መዋቅር ላይ ተጨማሪ ለውጦችን በአስተማማኝ ሁኔታ ወደ ምርት አካባቢ እንዴት ማሰማራት እንደሚቻል
አሁን ያለው የውሂብ ጎታ መዋቅር በቪሲኤስ ውስጥ በመገኘቱ ምስጋና ይግባውና ከሚፈለገው መዋቅር ጋር በትክክል መሟላቱን የምርት ዳታቤዙን ማረጋገጥ ተችሏል። ይህ ገንቢዎቹ ያሰቡት ሁሉም ለውጦች በተሳካ ሁኔታ ወደ ምርት መሠረት መተላለፉን ያረጋግጣል።
ጀምሮ ROLLBACK
:
- ግብይት ይጀምሩ
- በግብይት ውስጥ ሁሉንም ፍልሰት ያከናውኑ
- በተመሳሳዩ ግብይት, ያከናውኑ
deployDump
- ግብይቱን ሳይጨርሱ, ያሂዱ
verifyDump
. ምንም ስህተቶች ከሌሉ, አሂድCOMMIT
. ስህተቶች ካሉ, አሂድROLLBACK
እነዚህ እርምጃዎች በቀላሉ ወደ ትግበራ ማሰማራት ካሉ ነባር አቀራረቦች ጋር ሊዋሃዱ ይችላሉ፣ ዜሮ-መቀነስ ጊዜን ጨምሮ።
መደምደሚያ
ከላይ ለተገለጹት ዘዴዎች ምስጋና ይግባቸውና በዋናው የመተግበሪያ ኮድ ውስጥ ሁሉንም የንግድ ሥራ አመክንዮዎች ከመተግበሩ ጋር ሲነፃፀር በአንጻራዊ ሁኔታ ሲታይ አነስተኛ የልማት ምቾትን እየከፈለ ከ "PHP + PostgreSQL" ፕሮጀክቶች ውስጥ ከፍተኛውን አፈፃፀም ማስወጣት ይቻላል. በተጨማሪም, የውሂብ ሂደት ውስጥ
ምንጭ: hab.com