የ VKontakte መልእክት ዳታቤዝ ከባዶ እንደገና ይፃፉ እና ይተርፉ

ተጠቃሚዎቻችን ድካምን ሳያውቁ እርስ በርሳቸው መልእክት ይጽፋሉ።
የ VKontakte መልእክት ዳታቤዝ ከባዶ እንደገና ይፃፉ እና ይተርፉ
ያ በጣም ብዙ ነው። የሁሉንም ተጠቃሚዎች መልዕክቶች ለማንበብ ካነሳህ ከ 150 ሺህ ዓመታት በላይ ይወስዳል. በትክክል የላቀ አንባቢ ከሆንክ እና በእያንዳንዱ መልእክት ላይ ከአንድ ሰከንድ ያልበለጠ ጊዜ የምታሳልፍ ከሆነ።

በእንደዚህ ዓይነት የውሂብ መጠን ፣ እሱን ለማከማቸት እና ለማግኘት አመክንዮው በጥሩ ሁኔታ መገንባቱ በጣም አስፈላጊ ነው። ያለበለዚያ ፣ አስደናቂ ባልሆነ ጊዜ ፣ ​​ሁሉም ነገር በቅርቡ እንደሚሳሳተው ግልጽ ሊሆን ይችላል።

ለእኛ፣ ይህ ቅጽበት የመጣው ከአንድ ዓመት ተኩል በፊት ነው። ወደዚህ እንዴት እንደመጣን እና በመጨረሻ ምን እንደተፈጠረ - በቅደም ተከተል እንነግርዎታለን.

ጀርባ

በመጀመርያው ትግበራ የVKontakte መልእክቶች በ PHP backend እና MySQL ጥምር ላይ ሰርተዋል። ይህ ለትንሽ ተማሪ ድህረ ገጽ ሙሉ በሙሉ የተለመደ መፍትሄ ነው። ነገር ግን፣ ይህ ድረ-ገጽ ከቁጥጥር ውጭ በሆነ መልኩ አድጎ ለራሱ የመረጃ አወቃቀሮችን ማመቻቸትን መጠየቅ ጀመረ።

እ.ኤ.አ. በ 2009 መገባደጃ ላይ የመጀመሪያው የጽሑፍ ሞተር ማከማቻ ተፃፈ እና በ 2010 መልእክቶች ወደ እሱ ተላልፈዋል ።

በጽሑፍ ሞተሩ ውስጥ ፣ መልእክቶች በዝርዝሮች ውስጥ ተከማችተዋል - “የመልእክት ሳጥኖች” ዓይነት። እያንዳንዱ እንደዚህ ያለ ዝርዝር በ uid ይወሰናል - የእነዚህ ሁሉ መልዕክቶች ባለቤት የሆነው ተጠቃሚ። መልእክት የባህሪዎች ስብስብ አለው፡ ኢንተርሎኩተር መለያ፣ ጽሑፍ፣ አባሪዎች እና የመሳሰሉት። በ"ሣጥን" ውስጥ ያለው የመልእክት መለያ local_id ነው፣ መቼም አይለወጥም እና ለአዲስ መልዕክቶች በቅደም ተከተል ተመድቧል። “ሳጥኖቹ” ገለልተኛ ናቸው እና በሞተሩ ውስጥ እርስ በእርስ አልተመሳሰሉም ፣ በመካከላቸው ያለው ግንኙነት በPHP ደረጃ ይከሰታል። ከውስጥ ሆነው የጽሑፍ-ኤንጂን የመረጃ አወቃቀሩን እና ችሎታዎችን መመልከት ይችላሉ። እዚህ.
የ VKontakte መልእክት ዳታቤዝ ከባዶ እንደገና ይፃፉ እና ይተርፉ
ይህ በሁለት ተጠቃሚዎች መካከል ለሚደረጉ የደብዳቤ ልውውጥ በቂ ነበር። ቀጥሎ ምን እንደተፈጠረ ገምት?

በግንቦት 2011 VKontakte ከበርካታ ተሳታፊዎች ጋር ውይይቶችን አስተዋወቀ - ብዙ ውይይት። ከእነሱ ጋር ለመስራት፣ ሁለት አዳዲስ ስብስቦችን - አባል-ቻት እና ቻት-አባላትን አሰባስበናል። የመጀመሪያው በተጠቃሚዎች ስለሚደረጉ ውይይቶች መረጃን ያከማቻል, ሁለተኛው ደግሞ ስለ ተጠቃሚዎች በቻት ያከማቻል. ከራሳቸው ዝርዝሮች በተጨማሪ ይህ ለምሳሌ ተጋባዥ ተጠቃሚውን እና ወደ ውይይቱ የተጨመሩበትን ጊዜ ይጨምራል።

"PHP፣ ወደ ቻቱ መልእክት እንላክ" ይላል ተጠቃሚው።
"ና፣ {username}" ይላል PHP።
የ VKontakte መልእክት ዳታቤዝ ከባዶ እንደገና ይፃፉ እና ይተርፉ
በዚህ እቅድ ውስጥ ጉዳቶች አሉ. ማመሳሰል አሁንም የ PHP ኃላፊነት ነው። ትልልቅ ቻቶች እና በአንድ ጊዜ መልእክት የሚልኩላቸው ተጠቃሚዎች አደገኛ ታሪክ ናቸው። የጽሑፍ ሞተሩ ምሳሌ በ uid ላይ ስለሚወሰን የውይይት ተሳታፊዎች በተለያየ ጊዜ ተመሳሳይ መልእክት ሊቀበሉ ይችላሉ። እድገት ከቆመ አንድ ሰው በዚህ መኖር ይችላል። ግን ያ አይሆንም።

እ.ኤ.አ. በ2015 መገባደጃ ላይ የማህበረሰብ መልእክቶችን አስጀመርን እና በ2016 መጀመሪያ ላይ ለእነሱ ኤፒአይ ጀመርን። በማኅበረሰቦች ውስጥ ትላልቅ ቻትቦቶች በመጡበት ወቅት የጭነት ስርጭትን እንኳን መርሳት ይቻል ነበር።

ጥሩ ቦት በቀን ብዙ ሚሊዮን መልዕክቶችን ያመነጫል - በጣም ተናጋሪ ተጠቃሚዎች እንኳን በዚህ መኩራራት አይችሉም። ይህ ማለት እንደዚህ ያሉ ቦቶች የኖሩባቸው አንዳንድ የጽሑፍ ሞተር ሁኔታዎች ሙሉ በሙሉ መሰቃየት ጀመሩ።

የመልእክት ሞተሮች በ 2016 100 የውይይት-አባላት እና የአባል-ቻት ፣ እና 8000 የጽሑፍ ሞተሮች ናቸው። እያንዳንዳቸው 64 ጂቢ ማህደረ ትውስታ ያላቸው በሺህ አገልጋዮች ላይ ተስተናግደዋል. እንደ መጀመሪያ የአደጋ ጊዜ መለኪያ፣ ማህደረ ትውስታውን በሌላ 32 ጂቢ ጨምረናል። ትንበያዎቹን ገምተናል። ከባድ ለውጦች ከሌለ, ይህ ለአንድ አመት ያህል በቂ ይሆናል. ሃርድዌርን መያዝ ወይም የውሂብ ጎታዎችን እራሳቸው ማመቻቸት አለብዎት.

በሥነ-ሕንፃው ባህሪ ምክንያት ሃርድዌርን በበርካታ ብዜቶች መጨመር ብቻ ምክንያታዊ ነው. ያም ማለት ቢያንስ የመኪናውን ቁጥር በእጥፍ ይጨምራል - ግልጽ ነው, ይህ በጣም ውድ መንገድ ነው. እናመቻቻለን።

አዲስ ጽንሰ-ሐሳብ

የአዲሱ አካሄድ ዋና ይዘት ውይይት ነው። ቻት ከእሱ ጋር የሚዛመዱ የመልእክቶች ዝርዝር አለው። ተጠቃሚው የውይይት ዝርዝር አለው።

የሚፈለገው ዝቅተኛው ሁለት አዲስ የውሂብ ጎታዎች ነው።

  • ቻት-ሞተር. ይህ የውይይት ቬክተሮች ማከማቻ ነው። እያንዳንዱ ውይይት ከእሱ ጋር የሚዛመዱ የመልእክት ቬክተር አለው። እያንዳንዱ መልእክት በቻት ውስጥ የጽሑፍ እና ልዩ የመልእክት መለያ አለው - chat_local_id።
  • የተጠቃሚ-ሞተር. ይህ የተጠቃሚዎች ቬክተሮች ማከማቻ ነው - ለተጠቃሚዎች አገናኞች። እያንዳንዱ ተጠቃሚ peer_id ( interlocutors - ሌሎች ተጠቃሚዎች፣ ብዙ ቻት ወይም ማህበረሰቦች) እና የመልእክት ቬክተር አለው። እያንዳንዱ አቻ_መታወቂያ ከእሱ ጋር የሚዛመዱ የመልእክት ቬክተር አለው። እያንዳንዱ መልእክት chat_local_id እና ለዚያ ተጠቃሚ ልዩ የመልእክት መታወቂያ አለው - user_local_id።

የ VKontakte መልእክት ዳታቤዝ ከባዶ እንደገና ይፃፉ እና ይተርፉ
አዲስ ስብስቦች TCP በመጠቀም እርስ በርስ ይገናኛሉ - ይህ የጥያቄዎች ቅደም ተከተል እንደማይለወጥ ያረጋግጣል. ጥያቄዎቹ እራሳቸው እና ለእነሱ ማረጋገጫዎች በሃርድ ድራይቭ ላይ ተመዝግበዋል - ስለዚህ ከተሳካ ወይም ሞተሩ እንደገና ከጀመረ በኋላ የወረፋውን ሁኔታ በማንኛውም ጊዜ ወደነበረበት መመለስ እንችላለን። የተጠቃሚው ሞተር እና የቻት ሞተር እያንዳንዳቸው 4 ሺህ ሻርዶች በመሆናቸው በክላስተር መካከል ያለው የጥያቄ ወረፋ በእኩል መጠን ይሰራጫል (በእውነቱ ግን ምንም የለም - እና በጣም በፍጥነት ይሰራል)።

በእኛ የመረጃ ቋቶች ውስጥ በአብዛኛዎቹ ጉዳዮች ከዲስክ ጋር መሥራት በሁለትዮሽ ሎግ ለውጦች (ቢንሎግ) ፣ በስታቲክ ቅጽበተ-ፎቶዎች እና በማህደረ ትውስታ ውስጥ ከፊል ምስል ጥምረት ላይ የተመሠረተ ነው። በቀን ውስጥ ለውጦች ወደ ቢንሎግ ይጻፋሉ, እና የአሁኑ ሁኔታ ቅጽበተ-ፎቶ በየጊዜው ይፈጠራል. ቅጽበተ-ፎቶ ለኛ ዓላማዎች የተመቻቹ የውሂብ አወቃቀሮች ስብስብ ነው። እሱ ራስጌ (የምስሉ ሜታኢክስ) እና የሜታፋይል ስብስብን ያካትታል። ራስጌው በቋሚነት በ RAM ውስጥ ተከማችቷል እና ከቅጽበተ-ፎቶው ላይ ውሂብ የት እንደሚፈለግ ይጠቁማል። እያንዳንዱ ሜታፋይል በቅርብ ቦታዎች ላይ ሊፈለግ የሚችል ውሂብን ያካትታል-ለምሳሌ ከአንድ ተጠቃሚ ጋር የሚዛመድ። ቅጽበተ-ፎቶ ራስጌውን ተጠቅመው ዳታቤዙን ሲጠይቁ የሚፈለገው ሜታፋይል ይነበባል፣ ከዚያም ቅጽበተ-ፎቶው ከተፈጠረ በኋላ የተከሰቱት የቢንሎግ ለውጦች ግምት ውስጥ ይገባል። የዚህ አሰራር ጥቅሞች የበለጠ ማንበብ ይችላሉ እዚህ.

በተመሳሳይ ጊዜ, በሃርድ ድራይቭ ላይ ያለው መረጃ በራሱ በቀን አንድ ጊዜ ብቻ ይለዋወጣል - ምሽት ላይ በሞስኮ, ጭነቱ አነስተኛ በሚሆንበት ጊዜ. ለዚህም ምስጋና ይግባውና (በዲስክ ላይ ያለው መዋቅር ቀኑን ሙሉ ቋሚ መሆኑን በማወቅ) ቬክተሮችን በቋሚ መጠን ድርድር መተካት እንችላለን - እናም በዚህ ምክንያት የማስታወስ ችሎታን ይጨምራል።

በአዲሱ እቅድ ውስጥ መልዕክት መላክ ይህን ይመስላል፡-

  1. የPHP የኋላ ኤንጂን መልእክት ለመላክ ጥያቄ በማቅረብ የተጠቃሚውን ሞተር ያነጋግራል።
  2. የተጠቃሚ-ሞተር ጥያቄውን ወደ ተፈለገው የቻት-ሞተር ምሳሌ ይልካቸዋል፣ ይህም ወደ ተጠቃሚ ሞተር chat_local_id ይመለሳል - በዚህ ውይይት ውስጥ ያለ አዲስ መልእክት ልዩ መለያ። የቻት_ኤንጂኑ መልዕክቱን በቻቱ ውስጥ ላሉ ተቀባዮች በሙሉ ያስተላልፋል።
  3. የተጠቃሚ-ሞተር chat_local_id ከቻት-ሞተር ተቀብሎ user_local_id ወደ PHP ይመልሳል - ለዚህ ተጠቃሚ ልዩ የሆነ የመልእክት መለያ። ይህ ለዪ፣ ለምሳሌ፣ በኤፒአይ በኩል ከመልእክቶች ጋር ለመስራት ጥቅም ላይ ይውላል።

የ VKontakte መልእክት ዳታቤዝ ከባዶ እንደገና ይፃፉ እና ይተርፉ
ነገር ግን በትክክል መልዕክቶችን ከመላክ በተጨማሪ ጥቂት ተጨማሪ ጠቃሚ ነገሮችን መተግበር ያስፈልግዎታል፡-

  • ንዑስ ዝርዝሮች ለምሳሌ የውይይት ዝርዝሩን ሲከፍቱ የሚያዩዋቸው በጣም የቅርብ ጊዜ መልዕክቶች ናቸው። ያልተነበቡ መልእክቶች፣ መለያዎች ያላቸው መልዕክቶች ("አስፈላጊ", "አይፈለጌ መልዕክት", ወዘተ.)
  • በቻት-ሞተር ውስጥ መልዕክቶችን መጨናነቅ
  • በተጠቃሚ-ሞተር ውስጥ መልዕክቶችን በመሸጎጥ ላይ
  • ይፈልጉ (በሁሉም መገናኛዎች እና በአንድ የተወሰነ ውስጥ)።
  • የእውነተኛ ጊዜ ማሻሻያ (ሎንግፖሊንግ)።
  • በሞባይል ደንበኞች ላይ መሸጎጫ ለመተግበር ታሪክን በማስቀመጥ ላይ።

ሁሉም ንዑስ ዝርዝሮች በፍጥነት የሚለዋወጡ መዋቅሮች ናቸው። ከእነሱ ጋር ለመስራት እንጠቀማለን ስፕሌይ ዛፎች. ይህ ምርጫ በዛፉ አናት ላይ አንዳንድ ጊዜ ከቅጽበታዊ ገጽ እይታዎች አጠቃላይ የመልእክት ክፍሎችን እናከማቻለን - ለምሳሌ ፣ በምሽት እንደገና ከተመዘገበ በኋላ ፣ ዛፉ ሁሉንም የንዑስ ዝርዝሩን መልእክቶች የያዘ አንድ አናት ያካትታል ። የስፕሌይ ዛፉ ሚዛንን ማመጣጠን ሳያስቡ በእንደዚህ አይነት ወርድ መካከል ማስገባት ቀላል ያደርገዋል. በተጨማሪም, ስፕሌይ አላስፈላጊ መረጃዎችን አያከማችም, ይህም ማህደረ ትውስታን ይቆጥባል.

መልእክቶች ከፍተኛ መጠን ያለው መረጃን፣ በአብዛኛው ጽሑፍን ያካትታሉ፣ ይህም ለመጭመቅ ይጠቅማል። አንድን መልእክት እንኳን በትክክል ከማህደር ማውጣታችን አስፈላጊ ነው። መልዕክቶችን ለመጭመቅ ያገለግላል ሃፍማን አልጎሪዝም ከራሳችን ሂውሪስቲክስ ጋር - ለምሳሌ ፣ በመልእክቶች ውስጥ ቃላቶች “ከቃላት ውጭ” - ክፍተቶች ፣ ሥርዓተ-ነጥብ ምልክቶች - እና ለሩሲያ ቋንቋ ምልክቶችን የመጠቀም አንዳንድ ልዩ ሁኔታዎችን እናስታውሳለን።

ተጠቃሚዎች ከቻት በጣም ያነሱ ስለሆኑ በቻት-ሞተር ውስጥ የዘፈቀደ መዳረሻ የዲስክ ጥያቄዎችን ለማስቀመጥ፣ መልዕክቶችን በተጠቃሚ-ሞተር ውስጥ እናሸሻለን።

የመልእክት ፍለጋ ከተጠቃሚ-ሞተር ወደ ሁሉም የቻት-ሞተር አጋጣሚዎች የዚህ ተጠቃሚ ቻቶች እንደ ሰያፍ መጠይቅ ይተገበራል። ውጤቶቹ በተጠቃሚው-ሞተር በራሱ ውስጥ ይጣመራሉ.

ደህና ፣ ሁሉም ዝርዝሮች ከግምት ውስጥ ገብተዋል ፣ የቀረው ነገር ወደ አዲስ እቅድ መቀየር ነው - እና በተለይም ተጠቃሚዎች ሳያውቁት ይሻላል።

የውሂብ ሽግግር

ስለዚህ፣ መልዕክቶችን በተጠቃሚ የሚያከማች የጽሑፍ ሞተር፣ እና ስለ መልቲ ቻት ሩም እና በውስጣቸው ስላሉት ተጠቃሚዎች መረጃ የሚያከማች ሁለት ክላስተር ቻት-አባላት እና አባል-ቻት አለን። ከዚህ ወደ አዲሱ የተጠቃሚ-ሞተር እና ቻት-ሞተር እንዴት መሄድ ይቻላል?

በአሮጌው እቅድ ውስጥ የአባል-ቻትስ በዋናነት ጥቅም ላይ የዋለው ለማመቻቸት ነበር። አስፈላጊውን ውሂብ ከእሱ ወደ ቻት-አባላት በፍጥነት አስተላልፈናል, እና ከዚያ በኋላ በስደት ሂደት ውስጥ አልተሳተፈም.

ለቻት-አባላት ወረፋ። 100 አጋጣሚዎችን ያካትታል, ቻት-ሞተር ደግሞ 4 ሺህ ነው. ውሂቡን ለማስተላለፍ ወደ ተገዢነት ማምጣት ያስፈልግዎታል - ለዚህም ፣ የቻት አባላት በተመሳሳይ 4 ሺህ ቅጂዎች ተከፍለዋል ፣ እና ከዚያ የቻት-አባላት ቢንሎግ በቻት-ሞተር ውስጥ ማንበብ ችሏል።
የ VKontakte መልእክት ዳታቤዝ ከባዶ እንደገና ይፃፉ እና ይተርፉ
አሁን ቻት-ሞተር ስለ መልቲ-ቻት ከቻት-አባላት ያውቃል፣ ነገር ግን ከሁለት ኢንተርሎኩተሮች ጋር ስለሚደረጉ ውይይቶች እስካሁን ምንም የሚያውቀው ነገር የለም። እንደነዚህ ያሉ ንግግሮች በጽሑፍ ሞተሩ ውስጥ ከተጠቃሚዎች ጋር በማጣቀሻዎች ውስጥ ይገኛሉ. እዚህ ውሂቡን "ወደ ፊት" ወስደናል-እያንዳንዱ የቻት-ሞተር ምሳሌ ሁሉንም የጽሑፍ-ሞተር ምሳሌዎችን የሚፈልገውን ንግግር ካደረጉ ጠየቀ።

በጣም ጥሩ - ቻት-ሞተር ምን አይነት መልቲ-ቻት ቻቶች እንዳሉ ያውቃል እና ምን ንግግሮች እንዳሉ ያውቃል።
በእያንዳንዱ ቻት ውስጥ ያሉ የመልእክት ዝርዝሮችን እንዲጨርሱ መልእክቶችን በበርካታ ቻት ቻቶች ውስጥ ማዋሃድ ያስፈልግዎታል። በመጀመሪያ፣ ቻት-ሞተር ከዚህ ውይይት ሁሉንም የተጠቃሚ መልዕክቶች ከጽሑፍ-ሞተር ያወጣል። በአንዳንድ ሁኔታዎች በጣም ብዙ (እስከ መቶ ሚሊዮኖች) አሉ፣ ግን በጣም አልፎ አልፎ በስተቀር ቻቱ ሙሉ በሙሉ ከ RAM ጋር ይጣጣማል። ያልታዘዙ መልእክቶች አሉን ፣ እያንዳንዳቸው በብዙ ቅጂዎች - ከሁሉም በኋላ ፣ ሁሉም ከተጠቃሚዎች ጋር በተዛመደ ከተለያዩ የጽሑፍ ሞተሮች የተወሰዱ ናቸው። ግቡ መልዕክቶችን መደርደር እና አላስፈላጊ ቦታ የሚይዙ ቅጂዎችን ማስወገድ ነው.

እያንዳንዱ መልእክት የተላከበትን ጊዜ እና የጽሑፍ መልእክት የያዘ የጊዜ ማህተም አለው። ለመደርደር ጊዜን እንጠቀማለን - ጠቋሚዎችን ወደ መልቲቻት ተሳታፊዎች በጣም ጥንታዊ መልዕክቶችን እናስቀምጣለን እና ከታቀዱት ቅጂዎች ጽሑፍ ላይ hashesን በማነፃፀር የጊዜ ማህተሙን ወደማሳደግ እንሄዳለን። ቅጂዎቹ አንድ አይነት ሃሽ እና የጊዜ ማህተም እንደሚኖራቸው ምክንያታዊ ነው፣ በተግባር ግን ይህ ሁልጊዜ እንደዛ አይደለም። እንደምታስታውሱት ፣ በአሮጌው እቅድ ውስጥ ማመሳሰል በ PHP ተከናውኗል - እና አልፎ አልፎ ፣ ተመሳሳይ መልእክት የመላክ ጊዜ በተለያዩ ተጠቃሚዎች መካከል ይለያያል። በእነዚህ አጋጣሚዎች፣ የጊዜ ማህተሙን እራሳችን እንድናርትዕ ፈቅደናል - ብዙውን ጊዜ በሰከንድ ውስጥ። ሁለተኛው ችግር ለተለያዩ ተቀባዮች የተለያየ የመልእክት ቅደም ተከተል ነው። እንደዚህ ባሉ አጋጣሚዎች፣ ለተለያዩ ተጠቃሚዎች የተለያዩ የማዘዣ አማራጮች ያለው ተጨማሪ ቅጂ እንዲፈጠር ፈቅደናል።

ከዚህ በኋላ በ መልቲቻት ውስጥ ስለ መልእክቶች መረጃ ወደ ተጠቃሚው ሞተር ይላካል. እና ከውጭ የሚመጡ መልዕክቶች አንድ ደስ የማይል ባህሪ እዚህ አለ። በተለመደው አሠራር፣ ወደ ሞተሩ የሚመጡ መልእክቶች በተጠቃሚ_local_id በከፍታ ቅደም ተከተል በጥብቅ ይታዘዛሉ። ከአሮጌው ሞተር ወደ ተጠቃሚ ሞተሩ የገቡት መልዕክቶች ይህንን ጠቃሚ ንብረት አጥተዋል። በተመሳሳይ ጊዜ, ለሙከራ ምቾት, በፍጥነት መድረስ, በውስጣቸው የሆነ ነገር መፈለግ እና አዲስ መጨመር መቻል አለብዎት.

ከውጭ የሚመጡ መልዕክቶችን ለማከማቸት ልዩ የውሂብ መዋቅር እንጠቀማለን.

የመጠን ቬክተርን ይወክላል የ VKontakte መልእክት ዳታቤዝ ከባዶ እንደገና ይፃፉ እና ይተርፉሁሉም ሰው የት ነው ያለው የ VKontakte መልእክት ዳታቤዝ ከባዶ እንደገና ይፃፉ እና ይተርፉ - ልዩ በሆኑ የንጥረ ነገሮች ቅደም ተከተል የተለያዩ እና በሚወርድ ቅደም ተከተል የታዘዙ ናቸው። በእያንዳንዱ ክፍል ኢንዴክሶች የ VKontakte መልእክት ዳታቤዝ ከባዶ እንደገና ይፃፉ እና ይተርፉ ንጥረ ነገሮች ተደርድረዋል. በእንደዚህ ዓይነት መዋቅር ውስጥ አንድ አካል መፈለግ ጊዜ ይወስዳል የ VKontakte መልእክት ዳታቤዝ ከባዶ እንደገና ይፃፉ እና ይተርፉ በኩል የ VKontakte መልእክት ዳታቤዝ ከባዶ እንደገና ይፃፉ እና ይተርፉ ሁለትዮሽ ፍለጋዎች. የአንድ ኤለመንቱ መጨመር ተበላሽቷል የ VKontakte መልእክት ዳታቤዝ ከባዶ እንደገና ይፃፉ እና ይተርፉ.

ስለዚህ, መረጃን ከአሮጌ ሞተሮች ወደ አዲስ እንዴት ማስተላለፍ እንደሚቻል አውቀናል. ግን ይህ ሂደት ብዙ ቀናትን ይወስዳል - እና በእነዚህ ቀናት ውስጥ ተጠቃሚዎቻችን እርስ በእርስ የመፃፍ ልምዳቸውን ይተዋል ማለት አይቻልም። በዚህ ጊዜ መልዕክቶችን ላለማጣት፣ ሁለቱንም አሮጌ እና አዲስ ስብስቦችን ወደ ሚጠቀም የስራ እቅድ እንሸጋገራለን።

ውሂቡ የተፃፈው ለቻት-አባላት እና ለተጠቃሚ-ሞተር (እና ለጽሑፍ-ሞተር ሳይሆን፣ እንደ አሮጌው እቅድ በተለመደው አሠራር) ነው። የተጠቃሚ-ሞተር የቻት-ሞተርን ጥያቄ ይላካል - እና እዚህ ባህሪው ይህ ውይይት አስቀድሞ መዋሃዱ ወይም አለመዋሃዱ ላይ የተመሠረተ ነው። ቻቱ ገና ካልተዋሃደ, ቻት-ሞተሩ መልእክቱን በራሱ ላይ አይጽፍም, እና አሰራሩ የሚከናወነው በጽሑፍ ሞተሩ ውስጥ ብቻ ነው. ቻቱ ቀድሞውኑ ወደ ቻት-ሞተር ከተዋሃደ፣ ቻት_local_idን ወደ ተጠቃሚ ሞተር ይመልሳል እና መልዕክቱን ለሁሉም ተቀባዮች ይልካል። የተጠቃሚ-ሞተር ሁሉንም ውሂብ ወደ ጽሑፍ-ሞተር ፕሮክሲ ያደርጋል - ስለዚህ የሆነ ነገር ከተፈጠረ ሁል ጊዜም ወደ ኋላ መመለስ እንችላለን ፣ ሁሉንም የአሁኑን መረጃዎች በአሮጌው ሞተር ውስጥ ይዘን ። ቴክስት-ሞተር የተጠቃሚው-አካባቢያዊ_መታወቂያን ይመልሳል፣ይህም የተጠቃሚ ሞተር ያከማቻል እና ወደ ኋላ ይመለሳል።
የ VKontakte መልእክት ዳታቤዝ ከባዶ እንደገና ይፃፉ እና ይተርፉ
በውጤቱም, የሽግግሩ ሂደት ይህን ይመስላል: ባዶ የተጠቃሚ-ሞተር እና የቻት-ሞተር ስብስቦችን እናገናኛለን. ቻት-ኤንጂን ሙሉውን የቻት-አባላት ቢንሎግ ያነባል፣ ከዚያም ፕሮክሲንግ ከላይ በተገለጸው እቅድ መሰረት ይጀምራል። የድሮውን ውሂብ እናስተላልፋለን እና ሁለት የተመሳሰሉ ስብስቦችን (አሮጌ እና አዲስ) እናገኛለን። የቀረው ንባብን ከጽሑፍ ሞተር ወደ ተጠቃሚ-ሞተር መቀየር እና ተኪነትን ማሰናከል ነው።

ውጤቶች

ለአዲሱ አቀራረብ ምስጋና ይግባውና ሁሉም የሞተር ሞተሮች የአፈፃፀም መለኪያዎች ተሻሽለዋል እና ከመረጃ ወጥነት ጋር የተያያዙ ችግሮች ተፈትተዋል. አሁን በመልእክቶች ውስጥ አዳዲስ ባህሪዎችን በፍጥነት መተግበር እንችላለን (እና ይህንን ማድረግ የጀመርነው - ከፍተኛውን የውይይት ተሳታፊዎች ቁጥር ጨምረናል ፣ የተላለፉ መልዕክቶችን ፍለጋን ተግባራዊ እናደርጋለን ፣ የተሰኩ መልዕክቶችን አስጀምሯል እና በተጠቃሚው አጠቃላይ የመልእክት ብዛት ላይ ገደቡን ከፍ እናደርጋለን) .

የሎጂክ ለውጦች በእውነት በጣም ትልቅ ናቸው። እና ይህ ማለት ሁልጊዜ በትልቅ ቡድን እና በቁጥር በሚቆጠሩ የኮድ መስመሮች ሙሉ አመታትን ማለት እንዳልሆነ ማስተዋል እፈልጋለሁ። ቻት-ሞተር እና የተጠቃሚ-ሞተር ከተጨማሪ ታሪኮች ጋር እንደ Huffman ለመልእክት መጭመቂያ፣ ስፕሌይ ዛፎች እና የውጪ መልዕክቶች መዋቅር ከ 20 ሺህ ያነሰ የኮድ መስመር ነው። እና በ 3 ወራት ውስጥ በ 10 ገንቢዎች የተፃፉ ናቸው (ነገር ግን ያንን ማስታወስ ጠቃሚ ነው ሁሉም ሶስት ገንቢ - የዓለም ሻምፒዮናዎች በስፖርት ፕሮግራሞች ውስጥ).

ከዚህም በላይ የአገልጋዮቹን ቁጥር በእጥፍ ከማሳደግ ይልቅ ቁጥራቸውን በግማሽ ቀንሰን - አሁን ተጠቃሚው-ሞተር እና ቻት-ሞተር በ 500 ፊዚካል ማሽኖች ላይ ይኖራሉ, አዲሱ እቅድ ለጭነት ትልቅ የፊት ክፍል አለው. በመሳሪያዎች ላይ ብዙ ገንዘብ አጠራቅመናል - ወደ 5 ሚሊዮን ዶላር + 750 ሺህ ዶላር በዓመት የሥራ ማስኬጃ ወጪዎች።

በጣም ውስብስብ እና መጠነ ሰፊ ለሆኑ ችግሮች ምርጡን መፍትሄዎች ለማግኘት እንተጋለን. ብዙ አሉን - እና ለዚህ ነው ጎበዝ ገንቢዎችን በመረጃ ቋት ክፍል ውስጥ የምንፈልገው። ከወደዱት እና እንደዚህ አይነት ችግሮችን እንዴት እንደሚፈቱ ካወቁ, ስለ ስልተ ቀመሮች እና የውሂብ አወቃቀሮች ጥሩ እውቀት ካሎት, ቡድኑን እንዲቀላቀሉ እንጋብዝዎታለን. የእኛን ያነጋግሩ HRለዝርዝሮች.

ምንም እንኳን ይህ ታሪክ ስለእርስዎ ባይሆንም፣ እባክዎን ምክሮችን እንደምናከብር ልብ ይበሉ። ለጓደኛዎ ይንገሩ የገንቢ ክፍት ቦታዎች, እና የሙከራ ጊዜውን በተሳካ ሁኔታ ካጠናቀቀ, 100 ሺህ ሮቤል ጉርሻ ያገኛሉ.

ምንጭ: hab.com

አስተያየት ያክሉ