ስለ ዳታቤዝ ተጨማሪ ገንቢዎች ይህንን ማወቅ አለባቸው

ማስታወሻ. ትርጉምጃና ዶጋን በጎግል ውስጥ ልምድ ያለው መሐንዲስ ሲሆን በአሁኑ ጊዜ በጎ ውስጥ የተፃፈውን የኩባንያውን የምርት አገልግሎት ታዛቢነት ላይ እየሰራ ነው። በእንግሊዘኛ ተናጋሪው ታዳሚዎች ዘንድ ከፍተኛ ተወዳጅነትን ባተረፈው በዚህ ጽሁፍ በ DBMS (እና አንዳንድ ጊዜ በአጠቃላይ የተከፋፈሉ ስርዓቶች) ጠቃሚ የሆኑ ቴክኒካዊ ዝርዝሮችን በ17 ነጥቦች ሰብስባለች ይህም ለትልቅ/ተፈላጊ አፕሊኬሽኖች ገንቢዎች ግምት ውስጥ ያስገባል።

ስለ ዳታቤዝ ተጨማሪ ገንቢዎች ይህንን ማወቅ አለባቸው

አብዛኛዎቹ የኮምፒዩተር ሲስተሞች ሁኔታቸውን ይከታተላሉ እና በዚህ መሠረት አንድ ዓይነት የመረጃ ማከማቻ ስርዓት ያስፈልጋቸዋል። እግረ መንገዴን ወደ የውሂብ መጥፋት እና መቋረጥ ምክንያት የሆኑ የንድፍ ስህተቶችን በመስራት ስለ የውሂብ ጎታዎች እውቀትን ለረጅም ጊዜ አከማችቻለሁ። ከፍተኛ መጠን ያለው መረጃን በሚያስኬዱ ስርዓቶች ውስጥ የውሂብ ጎታዎች በስርዓቱ አርክቴክቸር እምብርት ላይ ይገኛሉ እና ጥሩውን መፍትሄ ለመምረጥ እንደ ቁልፍ አካል ሆነው ያገለግላሉ። ምንም እንኳን ለዳታቤዝ ሥራው ከፍተኛ ትኩረት ቢሰጠውም, የመተግበሪያ ገንቢዎች ለመገመት የሚሞክሩት ችግሮች ብዙውን ጊዜ የበረዶ ግግር ጫፍ ብቻ ናቸው. በዚህ ተከታታይ መጣጥፎች ውስጥ በዚህ መስክ ልዩ ላልሆኑ ገንቢዎች ጠቃሚ የሆኑ አንዳንድ ሃሳቦችን አካፍላለሁ።

  1. 99,999% የሚሆነው አውታረ መረቡ ችግር ካልፈጠረ እድለኛ ነዎት።
  2. አሲዲ ማለት ብዙ የተለያዩ ነገሮች ማለት ነው።
  3. እያንዳንዱ የውሂብ ጎታ ወጥነት እና መገለልን ለማረጋገጥ የራሱ ዘዴዎች አሉት።
  4. የተለመደውን ለመጠበቅ አስቸጋሪ በሚሆንበት ጊዜ ብሩህ ማገድ ወደ ማዳን ይመጣል.
  5. ከቆሻሻ ንባብ እና የውሂብ መጥፋት በተጨማሪ ሌሎች ያልተለመዱ ነገሮች አሉ።
  6. የመረጃ ቋቱ እና ተጠቃሚው ሁልጊዜ በድርጊት ሂደት ላይ አይስማሙም።
  7. የመተግበሪያ ደረጃ ሻርዲንግ ከመተግበሪያው ውጭ ሊንቀሳቀስ ይችላል።
  8. ራስን መጨመር አደገኛ ሊሆን ይችላል.
  9. የቆየ ውሂብ ጠቃሚ ሊሆን ይችላል እና መቆለፍ አያስፈልገውም።
  10. ማዛባት ለማንኛውም የጊዜ ምንጮች የተለመዱ ናቸው።
  11. መዘግየት ብዙ ትርጉሞች አሉት።
  12. ለአንድ የተወሰነ ግብይት የአፈጻጸም መስፈርቶች መገምገም አለባቸው።
  13. የጎጆ ግብይቶች አደገኛ ሊሆኑ ይችላሉ።
  14. ግብይቶች ከማመልከቻ ሁኔታ ጋር መያያዝ የለባቸውም።
  15. የመጠይቅ እቅድ አውጪዎች ስለ ዳታቤዝ ብዙ ሊነግሩዎት ይችላሉ።
  16. የመስመር ላይ ፍልሰት አስቸጋሪ ነው, ግን ይቻላል.
  17. በመረጃ ቋቱ ውስጥ ጉልህ የሆነ ጭማሪ ያልተጠበቀ ሁኔታ መጨመርን ያስከትላል።

ኢማኑኤል ኦዴኬን፣ ሬይን ሄንሪችስን እና ሌሎችም በዚህ ጽሑፍ ቀደምት እትም ላይ ለሰጡት አስተያየት ላመሰግናቸው እወዳለሁ።

99,999% የሚሆነው አውታረ መረቡ ችግር ካልፈጠረ እድለኛ ነዎት።

ጥያቄው ምን ያህል ዘመናዊ የአውታረ መረብ ቴክኖሎጂዎች አስተማማኝ እንደሆኑ እና በአውታረ መረብ ብልሽቶች ምክንያት ስርዓቶች ምን ያህል ጊዜ እንደሚቀንስ ነው. በዚህ ጉዳይ ላይ ያለው መረጃ በጣም አናሳ ነው እና ምርምር ብዙውን ጊዜ ልዩ አውታረ መረቦች, መሳሪያዎች እና ሰራተኞች ባላቸው ትላልቅ ድርጅቶች የተያዙ ናቸው.

ለ Spanner (የጉግል አለምአቀፍ የተከፋፈለ የውሂብ ጎታ) በ99,999% የተገኝነት መጠን፣ ጎግል ይህን ብቻ ነው የሚናገረው። 7,6% ችግሮች ከአውታረ መረቡ ጋር የተያያዙ ናቸው. በተመሳሳይ ጊዜ ኩባንያው ልዩ አውታረ መረቦችን "ዋናው ምሰሶ" ከፍተኛ ተገኝነት ብሎ ይጠራዋል. ጥናት ባሊስ እና ኪንግስበሪእ.ኤ.አ. በ 2014 የተካሄደው ፣ ከሚከተሉት ውስጥ አንዱን ይሞግታል ።ስለ የተከፋፈለ ኮምፒዩተር የተሳሳቱ አመለካከቶች"፣ ፒተር ዶይች በ1994 የቀመረው። አውታረ መረቡ በእርግጥ አስተማማኝ ነው?

ለሰፊው የኢንተርኔት አገልግሎት የሚካሄደው ከግዙፍ ኩባንያዎች ውጪ የሆነ ሁሉን አቀፍ ጥናትና ምርምር በቀላሉ አይገኝም። የደንበኞቻቸው ችግር በመቶኛ ከአውታረ መረብ ጋር የተገናኘ ስለመሆኑ ከዋነኞቹ ተጫዋቾች በቂ መረጃ የለም። ብዙ ሰዎችን እና ኩባንያዎችን የሚነኩ ከፍተኛ መገለጫዎች በመሆናቸው ብቻ ሙሉውን የኢንተርኔት ክፍል ለብዙ ሰዓታት ሊያወርዱ በሚችሉ ትላልቅ የደመና አቅራቢዎች የአውታረ መረብ ቁልል ውስጥ መቋረጥን ጠንቅቀን እናውቃለን። የአውታረ መረብ መቆራረጥ በብዙ ጉዳዮች ላይ ችግር ሊፈጥር ይችላል፣ ምንም እንኳን እነዚህ ሁሉ ጉዳዮች በእይታ ላይ ባይሆኑም እንኳ። የደመና አገልግሎት ደንበኞች ስለችግር መንስኤዎች ምንም አያውቁም. ብልሽት ካለ በአገልግሎት አቅራቢው በኩል ካለው የአውታረ መረብ ስህተት ጋር ማያያዝ ፈጽሞ የማይቻል ነው። ለእነሱ, የሶስተኛ ወገን አገልግሎቶች ጥቁር ሳጥኖች ናቸው. ትልቅ አገልግሎት ሰጪ ሳይሆኑ ተጽእኖውን ለመገምገም የማይቻል ነው.

ትላልቆቹ ተጫዋቾች ስለ ስርዓታቸው የሚዘግቡትን ከግምት ውስጥ በማስገባት፣ የአውታረ መረብ ችግሮች አነስተኛ ጊዜ ሊያስከትሉ ለሚችሉ ችግሮች በመቶኛ ብቻ የሚሸፍኑ ከሆነ እድለኛ ነዎት ማለት ምንም ችግር የለውም። የአውታረ መረብ ግንኙነቶች አሁንም እንደ ሃርድዌር ውድቀቶች፣ የቶፖሎጂ ለውጦች፣ የአስተዳደር ውቅረት ለውጦች እና የመብራት መቆራረጥ ባሉ ተራ ነገሮች ይሰቃያሉ። በቅርቡ, ሊሆኑ የሚችሉ ችግሮች ዝርዝር መጨመሩን ሳውቅ ተገረምኩ ሻርክ ንክሻ (አዎ፣ በትክክል ሰምተሃል)።

ኤሲዲ ማለት ብዙ የተለያዩ ነገሮች ማለት ነው

ACID ምህጻረ ቃል Atomity, Consistency, Isolation, Reliability ማለት ነው. እነዚህ የግብይቶች ባህሪያት ውድቀቶች, ስህተቶች, የሃርድዌር ውድቀቶች, ወዘተ ባሉበት ጊዜ ትክክለኛነታቸውን ለማረጋገጥ የታቀዱ ናቸው. ያለ ACID ወይም ተመሳሳይ ዕቅዶች፣ ለመተግበሪያ ገንቢዎች ኃላፊነት ያለባቸውን እና የውሂብ ጎታው ተጠያቂ በሆነው መካከል ያለውን ልዩነት ለመለየት አስቸጋሪ ይሆንባቸዋል። አብዛኛዎቹ ተዛማጅ የግብይት ዳታቤዝ ACID ታዛዥ ለመሆን ይሞክራሉ፣ ነገር ግን እንደ NoSQL ያሉ አዳዲስ አቀራረቦች ብዙ የውሂብ ጎታዎችን ያለ ACID ግብይቶች እንዲፈጠሩ ምክንያት ሆኗል ምክንያቱም ለመተግበር ውድ ናቸው።

ወደ ኢንዱስትሪው ለመጀመሪያ ጊዜ ስገባ የኛ የቴክኒክ መሪ የኤሲአይዲ ጽንሰ-ሀሳብ ምን ያህል ተዛማጅነት እንዳለው ተናግሯል። ፍትሃዊ ለመሆን፣ ACID ጥብቅ የአተገባበር ደረጃ ሳይሆን እንደ ሻካራ መግለጫ ይቆጠራል። ዛሬ በአብዛኛው ጠቃሚ ሆኖ አግኝቼዋለሁ ምክንያቱም የተወሰነ የጉዳይ ምድብ ስለሚያነሳ (እና የተለያዩ መፍትሄዎችን ይጠቁማል)።

እያንዳንዱ ዲቢኤምኤስ ACIDን ያከብራል ማለት አይደለም። በተመሳሳይ ጊዜ, ACID ን የሚደግፉ የውሂብ ጎታ አተገባበር የተቀመጡትን መስፈርቶች በተለየ መንገድ ይገነዘባሉ. የኤሲአይዲ አተገባበር ጠፍጣፋ የሆነበት አንዱ ምክንያት የኤሲአይዲ መስፈርቶችን ለመተግበር መደረግ ስላለባቸው በርካታ የንግድ ልውውጦች ነው። ፈጣሪዎች የውሂብ ጎታዎቻቸውን እንደ ACID የሚያከብር አድርገው ሊያቀርቡ ይችላሉ፣ ነገር ግን የጠርዝ ጉዳዮች አተረጓጎም በከፍተኛ ሁኔታ ሊለያይ ይችላል፣ እንዲሁም "ያልሆኑ" ክስተቶችን የማስተናገድ ዘዴ። ቢያንስ ገንቢዎች ስለ ልዩ ባህሪያቸው ትክክለኛ ግንዛቤ ለማግኘት እና የንግድ ልውውጥን ለመንደፍ ስለ መሰረታዊ አተገባበር ውስብስብነት ከፍተኛ ግንዛቤ ሊያገኙ ይችላሉ።

MongoDB የኤሲአይዲ መስፈርቶችን ያከብር ስለመሆኑ ክርክሩ ስሪት 4 ከተለቀቀ በኋላም ይቀጥላል። MongoDB ለረጅም ጊዜ አልተደገፈም። ምዝግብ ማስታወሻምንም እንኳን በነባሪ መረጃ በየ 60 ሰከንድ ከአንድ ጊዜ በላይ በዲስክ ላይ ቢደረግም። የሚከተለውን ሁኔታ አስቡት፡ አንድ መተግበሪያ ሁለት ጽሁፎችን ይለጥፋል (w1 እና w2)። MongoDB በተሳካ ሁኔታ w1 ን ያከማቻል፣ ነገር ግን w2 በሃርድዌር ውድቀት ምክንያት ጠፍቷል።

ስለ ዳታቤዝ ተጨማሪ ገንቢዎች ይህንን ማወቅ አለባቸው
ሁኔታውን የሚያሳይ ሥዕላዊ መግለጫ። MongoDB ውሂብን ወደ ዲስክ ከመጻፉ በፊት ይበላሻል

በዲስክ ላይ ቁርጠኝነት በጣም ውድ ሂደት ነው. ተደጋጋሚ ግዴታዎችን በማስቀረት፣ ገንቢዎች በአስተማማኝነት ወጪ የመቅዳት አፈጻጸምን ያሻሽላሉ። MongoDB በአሁኑ ጊዜ ምዝግብ ማስታወሻን ይደግፋል፣ ነገር ግን ቆሻሻ ፅሁፎች አሁንም በነባሪነት በየ100 ሚሴ ምዝግብ ማስታወሻዎች ስለሚያዙ በመረጃ ትክክለኛነት ላይ ተጽዕኖ ሊያሳድሩ ይችላሉ። ያም ማለት, ተመሳሳይ ሁኔታ አሁንም ቢሆን ለምዝግብ ማስታወሻዎች እና በውስጣቸው ለቀረቡት ለውጦች, ምንም እንኳን አደጋው በጣም ዝቅተኛ ቢሆንም.

እያንዳንዱ የውሂብ ጎታ የራሱ የሆነ ወጥነት ያለው እና የማግለል ዘዴዎች አሉት

ከኤሲአይዲ መስፈርቶች ውስጥ፣ ወጥነት እና ማግለል ትልቁን ቁጥር ያላቸውን የተለያዩ አተገባበርዎች ይመካል ምክንያቱም የንግድ ልውውጥ ወሰን ሰፊ ነው። ወጥነት እና ማግለል በጣም ውድ የሆኑ ተግባራት ናቸው ሊባል ይገባል. ቅንጅት ይጠይቃሉ እና ለመረጃ ወጥነት ውድድር ይጨምራሉ። በበርካታ የመረጃ ማእከሎች (በተለይ በተለያዩ የጂኦግራፊያዊ ክልሎች ውስጥ የሚገኙ ከሆነ) የውሂብ ጎታውን በአግድም ማመጣጠን ሲያስፈልግ የችግሩ ውስብስብነት በከፍተኛ ሁኔታ ይጨምራል. ከፍተኛ መጠን ያለው ወጥነት ማግኘት በጣም አስቸጋሪ ነው, ምክንያቱም ተገኝነትን ስለሚቀንስ እና የአውታረ መረብ ክፍፍልን ይጨምራል. ለዚህ ክስተት የበለጠ አጠቃላይ ማብራሪያ, እንዲያመለክቱ እመክርዎታለሁ CAP ቲዎረም. በተጨማሪም አፕሊኬሽኖች አነስተኛ መጠን ያላቸውን አለመጣጣም ማስተናገድ የሚችሉ ሲሆን ፕሮግራመሮችም የችግሩን ውስብስቦች በሚገባ ተረድተው ተጨማሪ አመክንዮዎችን በመተግበሪያው ውስጥ ለመተግበር በመረጃ ቋቱ ላይ ሳይተማመኑ ወጥነት እንዳይኖራቸው ማድረግ እንደሚችሉም ልብ ሊባል ይገባል።

ዲቢኤምኤስ ብዙውን ጊዜ የተለያዩ የመገለል ደረጃዎችን ይሰጣሉ። የመተግበሪያ ገንቢዎች በምርጫዎቻቸው ላይ በመመስረት በጣም ውጤታማውን መምረጥ ይችላሉ። ዝቅተኛ ማግለል ፍጥነትን ለመጨመር ያስችላል, ነገር ግን የውሂብ ውድድር አደጋን ይጨምራል. ከፍተኛ ሽፋን ይህንን እድል ይቀንሳል, ነገር ግን ስራን ይቀንሳል እና ወደ ውድድር ሊያመራ ይችላል, ይህም ውድቀቶች በሚጀምሩበት መሰረት ወደ እንደዚህ አይነት ብሬክስ ይመራሉ.

ስለ ዳታቤዝ ተጨማሪ ገንቢዎች ይህንን ማወቅ አለባቸው
በመካከላቸው ያሉ የተጓዳኝ ሞዴሎች እና ግንኙነቶች ግምገማ

የ SQL መስፈርት የሚገልፀው አራት የማግለል ደረጃዎችን ብቻ ነው፣ ምንም እንኳን በንድፈ ሀሳብ እና በተግባር ብዙ ተጨማሪዎች አሉ። ጄፕሰን.ዮ ስለ ነባር የኮንፈረንስ ሞዴሎች በጣም ጥሩ አጠቃላይ እይታን ይሰጣል። ለምሳሌ፣ Google Spanner ከሰዓት ማመሳሰል ጋር የውጪ ተከታታይነት ዋስትና ይሰጣል፣ እና ምንም እንኳን ይህ የበለጠ ጥብቅ የማግለል ንብርብር ቢሆንም ፣ እሱ በመደበኛ የማግለል ንብርብሮች ውስጥ አልተገለጸም።

የSQL መስፈርት የሚከተሉትን የብቸኝነት ደረጃዎች ይጠቅሳል፡-

  • ሊደረስ የሚችል (በጣም ጥብቅ እና ውድ)፡ ተከታታይ አፈጻጸም እንደ አንዳንድ ተከታታይ የግብይት አፈጻጸም ተመሳሳይ ውጤት አለው። ተከታታይ አፈፃፀም ማለት እያንዳንዱ ቀጣይ ግብይት የሚጀምረው ቀዳሚው ከተጠናቀቀ በኋላ ብቻ ነው. ደረጃው መታወቅ አለበት ሊደረስ የሚችል ብዙውን ጊዜ የሚተገበረው ቅጽበተ-ፎቶ ማግለል (ለምሳሌ በ Oracle) በትርጓሜ ልዩነት ምክንያት ነው፣ ምንም እንኳን ቅጽበተ-ፎቶ ማግለል በራሱ በSQL መስፈርት ውስጥ ባይወከልም።
  • ተደጋጋሚ ንባብአሁን ባለው ግብይት ውስጥ ያልተፈጸሙ መዝገቦች ለአሁኑ ግብይት ይገኛሉ፣ነገር ግን በሌሎች ግብይቶች የተደረጉ ለውጦች (እንደ አዲስ ረድፎች) አይታይም።.
  • ቁርጠኛ አንብብያልተገባ ውሂብ ለግብይቶች አይገኝም። በዚህ አጋጣሚ ግብይቶች የተረጋገጠ ውሂብን ብቻ ነው ማየት የሚችሉት፣ እና ምናባዊ ንባቦች ሊከሰቱ ይችላሉ። አንድ ግብይት አዲስ ረድፎችን ካስገባ እና ከፈጸመ፣ የአሁኑ ግብይት ሲጠየቅ ሊያያቸው ይችላል።
  • ያልተገባ አንብብ (ቢያንስ ጥብቅ እና ውድ ደረጃ): ቆሻሻ ንባብ ይፈቀዳል, ግብይቶች በሌሎች ግብይቶች የተደረጉ ያልተደረጉ ለውጦችን ማየት ይችላሉ. በተግባር ይህ ደረጃ እንደ መጠይቆች ላሉ ግምታዊ ግምቶች ጠቃሚ ሊሆን ይችላል። COUNT(*) ጠረጴዛው ላይ.

ደረጃ ሊደረስ የሚችል ለመተግበር በጣም ውድ እና በስርዓቱ ላይ ከፍተኛ የውድድር ጭነት ሲኖር የውሂብ ውድድርን አደጋ ይቀንሳል። ሌሎች የብቸኝነት ደረጃዎችን ለመተግበር ቀላል ናቸው፣ ነገር ግን የውሂብ ውድድር እድላቸውን ይጨምራሉ። አንዳንድ ዲቢኤምኤስዎች ብጁ የማግለል ደረጃ እንዲያዘጋጁ ያስችሉዎታል፣ ሌሎች ደግሞ ጠንካራ ምርጫዎች አሏቸው እና ሁሉም ደረጃዎች አይደገፉም።

የብቸኝነት ደረጃዎች ድጋፍ ብዙውን ጊዜ በተሰጠው ዲቢኤምኤስ ውስጥ ይተዋወቃል፣ ነገር ግን ባህሪውን በጥንቃቄ ማጥናት ብቻ በትክክል ምን እየተፈጠረ እንዳለ ያሳያል።

ስለ ዳታቤዝ ተጨማሪ ገንቢዎች ይህንን ማወቅ አለባቸው
ለተለያዩ ዲቢኤምኤስዎች በተለያዩ የብቸኝነት ደረጃዎች ያሉ የተመጣጣኝ ሁኔታዎች ግምገማ

ማርቲን ክሌፕማን በፕሮጀክቱ ውስጥ የእርሻ ቦታ የተለያዩ የብቸኝነት ደረጃዎችን ያነጻጽራል፣ ስለ ተዛማች ችግሮች ይናገራል፣ እና የመረጃ ቋቱ ከአንድ የተወሰነ የብቸኝነት ደረጃ ጋር መጣበቅ ይችል እንደሆነ ይናገራል። የክሌፕማን ጥናት የውሂብ ጎታ ገንቢዎች ስለ ማግለል ደረጃዎች እንዴት እንደሚያስቡ ያሳያል።

የተለመደውን ለመጠበቅ አስቸጋሪ በሚሆንበት ጊዜ ብሩህ ማገድ ወደ ማዳን ይመጣል.

ማገድ በጣም ውድ ሊሆን ይችላል ምክንያቱም በዳታቤዝ ውስጥ ውድድርን ስለሚጨምር ብቻ ሳይሆን የመተግበሪያው አገልጋዮች ከመረጃ ቋቱ ጋር ያለማቋረጥ እንዲገናኙ ስለሚያስፈልግ ነው። የአውታረ መረብ ክፍፍል ልዩ የመቆለፍ ሁኔታዎችን ያባብሳል እና ለመለየት እና ለመፍታት አስቸጋሪ ወደሆኑ መዘጋቶች ይመራል። ለየት ያለ መቆለፍ ተስማሚ በማይሆንበት ጊዜ ብሩህ ተስፋ መቆለፍ ይረዳል።

ብሩህ መቆለፊያ ሕብረቁምፊን በሚያነቡበት ጊዜ ስሪቱን፣ ቼክሱሙን ወይም የመጨረሻውን ማሻሻያ ጊዜ ግምት ውስጥ የሚያስገባበት ዘዴ ነው። ይህ ግቤትን ከመቀየርዎ በፊት የአቶሚክ ስሪት ለውጥ አለመኖሩን እንዲያረጋግጡ ያስችልዎታል፡

UPDATE products
SET name = 'Telegraph receiver', version = 2
WHERE id = 1 AND version = 1

በዚህ አጋጣሚ ሰንጠረዡን ማዘመን products ሌላ ክወና ከዚህ ቀደም በዚህ ረድፍ ላይ ለውጦችን ካደረገ አይደረግም። በዚህ ረድፍ ላይ ሌሎች ክዋኔዎች ካልተከናወኑ የአንድ ረድፍ ለውጥ ይከሰታል እና ዝመናው የተሳካ ነበር ማለት እንችላለን።

ከቆሻሻ ንባብ እና የውሂብ መጥፋት በተጨማሪ ሌሎች ያልተለመዱ ነገሮች አሉ።

ወደ የውሂብ ወጥነት ስንመጣ፣ ትኩረቱ ወደ ቆሻሻ ንባብ እና የውሂብ መጥፋት ሊያስከትሉ በሚችሉ የዘር ሁኔታዎች እምቅ ላይ ነው። ሆኖም፣ የውሂብ ተቃራኒዎች እዚያ አያቆሙም።

የእንደዚህ አይነት ያልተለመዱ ሁኔታዎች አንዱ ምሳሌ ማዛባትን መቅዳት ነው። (ስካሎችን ጻፍ). ብዙውን ጊዜ በንቃት ስለማይፈለጉ የተዛቡ ነገሮች ለመለየት አስቸጋሪ ናቸው። በቆሸሸ ንባብ ወይም በመረጃ መጥፋት ምክንያት ሳይሆን በመረጃው ላይ የተጣሉ ምክንያታዊ ገደቦችን መጣስ ነው።

ለምሳሌ፣ አንድ ኦፕሬተር በማንኛውም ጊዜ እንዲጠራ የሚፈልግ የክትትል መተግበሪያን እንመልከት፡-

BEGIN tx1;                      BEGIN tx2;
SELECT COUNT(*)
FROM operators
WHERE oncall = true;
0                               SELECT COUNT(*)
                                FROM operators
                                WHERE oncall = TRUE;
                                0
UPDATE operators                UPDATE operators
SET oncall = TRUE               SET oncall = TRUE
WHERE userId = 4;               WHERE userId = 2;
COMMIT tx1;                     COMMIT tx2;

ከላይ በተጠቀሰው ሁኔታ, ሁለቱም ግብይቶች በተሳካ ሁኔታ ከተፈጸሙ የመዝገብ ሙስና ይከሰታል. ምንም የቆሸሸ ንባብ ወይም የውሂብ መጥፋት ባይኖርም የመረጃው ታማኝነት ተጎድቷል፡ አሁን ሁለት ሰዎች በተመሳሳይ ጊዜ በጥሪ ይቆጠራሉ።

ተከታታይነት ያለው ማግለል፣ ሼማ ንድፍ ወይም የውሂብ ጎታ ገደቦች የመጻፍ ሙስናን ለማስወገድ ይረዳሉ። ገንቢዎች በምርት ውስጥ እነሱን ለማስወገድ በእድገት ጊዜ እንደዚህ ያሉ ያልተለመዱ ነገሮችን መለየት መቻል አለባቸው። በተመሳሳይ ጊዜ, የመቅዳት ማዛባት በኮድ መሰረት ውስጥ መፈለግ እጅግ በጣም አስቸጋሪ ነው. በተለይም በትልልቅ ስርዓቶች ውስጥ, የተለያዩ የልማት ቡድኖች በአንድ ጠረጴዛዎች ላይ ተመስርተው ተግባራትን የመተግበር ሃላፊነት ሲኖራቸው እና በመረጃ ተደራሽነት ልዩ ሁኔታ ላይ አይስማሙም.

የመረጃ ቋቱ እና ተጠቃሚው ምን ማድረግ እንዳለባቸው ሁልጊዜ አይስማሙም።

ከመረጃ ቋቶች ቁልፍ ባህሪያት አንዱ የአፈፃፀም ትዕዛዝ ዋስትና ነው, ነገር ግን ይህ ትዕዛዝ እራሱ ለሶፍትዌር ገንቢ ግልጽ ላይሆን ይችላል. የውሂብ ጎታዎች ግብይቶችን የሚፈጽሙት በተቀበሉት ቅደም ተከተል ነው እንጂ ፕሮግራመሮች ባሰቡት ቅደም ተከተል አይደለም። የግብይቶች ቅደም ተከተል ለመተንበይ አስቸጋሪ ነው, በተለይም በጣም በተጫኑ ትይዩ ስርዓቶች ውስጥ.

በእድገት ወቅት፣ በተለይም ከማይከለከሉ ቤተ-መጻሕፍት ጋር በሚሠራበት ጊዜ፣ ደካማ ዘይቤ እና ዝቅተኛ ተነባቢነት ተጠቃሚዎች ግብይቶች በቅደም ተከተል እንደሚፈጸሙ እንዲያምኑ ሊያደርጋቸው ይችላል፣ በእርግጥ በማንኛውም ቅደም ተከተል ወደ ዳታቤዝ ውስጥ ሊደርሱ ይችላሉ።

በቅድመ-እይታ, ከታች ባለው ፕሮግራም, T1 እና T2 በቅደም ተከተል ይባላሉ, ነገር ግን እነዚህ ተግባራት የማይታገዱ ከሆነ እና ወዲያውኑ ውጤቱን በቅጹ ውስጥ ይመልሱ. ቃል ገባ, ከዚያ የጥሪዎች ቅደም ተከተል የሚወሰነው ወደ ዳታቤዝ በገቡባቸው ጊዜያት ነው፡-

ውጤት1 = T1() // እውነተኛ ውጤቶች ተስፋዎች ናቸው።
ውጤት2 = T2()

አቶሚሲዝም የሚያስፈልግ ከሆነ (ይህም ሁሉም ስራዎች መጠናቀቅ አለባቸው ወይም ማቋረጥ አለባቸው) እና ቅደም ተከተል ጉዳዮች, ከዚያም ስራዎች T1 እና T2 በአንድ ግብይት ውስጥ መከናወን አለባቸው.

የመተግበሪያ ደረጃ ሻርዲንግ ከመተግበሪያው ውጭ ሊንቀሳቀስ ይችላል።

ማጋራት የውሂብ ጎታውን በአግድም የመከፋፈል ዘዴ ነው። አንዳንድ የውሂብ ጎታዎች በራስ ሰር ውሂብ በአግድም ሊከፋፍሉ ይችላሉ, ሌሎች ግን አይችሉም, ወይም በጣም ጥሩ አይደሉም. ዳታ አርክቴክቶች/ገንቢዎች ውሂብ እንዴት እንደሚደረስ በትክክል መተንበይ ሲችሉ፣ ይህንን ስራ ወደ ዳታቤዝ ከማስተላለፍ ይልቅ በተጠቃሚ ቦታ ላይ አግድም ክፍልፍሎችን መፍጠር ይችላሉ። ይህ ሂደት "የመተግበሪያ ደረጃ ሻርዲንግ" ይባላል. (የመተግበሪያ ደረጃ መጋራት).

እንደ አለመታደል ሆኖ ይህ ስም ብዙውን ጊዜ መጋራት በመተግበሪያ አገልግሎቶች ውስጥ ይኖራል የሚለውን የተሳሳተ ግንዛቤ ይፈጥራል። እንደ እውነቱ ከሆነ, ከመረጃ ቋቱ ፊት ለፊት እንደ የተለየ ንብርብር ሊተገበር ይችላል. በውሂብ እድገት እና የመርሃግብር ድግግሞሾች ላይ በመመስረት፣ የመጋራት መስፈርቶች በጣም ውስብስብ ሊሆኑ ይችላሉ። አንዳንድ ስልቶች የአፕሊኬሽን አገልጋዮችን እንደገና መዘርጋት ሳያስፈልጋቸው የመድገም ችሎታ ሊጠቀሙ ይችላሉ።

ስለ ዳታቤዝ ተጨማሪ ገንቢዎች ይህንን ማወቅ አለባቸው
የመተግበሪያ አገልጋዮች ከሻርዲንግ አገልግሎት የሚለዩበት የሕንፃ ጥበብ ምሳሌ

ሻርዲንግን ወደ ተለየ አገልግሎት ማዛወር አፕሊኬሽኖችን እንደገና መዘርጋት ሳያስፈልግ የተለያዩ የሻርዲንግ ስልቶችን የመጠቀም ችሎታን ያሰፋዋል። ቪቴስ በመተግበሪያው ደረጃ ላይ የእንደዚህ አይነት የሻርዲንግ ስርዓት ምሳሌ ነው. Vitess ለ MySQL አግድም መጋራት ያቀርባል እና ደንበኞች በ MySQL ፕሮቶኮል በኩል እንዲገናኙ ያስችላቸዋል። ስርዓቱ ውሂቡን ወደ ተለያዩ የ MySQL ኖዶች ይከፍላል ስለሌላው ምንም የማያውቁ።

ራስን መጨመር አደገኛ ሊሆን ይችላል

AUTOINCREMENT ዋና ቁልፎችን የማመንጨት የተለመደ መንገድ ነው። ብዙ ጊዜ የውሂብ ጎታዎች እንደ መታወቂያ ጀነሬተሮች ጥቅም ላይ የሚውሉባቸው አጋጣሚዎች አሉ, እና የውሂብ ጎታው መለያዎችን ለመፍጠር የተነደፉ ሰንጠረዦችን ይዟል. ራስ-ማከልን በመጠቀም ዋና ቁልፎችን ማመንጨት ከምርጥነት የራቀባቸው በርካታ ምክንያቶች አሉ።

  • በተከፋፈለ የውሂብ ጎታ ውስጥ, በራስ-ሰር መጨመር ከባድ ችግር ነው. መታወቂያውን ለማመንጨት አለምአቀፍ መቆለፊያ ያስፈልጋል። በምትኩ፣ UUID ማመንጨት ትችላለህ፡ ይህ በተለያዩ የውሂብ ጎታ ኖዶች መካከል መስተጋብር አያስፈልገውም። ከመቆለፊያዎች ጋር በራስ-ሰር መጨመር ወደ ውዝግብ ሊያመራ እና በተከፋፈሉ ሁኔታዎች ውስጥ የማስገባት ስራን በእጅጉ ይቀንሳል። አንዳንድ ዲቢኤምኤስ (ለምሳሌ፣ MySQL) የማስተር-ማስተር ማባዛትን በአግባቡ ለማደራጀት ልዩ ውቅር እና የበለጠ ጥንቃቄ ሊያስፈልጋቸው ይችላል። እና በማዋቀር ጊዜ ስህተቶችን ማድረግ ቀላል ነው, ይህም ወደ ቀረጻ አለመሳካቶች ይመራል.
  • አንዳንድ የውሂብ ጎታዎች በዋና ቁልፎች ላይ የተመሰረቱ የመከፋፈል ስልተ ቀመሮች አሏቸው። ተከታታይ መታወቂያዎች ወደማይታወቅ ትኩስ ቦታዎች እና በአንዳንድ ክፍልፋዮች ላይ ጭነት እንዲጨምር ሊያደርጉ ይችላሉ ሌሎች ደግሞ ሾል ፈትተው ይቆያሉ።
  • ቀዳሚ ቁልፍ በዳታቤዝ ውስጥ አንድ ረድፍ ለመድረስ ፈጣኑ መንገድ ነው። መዝገቦችን ለመለየት በተሻሉ መንገዶች፣ ተከታታይ መታወቂያዎች በሠንጠረዦች ውስጥ በጣም አስፈላጊ የሆነውን አምድ ትርጉም በሌላቸው እሴቶች ወደተሞላ ከንቱ አምድ ሊለውጡት ይችላሉ። ስለዚህ፣ በሚቻልበት ጊዜ፣ እባክዎ በአለምአቀፍ ደረጃ ልዩ እና ተፈጥሯዊ ዋና ቁልፍ ይምረጡ (ለምሳሌ የተጠቃሚ ስም)።

በአቀራረብ ላይ ከመወሰንዎ በፊት፣ በራስ-የሚጨምሩ መታወቂያዎች እና UUIDዎች በመረጃ ጠቋሚ፣ ክፍልፍል እና ሸርተቴ ላይ ያለውን ተጽእኖ ግምት ውስጥ ያስገቡ።

የቆየ ውሂብ ጠቃሚ ሊሆን ይችላል እና መቆለፍ አያስፈልገውም

Multiversion Concurrency Control (MVCC) ከዚህ በላይ በአጭሩ የተገለጹትን አብዛኛዎቹን የወጥነት መስፈርቶችን ተግባራዊ ያደርጋል። አንዳንድ የውሂብ ጎታዎች (ለምሳሌ፣ Postgres፣ Spanner) MVCCን ከቅጽበተ-ፎቶዎች ጋር “ለመመገብ” ይጠቀማሉ - የቆዩ የመረጃ ቋቱ ስሪቶች። ተመሳሳይነት ለማረጋገጥ ቅጽበተ-ፎቶ ግብይቶች እንዲሁ በተከታታይ ሊደረጉ ይችላሉ። ከድሮ ቅጽበታዊ ገጽ እይታ ሲያነቡ፣ ጊዜው ያለፈበት ውሂብ ይነበባል።

ትንሽ የቆየ ውሂብ ማንበብ ጠቃሚ ሊሆን ይችላል፣ ለምሳሌ፣ ከውሂቡ ትንታኔዎችን ሲያመነጩ ወይም ግምታዊ ድምር እሴቶችን ሲያሰሉ።

ከውርስ ውሂብ ጋር የመሥራት የመጀመሪያው ጥቅም ዝቅተኛ መዘግየት ነው (በተለይም የመረጃ ቋቱ በተለያዩ ጂኦግራፊዎች የተከፋፈለ ከሆነ)። ሁለተኛው ተነባቢ-ብቻ ግብይቶች ከመቆለፊያ ነፃ ናቸው። ብዙ የሚያነቡ አፕሊኬሽኖች የቆዩ መረጃዎችን እስከማስተናገድ ድረስ ይህ ትልቅ ጥቅም ነው።

ስለ ዳታቤዝ ተጨማሪ ገንቢዎች ይህንን ማወቅ አለባቸው
አፕሊኬሽኑ አገልጋዩ ጊዜው ያለፈበት 5 ሰከንድ ከአካባቢው ቅጂ የተገኘውን መረጃ ያነባል፣ ምንም እንኳን የቅርብ ጊዜው ስሪት በፓስፊክ ውቅያኖስ ማዶ የሚገኝ ቢሆንም

ዲቢኤምኤስ የቆዩ ስሪቶችን በራስ-ሰር ያጸዳሉ እና፣ በአንዳንድ ሁኔታዎች፣ ይህን በጠየቁ ጊዜ እንዲያደርጉ ያስችሉዎታል። ለምሳሌ, Postgres ተጠቃሚዎች እንዲያደርጉ ያስችላቸዋል VACUUM በተጠየቀ ጊዜ እና እንዲሁም ይህንን ክዋኔ በየጊዜው ያከናውናል. ስፓነር ከአንድ ሰአት በላይ የቆዩ ቅጽበተ-ፎቶዎችን ለማስወገድ ቆሻሻ ሰብሳቢ ይሰራል።

በማንኛውም ጊዜ ምንጮች የተዛቡ ናቸው

በኮምፒዩተር ሳይንስ ውስጥ በጣም የተጠበቀው ሚስጥር ሁሉም የጊዜ አጠባበቅ ኤፒአይዎች መዋሸታቸው ነው። እንደ እውነቱ ከሆነ የእኛ ማሽኖች ትክክለኛውን የአሁኑን ጊዜ አያውቁም. ኮምፒውተሮች ጊዜን ለመጠበቅ የሚያገለግሉ ንዝረትን የሚፈጥሩ የኳርትዝ ክሪስታሎች ይይዛሉ። ነገር ግን፣ እነሱ በበቂ ሁኔታ ትክክል አይደሉም እና ከትክክለኛው ጊዜ በፊት/ከኋላ ሊሆኑ ይችላሉ። ሽግግሩ በቀን 20 ሰከንድ ሊደርስ ይችላል. ስለዚህ በኮምፒውተሮቻችን ላይ ያለው ጊዜ በየጊዜው ከአውታረ መረቡ ጋር መመሳሰል አለበት።

የኤንቲፒ አገልጋዮች ለማመሳሰል ጥቅም ላይ ይውላሉ፣ ግን የማመሳሰል ሂደቱ ራሱ ለአውታረ መረብ መዘግየቶች ተገዢ ነው። በተመሳሳዩ የመረጃ ማእከል ውስጥ ከኤንቲፒ አገልጋይ ጋር ማመሳሰል እንኳን የተወሰነ ጊዜ ይወስዳል። ከህዝባዊ የኤንቲፒ አገልጋይ ጋር መስራት የበለጠ ወደተዛባነት ሊያመራ እንደሚችል ግልጽ ነው።

የአቶሚክ ሰዓቶች እና የጂፒኤስ አቻዎቻቸው የአሁኑን ጊዜ ለመወሰን የተሻሉ ናቸው, ነገር ግን ውድ ናቸው እና ውስብስብ ማዋቀር ስለሚያስፈልጋቸው በእያንዳንዱ መኪና ላይ መጫን አይችሉም. በዚህ ምክንያት የመረጃ ማእከሎች ደረጃ በደረጃ ዘዴ ይጠቀማሉ. የአቶሚክ እና / ወይም የጂፒኤስ ሰዓቶች ትክክለኛውን ሰዓት ያሳያሉ, ከዚያ በኋላ በሁለተኛው አገልጋዮች በኩል ወደ ሌሎች ማሽኖች ይሰራጫል. ይህ ማለት እያንዳንዱ ማሽን ከትክክለኛው ጊዜ ጀምሮ የተወሰነ ማካካሻ ያጋጥመዋል ማለት ነው.

አፕሊኬሽኖች እና የውሂብ ጎታዎች ብዙ ጊዜ በተለያዩ ማሽኖች (በተለያዩ የመረጃ ማእከላት ውስጥ ካልሆነ) ስለሚገኙ ሁኔታው ​​ተባብሷል። ስለዚህ, ጊዜው በተለያዩ ማሽኖች ላይ በተሰራጩ የዲቢ ኖዶች ላይ ብቻ ሳይሆን ይለያያል. እንዲሁም በመተግበሪያው አገልጋይ ላይ የተለየ ይሆናል.

ጎግል TrueTime ፍጹም የተለየ አካሄድ ይወስዳል። ብዙ ሰዎች የጉግል በዚህ አቅጣጫ ያለው እድገት ወደ አቶሚክ እና ጂፒኤስ ሰዓቶች በተደረገው ሽግግር ተብራርቷል ብለው ያምናሉ ፣ ግን ይህ የትልቅ ምስል አካል ብቻ ነው። TrueTime እንዴት እንደሚሰራ እነሆ፡-

  • TrueTime ሁለት የተለያዩ ምንጮችን ይጠቀማል ጂፒኤስ እና የአቶሚክ ሰዓቶች። እነዚህ ሰዓቶች የማይዛመዱ የብልሽት ሁነታዎች አሏቸው። [ለዝርዝሩ ገጽ 5ን ይመልከቱ እዚህ - በግምት. መተርጎም), ስለዚህ የጋራ መጠቀማቸው አስተማማኝነትን ይጨምራል.
  • TrueTime ያልተለመደ ኤፒአይ አለው። በእሱ ውስጥ ከተሰራ የመለኪያ ስህተት እና እርግጠኛ አለመሆን ጋር ጊዜን እንደ ክፍተት ይመልሳል። በጊዜ ውስጥ ያለው ትክክለኛው ጊዜ በከፍተኛ እና ዝቅተኛ ወሰኖች መካከል የሆነ ቦታ ነው. ስፓነር፣ ጎግል የተከፋፈለው ዳታቤዝ፣ አሁን ያለው ጊዜ ከክልል ውጭ ነው ብሎ ለመናገር አስተማማኝ እስኪሆን ድረስ በቀላሉ ይጠብቃል። ይህ ዘዴ በስርዓቱ ውስጥ አንዳንድ መዘግየትን ያስተዋውቃል, በተለይም በጌቶች ላይ ያለው እርግጠኛ አለመሆን ከፍተኛ ከሆነ, ነገር ግን በዓለም አቀፍ ደረጃ በተሰራጨ ሁኔታ ውስጥ እንኳን ትክክለኛነትን ያረጋግጣል.

ስለ ዳታቤዝ ተጨማሪ ገንቢዎች ይህንን ማወቅ አለባቸው
የስፓነር አካላት TrueTimeን ይጠቀማሉ፣ TT.now() የተወሰነ ጊዜን የሚመልስበት ጊዜ ስለሆነ ስፓነር አሁን ያለው ጊዜ የተወሰነ ነጥብ እንዳለፈ እስኪተማመን ድረስ በቀላሉ ይተኛል።

የአሁኑን ጊዜ ለመወሰን ትክክለኛነት መቀነስ ማለት የስፓነር ኦፕሬሽኖች የቆይታ ጊዜ መጨመር እና የአፈፃፀም መቀነስ ማለት ነው. ለዚህም ነው ሙሉ በሙሉ ትክክለኛ ሰዓት ለማግኘት የማይቻል ቢሆንም ከፍተኛውን ትክክለኛነት መጠበቅ አስፈላጊ የሆነው.

መዘግየት ብዙ ትርጉሞች አሉት

መዘግየት ምን እንደሆነ ደርዘን ባለሙያዎችን ከጠየቋቸው ምናልባት የተለያዩ መልሶች ሊያገኙ ይችላሉ። በ DBMS ውስጥ መዘግየት ብዙ ጊዜ "የውሂብ ጎታ መዘግየት" ይባላል እና በደንበኛው ከሚታወቀው የተለየ ነው. እውነታው ግን ደንበኛው የኔትወርክ መዘግየት እና የውሂብ ጎታ መዘግየት ድምርን ይመለከታል. እያደጉ ያሉ ችግሮችን በሚፈታበት ጊዜ የመዘግየትን አይነት የመለየት ችሎታ ወሳኝ ነው. መለኪያዎችን በሚሰበስቡበት እና በሚያሳዩበት ጊዜ ሁልጊዜ ሁለቱንም ዓይነቶች ለመከታተል ይሞክሩ።

ለአንድ የተወሰነ ግብይት የአፈጻጸም መስፈርቶች መገምገም አለባቸው

አንዳንድ ጊዜ የዲቢኤምኤስ የአፈጻጸም ባህሪያት እና ውሱንነቶች የሚገለጹት በመፃፍ/በንባብ ውፅአት እና መዘግየት ነው። ይህ ቁልፍ የስርዓት መለኪያዎች አጠቃላይ እይታን ያቀርባል፣ ነገር ግን የአዲሱን ዲቢኤምኤስ አፈጻጸም ሲገመገም፣ የበለጠ አጠቃላይ አቀራረብ ወሳኝ ስራዎችን (ለእያንዳንዱ ጥያቄ እና/ወይም ግብይት) በተናጠል መገምገም ነው። ምሳሌዎች፡-

  • አዲስ ረድፍ ወደ ሠንጠረዥ X (ከ 50 ሚሊዮን ረድፎች ጋር) በተገለጹ ገደቦች እና በተዛማጅ ሰንጠረዦች ውስጥ የረድፍ ንጣፍ ሲያስገቡ ትርፍ እና መዘግየት ይፃፉ።
  • አማካይ የጓደኞች ብዛት 500 ሲሆን የአንድ የተወሰነ ተጠቃሚ ጓደኞችን ለማሳየት መዘግየት።
  • ተጠቃሚው በሰዓት የX ግቤቶችን 100 ሌሎች ተጠቃሚዎችን ሲከተል 500 ምርጥ ግቤቶችን ከተጠቃሚ ታሪክ ሰርሾሎ ለማውጣት መዘግየት።

ዳታቤዙ የአፈጻጸም መስፈርቶችን እንደሚያሟላ እርግጠኛ እስክትሆን ድረስ ግምገማ እና ሙከራ እንደነዚህ ያሉ ወሳኝ ጉዳዮችን ሊያካትት ይችላል። የመዘግየት መለኪያዎችን ሲሰበስብ እና ኤስ.ኦ.ኦ.ዎችን ሲወስኑ ተመሳሳይ የጣት ህግ ይህንን ዝርዝር ሁኔታ ግምት ውስጥ ያስገባል።

ለእያንዳንዱ ቀዶ ጥገና መለኪያዎችን በሚሰበስቡበት ጊዜ ከፍተኛ ካርዲናዊነትን ይወቁ. ከፍተኛ ኃይል ማረም መረጃን ለማግኘት የምዝግብ ማስታወሻዎችን፣ የክስተት መሰብሰብን ወይም የተከፋፈለ ፍለጋን ይጠቀሙ። በጽሁፉ ውስጥ "የቆይታ ጊዜን ማረም ይፈልጋሉ?» በማዘግየት የማረሚያ ዘዴዎች እራስዎን ማወቅ ይችላሉ።

የጎጆ ግብይቶች አደገኛ ሊሆኑ ይችላሉ።

እያንዳንዱ ዲቢኤምኤስ የጎጆ ግብይቶችን አይደግፍም ፣ ግን ሲያደርጉ እንደዚህ ያሉ ግብይቶች ያልተጠበቁ ስህተቶችን ሊያስከትሉ ይችላሉ ፣ ይህም ሁል ጊዜ በቀላሉ የማይታወቁ ስህተቶችን ያስከትላል (ማለትም ፣ የሆነ ያልተለመደ ነገር እንዳለ ግልፅ መሆን አለበት)።

የደንበኛ ቤተ-ፍርግሞችን በመጠቀም ፈልጎ ማግኘት እና ማለፍ የሚችሉ ግብይቶችን ከመጠቀም መቆጠብ ትችላለህ። የጎጆ ግብይቶችን መተው የማይቻል ከሆነ, የተጠናቀቁ ግብይቶች በጎጆዎች ምክንያት በአጋጣሚ የሚቋረጥባቸው ያልተጠበቁ ሁኔታዎች እንዳይከሰቱ በአተገባበሩ ላይ ልዩ ጥንቃቄ ያድርጉ.

ግብይቶችን በተለያዩ ንብርብሮች ማካተት ወደ ያልተጠበቁ የጎጆ ግብይቶች ሊመራ ይችላል፣ እና ከኮድ ተነባቢነት አንፃር የጸሐፊውን ሐሳብ ለመረዳት አስቸጋሪ ያደርገዋል። የሚከተለውን ፕሮግራም ይመልከቱ።

with newTransaction():
   Accounts.create("609-543-222")
   with newTransaction():
       Accounts.create("775-988-322")
       throw Rollback();

ከላይ ያለው ኮድ ውፅዓት ምን ይሆናል? ሁለቱንም ግብይቶች ይመልሳል ወይንስ ውስጣዊውን ብቻ? ለእኛ የግብይቶችን መፈጠር በሚያጠቃልሉ በርካታ የቤተ-መጻህፍት ንብርብሮች ላይ ከተደገፍን ምን ይከሰታል? እንደነዚህ ያሉ ጉዳዮችን መለየት እና ማሻሻል እንችላለን?

የውሂብ ንብርብር ከበርካታ ክዋኔዎች ጋር በዓይነ ሕሊናህ ይታይህ (ለምሳሌ፦ newAccount) ቀድሞውኑ በራሱ ግብይቶች ውስጥ ተተግብሯል. በራሱ ግብይት ውስጥ የሚሰራ የከፍተኛ ደረጃ የንግድ አመክንዮ አካል ሆነው ቢያካሂዷቸው ምን ይከሰታል? በዚህ ጉዳይ ላይ ማግለል እና ወጥነት ምን ሊሆን ይችላል?

function newAccount(id string) {
  with newTransaction():
      Accounts.create(id)
}

ለእንደዚህ አይነት ማለቂያ ለሌላቸው ጥያቄዎች መልሶችን ከመፈለግ ይልቅ የጎጆ ግብይቶችን ማስወገድ የተሻለ ነው። ከሁሉም በላይ, የእርስዎ የውሂብ ንብርብር የራሱን ግብይቶች ሳይፈጥር በቀላሉ ከፍተኛ ደረጃ ስራዎችን ማከናወን ይችላል. በተጨማሪም የቢዝነስ አመክንዮ ራሱ ግብይትን ለመጀመር, በእሱ ላይ ስራዎችን ለማከናወን, ግብይትን ለመፈጸም ወይም ለማቋረጥ ይችላል.

function newAccount(id string) {
   Accounts.create(id)
}
// In main application:
with newTransaction():
   // Read some data from database for configuration.
   // Generate an ID from the ID service.
   Accounts.create(id)
   Uploads.create(id) // create upload queue for the user.

ግብይቶች ከማመልከቻ ሁኔታ ጋር መያያዝ የለባቸውም

አንዳንድ እሴቶችን ለመለወጥ ወይም የጥያቄ መለኪያዎችን ለማስተካከል አንዳንድ ጊዜ የመተግበሪያ ሁኔታን በግብይቶች ውስጥ ለመጠቀም ፈታኝ ነው። ሊታሰብበት የሚገባው ወሳኝ ነጥብ ትክክለኛው የትግበራ ወሰን ነው። የአውታረ መረብ ችግሮች ሲኖሩ ደንበኞች ብዙውን ጊዜ ግብይቶችን እንደገና ይጀምራሉ። ግብይቱ በሌላ ሂደት እየተቀየረ ባለው ሁኔታ ላይ የሚመረኮዝ ከሆነ በውሂብ ውድድር ዕድል ላይ በመመስረት የተሳሳተ ዋጋ ሊመርጥ ይችላል። ግብይቶች በመተግበሪያው ውስጥ የውሂብ ውድድር ሁኔታዎችን ስጋት ግምት ውስጥ ማስገባት አለባቸው።

var seq int64
with newTransaction():
    newSeq := atomic.Increment(&seq)
    Entries.query(newSeq)
    // Other operations...

የመጨረሻው ውጤት ምንም ይሁን ምን ከላይ ያለው ግብይት በተፈፀመ ቁጥር የተከታታይ ቁጥሩን ይጨምራል። በአውታረ መረብ ችግር ምክንያት ድርጊቱ ካልተሳካ፣ እንደገና ሲሞክሩ ጥያቄው በተለየ ተከታታይ ቁጥር ይፈጸማል።

የመጠይቅ እቅድ አውጪዎች ስለ ዳታቤዝ ብዙ ሊነግሩዎት ይችላሉ።

የመጠይቅ እቅድ አውጪዎች ጥያቄ በመረጃ ቋት ውስጥ እንዴት እንደሚፈፀም ይወስናሉ። እንዲሁም ከመላካቸው በፊት ጥያቄዎችን ይመረምራሉ እና ያመቻቻሉ። እቅድ አውጪዎች በእጃቸው ባሉት ምልክቶች ላይ በመመስረት አንዳንድ ሊሆኑ የሚችሉ ግምቶችን ብቻ ነው ማቅረብ የሚችሉት። ለምሳሌ፣ ለሚከተለው መጠይቅ ምርጡ የፍለጋ ዘዴ ምንድነው?

SELECT * FROM articles where author = "rakyll" order by title;

ውጤቱን በሁለት መንገዶች ማግኘት ይቻላል-

  • ሙሉ የጠረጴዛ ቅኝት: በሰንጠረዡ ውስጥ ያለውን እያንዳንዱን ግቤት መመልከት እና መጣጥፎችን በሚዛመደው የጸሐፊ ስም መመለሾ እና ከዚያም ማዘዝ ይችላሉ.
  • የመረጃ ጠቋሚ ቅኝትተዛማጅ መታወቂያዎችን ለማግኘት፣ ረድፎችን ለማግኘት እና ከዚያ ለማዘዝ መረጃ ጠቋሚን መጠቀም ይችላሉ።

የጥያቄ እቅድ አውጪው ስራ የትኛው ስልት የተሻለ እንደሆነ መወሰን ነው። የጥያቄ እቅድ አውጪዎች ውስን የመተንበይ አቅሞች ብቻ እንዳላቸው ማጤን ተገቢ ነው። ይህ ወደ መጥፎ ውሳኔዎች ሊያመራ ይችላል. ዲቢኤዎች ወይም ገንቢዎች በደንብ የማይሰሩ መጠይቆችን ለመመርመር እና ለማስተካከል ሊጠቀሙባቸው ይችላሉ። አዲስ የዲቢኤምኤስ ስሪቶች የመጠይቅ እቅድ አውጪዎችን ሊያዋቅሩ ይችላሉ፣ እና አዲሱ ስሪት ወደ አፈጻጸም ችግሮች የሚመራ ከሆነ ራስን መመርመር የውሂብ ጎታውን ሲያዘምን ይረዳል። የዘገየ የመጠይቅ ምዝግብ ማስታወሻዎች፣ የመዘግየት ችግር ሪፖርቶች፣ ወይም የማስፈጸሚያ ጊዜ ስታቲስቲክስ ማመቻቸት የሚያስፈልጋቸውን ጥያቄዎች ለመለየት ያግዛሉ።

በመጠይቁ እቅድ አውጪው የቀረቡት አንዳንድ ልኬቶች ለጩኸት ሊጋለጡ ይችላሉ (በተለይ የዘገየ ወይም የሲፒዩ ጊዜ ሲገመቱ)። ከመርሐግብር አውጪዎች ጋር ጥሩ መጨመር የማስፈጸሚያውን መንገድ ለመከታተል እና ለመከታተል የሚረዱ መሳሪያዎች ናቸው። እንደነዚህ ያሉትን ችግሮች ለመመርመር ያስችሉዎታል (ወዮ ፣ ሁሉም ዲቢኤምኤስ እንደዚህ ያሉ መሳሪያዎችን አይሰጡም)።

የመስመር ላይ ፍልሰት ከባድ ነው ግን የሚቻል ነው።

የመስመር ላይ ፍልሰት፣ የቀጥታ ፍልሰት ወይም የእውነተኛ ጊዜ ፍልሰት ማለት ከአንዱ የውሂብ ጎታ ወደ ሌላ ያለማቋረጥ ወይም የውሂብ መበላሸት ማለት ነው። ሽግግሩ በተመሳሳዩ ዲቢኤምኤስ/ሞተር ውስጥ ከተከሰተ የቀጥታ ፍልሰት ለማከናወን ቀላል ነው። ወደ አዲስ ዲቢኤምኤስ ከተለያዩ የአፈጻጸም እና የመርሃግብር መስፈርቶች ጋር መሄድ አስፈላጊ ሆኖ ሲገኝ ሁኔታው ​​ይበልጥ የተወሳሰበ ይሆናል።

የተለያዩ የመስመር ላይ ፍልሰት ሞዴሎች አሉ። ከመካከላቸው አንዱ ይኸውና፡-

  • በሁለቱም የውሂብ ጎታዎች ውስጥ ድርብ ግቤትን አንቃ። አዲሱ ዳታቤዝ በዚህ ደረጃ ሁሉም መረጃዎች የሉትም ነገር ግን የቅርብ ጊዜውን መረጃ ብቻ ይቀበላል። ይህንን ካረጋገጡ በኋላ ወደሚቀጥለው ደረጃ መሄድ ይችላሉ.
  • ከሁለቱም የውሂብ ጎታዎች ማንበብን አንቃ።
  • ማንበብ እና መጻፍ በዋነኝነት በአዲሱ የውሂብ ጎታ ላይ እንዲከናወኑ ስርዓቱን ያዋቅሩ።
  • ከሱ ያለውን ውሂብ ማንበብዎን በሚቀጥሉበት ጊዜ ወደ አሮጌው የውሂብ ጎታ መፃፍ ያቁሙ። በዚህ ደረጃ፣ አዲሱ ዳታቤዝ አሁንም የተወሰነ መረጃ የለውም። ከድሮው የውሂብ ጎታ መቅዳት አለባቸው.
  • የድሮው ዳታቤዝ ተነባቢ-ብቻ ነው። የጎደለውን ውሂብ ከድሮው የውሂብ ጎታ ወደ አዲሱ ይቅዱ። ፍልሰት ከተጠናቀቀ በኋላ መንገዶቹን ወደ አዲሱ የውሂብ ጎታ ይቀይሩ እና አሮጌውን ያቁሙ እና ከስርዓቱ ውስጥ ይሰርዙት.

ለተጨማሪ መረጃ፣ እንዲያነጋግሩ እመክራለሁ። ጽሑፍበዚህ ሞዴል ላይ የተመሰረተውን የስትሪፕ የፍልሰት ስልት በዝርዝር የያዘ ነው።

በመረጃ ቋቱ ውስጥ ጉልህ የሆነ ጭማሪ ያልተጠበቀ ሁኔታ መጨመርን ያስከትላል

የመረጃ ቋቱ እድገት ከስኬቱ ጋር ተያይዘው ወደማይታወቁ ችግሮች ያመራል። ስለ የውሂብ ጎታ ውስጣዊ መዋቅር የበለጠ ባወቅን መጠን እንዴት እንደሚመዘን መተንበይ እንችላለን። ሆኖም ፣ አንዳንድ ጊዜዎች አሁንም ለመተንበይ አይቻልም።
መሰረቱ እያደገ ሲሄድ የውሂብ መጠን እና የአውታረ መረብ የመተላለፊያ ይዘት መስፈርቶችን በተመለከተ የቀድሞ ግምቶች እና ተስፋዎች ጊዜ ያለፈባቸው ሊሆኑ ይችላሉ። ይህ ጥያቄ የሚነሳው ዋና ዋና የንድፍ ማሻሻያዎች፣ መጠነ ሰፊ የአሰራር ማሻሻያዎች፣ ማሰማራትን እንደገና ማሰብ ወይም ወደ ሌሎች ዲቢኤምኤስ ፍልሰት ሊሆኑ የሚችሉ ችግሮችን ለማስወገድ ነው።

ነገር ግን አሁን ባለው የውሂብ ጎታ ውስጣዊ መዋቅር ውስጥ በጣም ጥሩ እውቀት አስፈላጊው ነገር ብቻ ነው ብለው አያስቡ. አዲስ ሚዛኖች አዲስ የማይታወቁ ነገሮችን ይዘው ይመጣሉ. ያልተጠበቁ የህመም ነጥቦች፣ ወጣ ገባ የመረጃ ስርጭት፣ ያልተጠበቀ የመተላለፊያ ይዘት እና የሃርድዌር ጉዳዮች፣ በየጊዜው እየጨመረ የሚሄደው ትራፊክ እና አዲስ የአውታረ መረብ ክፍሎች የውሂብ ጎታዎን አቀራረብ፣ የውሂብ ሞዴል፣ የስምሪት ሞዴል እና የውሂብ ጎታ መጠንን እንደገና እንዲያስቡ ያስገድዱዎታል።

...

ይህን ጽሑፍ ስለማተም ማሰብ በጀመርኩበት ጊዜ፣ በመጀመሪያው ዝርዝሬ ላይ አምስት ተጨማሪ ነገሮች ነበሩ። ከዚያም በጣም ብዙ ቁጥር መጣ አዳዲስ ሀሳቦች ሌላ ምን መሸፈን እንደሚቻል. ስለዚህ, ጽሑፉ ከፍተኛ ትኩረት የሚሹትን በጣም ትንሽ ግልጽ ችግሮች ይዳስሳል. ሆኖም፣ ይህ ማለት ርዕሱ ተዳክሟል ማለት አይደለም እናም ወደፊት ወደ እሱ አልመለስም እና አሁን ባለው ላይ ለውጥ አላደርግም።

PS

በብሎጋችን ላይ ያንብቡ፡-

ምንጭ: hab.com

አስተያየት ያክሉ