ለምንድነው በቁልፍ ሰሌዳዎች ላይ ለገጽ መግለጫ የመሳሪያ ድጋፍ ለምን ያስፈልግዎታል?

ሰላም ሁላችሁም! በጃቫ + ስፕሪንግ ውስጥ ማይክሮ አገልገሎቶችን የምጽፍ ደጋፊ ገንቢ ነኝ። በ Tinkoff ውስጥ በአንዱ የውስጥ ምርት ልማት ቡድን ውስጥ እሰራለሁ።

ለምንድነው በቁልፍ ሰሌዳዎች ላይ ለገጽ መግለጫ የመሳሪያ ድጋፍ ለምን ያስፈልግዎታል?

በቡድናችን ውስጥ በዲቢኤምኤስ ውስጥ መጠይቆችን የማመቻቸት ጥያቄ ብዙ ጊዜ ይነሳል። ሁልጊዜ ትንሽ ፈጣን መሆን ትፈልጋለህ፣ ነገር ግን ሁል ጊዜ በአሳቢነት በተገነቡ ኢንዴክሶች ማግኘት አትችልም - አንዳንድ መፍትሄዎችን መፈለግ አለብህ። ከመረጃ ቋቶች ጋር በሚሰሩበት ጊዜ ምክንያታዊ ማሻሻያዎችን ለመፈለግ ከእነዚህ አንዱ በድር ዙሪያ በሚንከራተቱበት ወቅት አገኘሁ የማርከስ ዊናንድ ማለቂያ የሌለው አጋዥ ብሎግየ SQL አፈጻጸም ደራሲ ተብራርቷል። ይህ ሁሉንም መጣጥፎች በተከታታይ ማንበብ የሚችሉበት ያ ብርቅዬ የብሎግ አይነት ነው።

የማርከስ አጭር መጣጥፍ ልተረጎምልህ እፈልጋለሁ። በ SQL መስፈርት መሰረት ወደ አሮጌው ነገር ግን አሁንም አግባብነት ያለው የማካካሻ ስራ አፈጻጸም ችግር ላይ ትኩረትን ለመሳብ የሚፈልግ ማኒፌስቶ በተወሰነ ደረጃ ሊጠራ ይችላል.

በአንዳንድ ቦታዎች ለጸሐፊው ማብራሪያ እና አስተያየት እጨምራለሁ. እንደ “በግምት” ያሉ ሁሉንም ቦታዎች እጠቅሳለሁ። ለበለጠ ግልጽነት

አነስተኛ መግቢያ

ብዙ ሰዎች በማካካሻ በኩል ከገጽ ምርጫዎች ጋር መሥራት ምን ያህል ችግር እንዳለበት እና ቀርፋፋ እንደሆነ የሚያውቁ ይመስለኛል። ይበልጥ ቀልጣፋ በሆነ ንድፍ በቀላሉ ሊተካ እንደሚችል ያውቃሉ?

ስለዚህ, የማካካሻ ቁልፍ ቃሉ የውሂብ ጎታውን በጥያቄው ውስጥ የመጀመሪያውን n መዝገቦች እንዲዘለል ይነግረዋል. ሆኖም የውሂብ ጎታው አሁንም እነዚህን የመጀመሪያ n መዝገቦች ከዲስክ ማንበብ ያስፈልገዋል, በተሰጠው ቅደም ተከተል (ማስታወሻ: ከተገለፀ መደርደርን ይተግብሩ), እና ከዚያ በኋላ ብቻ ከ n+1 ጀምሮ መዝገቦችን መመለስ ይቻላል. በጣም የሚያስደንቀው ነገር ችግሩ በዲቢኤምኤስ ውስጥ በተለየ አተገባበር ላይ አይደለም ፣ ግን በዋናው ትርጓሜ በመደበኛው መሠረት-

... ረድፎቹ መጀመሪያ የተደረደሩት በ እና ከዚያ በ ውስጥ የተገለጹትን የረድፎች ብዛት በመጣል የተገደበ ከመጀመሪያው...
-SQL፡2016፣ ክፍል 2፣ 4.15.3 የወጡ ሠንጠረዦች (ማስታወሻ፡ በአሁኑ ጊዜ በጣም ጥቅም ላይ የዋለው መደበኛ)

እዚህ ያለው ቁልፍ ነጥብ ማካካሻ አንድ ነጠላ መለኪያ ይወስዳል - ለመዝለል የመዝገቦች ብዛት ፣ እና ያ ነው። ይህን ፍቺ ተከትሎ፣ ዲቢኤምኤስ ሁሉንም መዝገቦች ብቻ ሰርስሮ ማውጣት እና ከዚያም አላስፈላጊ የሆኑትን መጣል ይችላል። ግልጽ ነው፣ ይህ የማካካሻ ፍቺ ተጨማሪ ስራ እንድንሰራ ያስገድደናል። እና SQL ወይም NoSQL ቢሆን ምንም አይደለም.

ትንሽ ተጨማሪ ህመም

የማካካሻ ችግሮች በዚህ አያበቁም እና ምክንያቱ እዚህ ጋር ነው። ሁለት ገጾችን ከዲስክ በማንበብ መካከል ሌላ ክዋኔ አዲስ መዝገብ ካስገባ, በዚህ ጉዳይ ላይ ምን ይሆናል?

ለምንድነው በቁልፍ ሰሌዳዎች ላይ ለገጽ መግለጫ የመሳሪያ ድጋፍ ለምን ያስፈልግዎታል?

ማካካሻ ካለፉት ገፆች መዝገቦችን ለመዝለል ጥቅም ላይ በሚውልበት ጊዜ በተለያዩ ገጾች ንባብ መካከል አዲስ መዝገብ በሚጨምርበት ጊዜ ብዙ ቅጂዎች ሊያገኙ ይችላሉ (ማስታወሻ-ይህ የሚቻለው በግንባታ ቅደም ተከተል በመጠቀም ገጽ በገጽ ስናነብ ነው ፣ ከዚያ በውጤታችን መካከል አዲስ ግቤት ሊያገኝ ይችላል).

ስዕሉ ይህንን ሁኔታ በግልፅ ያሳያል. መሠረቱ የመጀመሪያዎቹን 10 መዝገቦች ያነባል ፣ ከዚያ በኋላ አዲስ መዝገብ ተካቷል ፣ ይህም ሁሉንም የተነበቡ መዝገቦች በ 1 ያካክላል ። ከዚያም መሰረቱ ከቀጣዮቹ 10 መዛግብት አዲስ ገጽ ይወስዳል እና ከ 11 ኛው ይጀምራል ፣ እንደ አስፈላጊነቱ ፣ ግን ከ 10ኛ፣ ይህንን መዝገብ ማባዛት። ከዚህ አገላለጽ አጠቃቀም ጋር የተያያዙ ሌሎች ያልተለመዱ ነገሮች አሉ, ግን ይህ በጣም የተለመደ ነው.

አስቀድመን እንዳወቅነው፣ እነዚህ የአንድ የተወሰነ ዲቢኤምኤስ ወይም የትግበራቸው ችግሮች አይደሉም። ችግሩ ያለው በ SQL መስፈርት መሰረት ፔጅሽንን በመግለጽ ላይ ነው። የትኛውን ገጽ እንደሚያመጣ ወይም ስንት መዝገቦችን መዝለል እንዳለብን ለዲቢኤምኤስ እንነግረዋለን። ለዚህ በጣም ትንሽ መረጃ ስላለ የውሂብ ጎታው በቀላሉ እንዲህ ዓይነቱን ጥያቄ ማመቻቸት አልቻለም።

ይህ በአንድ የተወሰነ ቁልፍ ቃል ላይ ሳይሆን በጥያቄው ፍቺ ላይ ችግር አለመሆኑንም ግልጽ ማድረግ ተገቢ ነው። በችግር ተፈጥሮአቸው ተመሳሳይ የሆኑ ብዙ ተጨማሪ አገባቦች አሉ።

  • የማካካሻ ቁልፍ ቃል ቀደም ሲል እንደተጠቀሰው ነው.
  • የሁለት ቁልፍ ቃላት ግንባታ ገደብ [ማካካሻ] (ምንም እንኳን ገደብ በራሱ በጣም መጥፎ ባይሆንም).
  • በረድፍ ቁጥር (ለምሳሌ የረድፍ ቁጥር() ረድፍ፣ ወዘተ) ላይ በመመስረት በዝቅተኛ ወሰኖች ማጣራት።

እነዚህ ሁሉ አገላለጾች በቀላሉ ምን ያህል መስመሮች እንደሚዘለሉ ይነግሩዎታል፣ ምንም ተጨማሪ መረጃ ወይም አውድ የለም።

በኋላ በዚህ ጽሑፍ ውስጥ፣ የማካካሻ ቁልፍ ቃል የእነዚህ ሁሉ አማራጮች ማጠቃለያ ሆኖ ያገለግላል።

ያለ OFFSET ሕይወት

አሁን እነዚህ ሁሉ ችግሮች ባይኖሩ ዓለማችን ምን እንደሚመስል እናስብ። ያለማካካሻ ሕይወት በጣም አስቸጋሪ እንዳልሆነ ተገለጠ: በተመረጠው, እስካሁን ያላየናቸው ረድፎችን ብቻ መምረጥ ይችላሉ (ማስታወሻ: ማለትም በቀዳሚው ገጽ ላይ ያልነበሩ) ፣ የት ሁኔታን በመጠቀም።

በዚህ አጋጣሚ መርጦዎች የሚፈጸሙት በታዘዘ ስብስብ ላይ ነው (ጥሩ የድሮ ትእዛዝ በ) ከማለት እንጀምራለን። የታዘዘ ስብስብ ስላለን ካለፈው ገጽ የመጨረሻ መዝገብ በስተጀርባ ያለውን ውሂብ ብቻ ለማግኘት ቀላል ማጣሪያን መጠቀም እንችላለን፡-

    SELECT ...
    FROM ...
    WHERE ...
    AND id < ?last_seen_id
    ORDER BY id DESC
    FETCH FIRST 10 ROWS ONLY

የዚህ አካሄድ አጠቃላይ መርህ ያ ነው። እርግጥ ነው፣ በብዙ አምዶች ሲደረደሩ ነገሮች የበለጠ አስደሳች ይሆናሉ፣ ግን ሀሳቡ አሁንም አንድ ነው። ይህ ንድፍ ለብዙዎች ተግባራዊ መሆኑን ልብ ሊባል የሚገባው ጉዳይ ነው NoSQL- ውሳኔዎች.

ይህ አካሄድ መፈለግ ዘዴ ወይም የቁልፍ ማስያዣ ገጽ ይባላል። ተንሳፋፊውን የውጤት ችግር ይፈታል (ማስታወሻ: ቀደም ብሎ በተገለጸው ገጽ መካከል በመጻፍ መካከል ያለው ሁኔታ) እና በእርግጥ, ሁላችንም የምንወደው, ከጥንታዊው ማካካሻ የበለጠ ፈጣን እና የተረጋጋ ይሰራል. መረጋጋት የጥያቄው ሂደት ጊዜ ከተጠየቀው ሰንጠረዥ ቁጥር ጋር በተመጣጣኝ መጠን የማይጨምር በመሆኑ ነው (ማስታወሻ: ስለ የተለያዩ የአቀራረብ ስራዎች የበለጠ ለማወቅ ከፈለጉ ወደ pagination, ይችላሉ. የጸሐፊውን አቀራረብ ተመልከት. እንዲሁም ለተለያዩ ዘዴዎች የንፅፅር መለኪያዎችን ማግኘት ይችላሉ)።

ከስላይድ አንዱ ስለዚያ ይናገራልያ በቁልፍ መፃፍ በእርግጥ ሁሉን ቻይ አይደለም - ውሱንነቶች አሉት። በጣም አስፈላጊው የዘፈቀደ ገጾችን የማንበብ ችሎታ የላትም (ማስታወሻ: ወጥነት ባለው መልኩ)። ሆኖም ግን, ማለቂያ በሌለው የማሸብለል ዘመን (ማስታወሻ: በፊት ለፊት በኩል), ይህ እንደዚህ አይነት ችግር አይደለም. ለማንኛውም ጠቅ ለማድረግ የገጽ ቁጥርን መግለጽ በUI ንድፍ ውስጥ መጥፎ ውሳኔ ነው (ማስታወሻ፡ የጽሁፉ ደራሲ አስተያየት)።

ስለ መሳሪያዎቹስ?

ለዚህ ዘዴ የመሳሪያ ድጋፍ ባለመኖሩ ብዙውን ጊዜ በቁልፍ ላይ መፃፍ ተስማሚ አይደለም. የተለያዩ ማዕቀፎችን ጨምሮ አብዛኛዎቹ የማዳበሪያ መሳሪያዎች ፔጃኒሽን እንዴት እንደሚከናወን በትክክል እንዲመርጡ አይፈቅዱም.

ከዲቢኤምኤስ ጀምሮ በአሳሹ ውስጥ ማለቂያ በሌለው ማሸብለል የ AJAX ጥያቄን እስከ አፈፃፀም ድረስ የተገለጸው ዘዴ ከጫፍ እስከ ጫፍ ድጋፍ የሚያስፈልገው በመሆኑ ሁኔታው ​​ተባብሷል። የገጹን ቁጥር ብቻ ከመግለጽ ይልቅ አሁን ለሁሉም ገጾች ቁልፎችን በአንድ ጊዜ መግለጽ አለቦት።

ነገር ግን በቁልፍ ሰሌዳዎች ላይ ማተምን የሚደግፉ የማዕቀፎች ብዛት ቀስ በቀስ እያደገ ነው። በአሁኑ ጊዜ ያለን እነሆ፡-

(ማስታወሻ፡ አንዳንድ አገናኞች የተወገዱት በትርጉም ጊዜ አንዳንድ ቤተ-መጻሕፍት ከ2017-2018 ጀምሮ ያልተዘመኑ በመሆናቸው ነው። ፍላጎት ካሎት ዋናውን ምንጭ መመልከት ይችላሉ።)

የእርስዎ እርዳታ የሚያስፈልገው በዚህ ጊዜ ነው። ማንኛውንም የፓጂኔሽን አጠቃቀምን የሚጠቅም ማዕቀፍ ካዘጋጁ ወይም ከደገፉ፣ እጠይቃለሁ፣ እጠይቃለሁ፣ በቁልፍ ላይ ለገጽ ማተም ቤተኛ ድጋፍ እንድትሰጡ እጠይቃለሁ። ጥያቄዎች ካሉዎት ወይም እርዳታ ከፈለጉ፣ ለመርዳት ደስተኛ ነኝ (መድረኩ, Twitter, የአድራሻ ቅጽ) (ማስታወሻ፡ ከማርከስ ጋር ካለኝ ልምድ በመነሳት ይህንን ርዕስ ለማሰራጨት በጣም ጓጉቷል ማለት እችላለሁ)።

በቁልፍ መፃፍ ድጋፍ ማግኘት ይገባቸዋል ብለው ያሰቡትን ዝግጁ-የተዘጋጁ መፍትሄዎችን ከተጠቀሙ፣ ከተቻለ ጥያቄ ይፍጠሩ ወይም ደግሞ ዝግጁ የሆነ መፍትሄ ያቅርቡ። እንዲሁም ከዚህ ጽሑፍ ጋር ማገናኘት ይችላሉ.

መደምደሚያ

ቀላል እና ጠቃሚ አቀራረብ እንደ መቆለፊያ ቁልፎች ያልተስፋፋበት ምክንያት በቴክኒካል ለመተግበር አስቸጋሪ ወይም ከፍተኛ ጥረት የሚጠይቅ አይደለም. ዋናው ምክንያት ብዙዎች ማየትና ማካካሻ መሥራት ስለለመዱ ነው - ይህ አካሄድ በራሱ ስታንዳርድ የታዘዘ ነው።

በውጤቱም, ጥቂት ሰዎች ወደ ፓጂኔሽን አቀራረብ ስለመቀየር ያስባሉ, እና በዚህ ምክንያት, ከማዕቀፎች እና ከቤተ-መጻህፍት የመሳሪያ ድጋፍ ደካማ ነው. ስለዚህ፣ ከጥቅም ነጻ የሆነ ፔጅኔሽን ሃሳብ እና ግብ ለእርስዎ ቅርብ ከሆነ፣ እንዲሰራጭ ያግዙ!

ምንጭ: https://use-the-index-luke.com/no-offset
ደራሲ: ማርከስ ዊናንድ

ምንጭ: hab.com

አስተያየት ያክሉ