ማከማቻ - ያልተማከለ የፋይል ማከማቻ

ማከማቻ - ያልተማከለ የፋይል ማከማቻ

ከመጀመሬ በፊት መሄድ አለብኝ ወደ ቀዳሚው መጣጥፍ አገናኝበትክክል ስለ ምን እየተነጋገርን እንዳለ ግልጽ እንዲሆን.

በዚህ ጽሑፍ ውስጥ ፋይሎችን ለማከማቸት ኃላፊነት ያለው ንብርብር እና በማንኛውም ሰው እንዴት መጠቀም እንደሚቻል ማየት እፈልጋለሁ. ስቶራክል ራሱን የቻለ ቤተ መጻሕፍት ነው።, ከሙዚቃ ጋር ቀጥተኛ ግንኙነት የለም. የማንኛውም ፋይሎች ማከማቻ ማደራጀት ይችላሉ።

በቀደመው ጽሁፍ ላይ ትንሽ "በርሜሉን ተንከባለልኩ". ipfsነገር ግን ይህ እኔ እየፈታሁት ባለው ችግር አውድ ውስጥ በትክክል ተፈጽሟል። በአጠቃላይ, ይህ ፕሮጀክት ጥሩ ነው ብዬ አስባለሁ. ለተለያዩ ስራዎች የተለያዩ አውታረ መረቦችን የመፍጠር ችሎታን እመርጣለሁ. ይህ አወቃቀሩን በተሻለ ሁኔታ እንዲያደራጁ እና በተናጥል አንጓዎች እና በአጠቃላይ አውታረ መረቡ ላይ ያለውን ጭነት እንዲቀንሱ ያስችልዎታል. በአንድ ፕሮጀክት ማዕቀፍ ውስጥ እንኳን, አስፈላጊ ከሆነ, በአንዳንድ መመዘኛዎች መሰረት ኔትወርክን ወደ ቁርጥራጮች መከፋፈል ይችላሉ, ይህም አጠቃላይ ጭነት ይቀንሳል.

ስለዚህ ስቶራክል ዘዴውን ይጠቀማል ሊሰራጭ የሚችል አውታረ መረብ ለማደራጀት. ቁልፍ ባህሪያት:

  • ፋይሎች በማንኛውም መስቀለኛ መንገድ ወደ ማከማቻው ሊጨመሩ ይችላሉ።
  • ፋይሎች የሚቀመጡት በብሎኮች ሳይሆን ሙሉ በሙሉ ነው።
  • እያንዳንዱ ፋይል ከእሱ ጋር ለተጨማሪ ስራ የራሱ የሆነ ልዩ ይዘት አለው.
  • ፋይሎች ለበለጠ አስተማማኝነት ሊባዙ ይችላሉ።
  • በአንድ መስቀለኛ መንገድ ላይ ያሉ የፋይሎች ብዛት በፋይል ስርዓቱ ብቻ የተገደበ ነው (ልዩነት አለ፣ ከዚህ በታች ተጨማሪ)
  • በኔትወርኩ ውስጥ ያሉ የፋይሎች ብዛት በኔትወርኩ ውስጥ ባሉ ትክክለኛ አንጓዎች ቁጥር መሠረት በተሰራጩ ችሎታዎች የተገደበ ነው ፣ ይህም በሁለተኛው ስሪት ውስጥ ማለቂያ ከሌላቸው የአንጓዎች ብዛት ጋር መሥራት ይችላል (በሌላ ጽሑፍ ውስጥ ስለዚህ ጉዳይ)

ይህ በአጠቃላይ ከፕሮግራሙ እንዴት እንደሚሰራ ቀላል ምሳሌ:

አገልጋይ፡

const  Node = require('storacle').Node;

(async () => {
  try {
    const node = new Node({
      port: 4000,
      hostname: 'localhost'
    });
    await node.init();
  }
  catch(err) {
    console.error(err.stack);
    process.exit(1);
  }
})();

ደንበኛ፡

const  Client = require('storacle').Client;

(async () => {
  try {
    const client = new  Client({
      address: 'localhost:4000'
    });
    await client.init();
    const hash = await client.storeFile('./my-file');
    const link = await client.getFileLink(hash); 
    await client.removeFile(hash);
  }
  catch(err) {
    console.error(err.stack);
    process.exit(1);
  }
})();

ውስጠ እይታ

ከመጋረጃው በታች ምንም የሚያምር ነገር የለም። ስለፋይሎች ብዛት፣ አጠቃላይ መጠኖቻቸው እና ሌሎች ነጥቦቻቸው በማህደረ ትውስታ የውሂብ ጎታ ውስጥ ተከማችተው ፋይሎች ሲሰረዙ እና ሲታከሉ ይሻሻላሉ፣ ስለዚህ የፋይል ስርዓቱን በተደጋጋሚ ማግኘት አያስፈልግም። የተለየ የማከማቻ መጠን ሲደርስ ፋይሎችን ማሰራጨት ሲፈልጉ ቆሻሻ ሰብሳቢውን ማንቃት ነው፣ እና አዳዲሶችን መጨመር አለመከልከል ነው። በዚህ ሁኔታ, ማከማቻውን ማለፍ አለብዎት, እና ከብዙ ፋይሎች (> አንድ ሚሊዮን ይበሉ) ጋር አብሮ መስራት ወደ ከፍተኛ ጭነት ሊያመራ ይችላል. እና ያነሱ ፋይሎችን ማከማቸት እና ተጨማሪ አንጓዎችን ማሄድ የተሻለ ነው. "ማጽጃው" ከተሰናከለ, እንደዚህ አይነት ችግር የለም.

የፋይል ማከማቻው 256 ማህደሮች እና 2 ደረጃዎችን ያካትታል። ፋይሎች በሁለተኛ ደረጃ አቃፊዎች ውስጥ ይቀመጣሉ. 1 ሚሊዮን ካለ ማለት ነው። በእያንዳንዱ አቃፊ ውስጥ 62500 ያህል ፋይሎች ይኖራሉ (1000000 / ስኩዌር (256))።

ሃሹን ካወቁ በፍጥነት እንዲደርሱበት የአቃፊዎቹ ስሞች የተፈጠሩት ከፋይል ሃሽ ነው።

ይህ መዋቅር በበርካታ የተለያዩ የማከማቻ መስፈርቶች ላይ ተመርኩዞ የተመረጠ ነው ለደካማ የፋይል ስርዓቶች ድጋፍ, በአንድ አቃፊ ውስጥ ብዙ ፋይሎች እንዲኖሩ የማይፈለግበት, አስፈላጊ ከሆነ ሁሉንም አቃፊዎች በፍጥነት ማለፍ, ወዘተ. አንዳንድ ዓይነት ወርቃማ አማካኝ.

መሸጎጫ

ፋይሎችን ሲጨምሩ እና ሲቀበሉ ፣ ወደ ፋይሎች የሚወስዱ አገናኞች ወደ መሸጎጫው ይፃፋሉ።
ለዚህም ምስጋና ይግባውና ብዙውን ጊዜ ፋይልን ለመፈለግ አጠቃላይ አውታረ መረብን ማለፍ አያስፈልግም። ይህ አገናኞችን መቀበልን ያፋጥናል እና በኔትወርኩ ላይ ያለውን ጭነት ይቀንሳል. መሸጎጥ እንዲሁ በ http ራስጌዎች በኩል ይከሰታል።

ኢሶሞርፊ

ደንበኛው በጃቫስክሪፕት የተፃፈ እና isomorphic ነው, በቀጥታ ከአሳሹ ጥቅም ላይ ሊውል ይችላል. 
ፋይሉን መጫን ይችላሉ https://github.com/ortexx/storacle/blob/master/dist/storacle.client.js እንደ ስክሪፕት እና መዳረሻ መስኮት.ClientStoracle ወይም በግንባታ ስርዓቱ በኩል ማስመጣት, ወዘተ.

የዘገዩ አገናኞች

አንድ አስደሳች ባህሪ ደግሞ "የዘገየ ማጣቀሻ" ነው. ይህ እዚህ እና አሁን በአንድ ጊዜ ሊገኝ የሚችል ፋይል አገናኝ ነው እና ፋይሉ ቀድሞውኑ በማከማቻው ውስጥ ሲገኝ ወደ ላይ ይወጣል። ለምሳሌ በጣቢያው ላይ አንዳንድ ስዕሎችን ማሳየት ሲያስፈልግ ይህ በጣም ምቹ ነው. የዘገየ አገናኝን በ src ውስጥ እናስቀምጠዋለን እና ያ ነው። ብዙ ጉዳዮችን ይዘው መምጣት ይችላሉ።

የደንበኛ ኤፒአይ

  • አመሳስል Client.prototype.storeFile() - ፋይሉን በማስቀመጥ ላይ
  • አመሳስል Client.prototype.getFileLink() - ወደ ፋይሉ ቀጥተኛ አገናኝ ማግኘት
  • አመሳስል Client.prototype.getFileLinks() - ከፋይሉ ጋር ካሉት ሁሉም መስቀለኛ መንገዶች የቀጥታ አገናኞች ዝርዝር ማግኘት
  • አመሳስል Client.prototype.getFileToBuffer() - ፋይሉን ወደ መያዣው ውስጥ ያስገቡት።
  • አመሳስል Client.prototype.getFileToPath() - በፋይል ስርዓቱ ውስጥ ፋይልን ያስገቡ
  • አመሳስል Client.prototype.getFileToBlob() - ፋይሉን በብሎብ ያግኙ (ለአሳሽ ስሪት)
  • አመሳስል Client.prototype.removeFile() - ፋይል ሰርዝ
  • Client.prototype.createRequestedFileLink() - የዘገየ አገናኝ ይፍጠሩ

ፋይሎችን ወደ ሌላ አገልጋይ ይላኩ።

ፋይሎችን ወደ ሌላ መስቀለኛ መንገድ ለማስተላለፍ የሚከተሉትን ማድረግ ይችላሉ፡-

  • የማከማቻ ማህደሩን ከቅንብሮች ጋር ብቻ ይቅዱ። (ይህ ወደፊት ላይሰራ ይችላል)
  • ማህደሩን በፋይሎች ብቻ ይቅዱ። ነገር ግን, በዚህ ሁኔታ, ተግባሩን አንድ ጊዜ ማስኬድ ያስፈልግዎታል node.normalizeFilesInfo()ሁሉንም ውሂብ እንደገና ለማስላት እና ወደ የውሂብ ጎታ ውስጥ ለማስገባት.
  • ተግባርን ተጠቀም node.exportFiles()ፋይሎችን መቅዳት የሚጀምረው.

መሰረታዊ የመስቀለኛ መንገድ ቅንጅቶች
የማከማቻ መስቀለኛ መንገድን ሲጀምሩ ሁሉንም አስፈላጊ ቅንብሮችን መግለጽ ይችላሉ.
በጣም መሠረታዊ የሆኑትን እገልጻለሁ, የተቀሩት በ Github ላይ ይገኛሉ.

  • ማከማቻ.የውሂብ መጠን - የአቃፊው መጠን ከፋይሎች ጋር
  • storage.tempSize - ጊዜያዊ የአቃፊ መጠን
  • storage.autoCleanSize - መያዝ ያለበት ዝቅተኛው የማከማቻ መጠን. ይህን ግቤት ከገለጹ፣ ልክ ቦታ ማለቅ እንደጀመረ፣ በጣም ትንሽ ጥቅም ላይ የዋሉ ፋይሎች ይሰረዛሉ።
  • file.maxSize - ከፍተኛው የፋይል መጠን
  • file.minSize - ዝቅተኛው የፋይል መጠን
  • file.preferredDuplicates - በአውታረ መረቡ ላይ የሚመረጡ የፋይል ብዜቶች ብዛት
  • file.mimeWhitelist - ትክክለኛ የፋይል አይነቶች
  • file.mimeBlacklist - ልክ ያልሆኑ የፋይል አይነቶች
  • file.extWhitelist - ትክክለኛ የፋይል ቅጥያዎች
  • file.extBlacklist - ልክ ያልሆኑ የፋይል ቅጥያዎች
  • ፋይል.linkCache - የተለያዩ አገናኝ መሸጎጫ ቅንብሮች

ከልኬቶች ጋር የሚዛመዱ ሁሉም መለኪያዎች ማለት ይቻላል በሁለቱም ፍጹም እና አንጻራዊ እሴቶች ውስጥ ሊገቡ ይችላሉ።

በትእዛዝ መስመር በኩል በመስራት ላይ
ቤተ መፃህፍቱ በትእዛዝ መስመር በኩል መጠቀም ይቻላል. ይህንን ለማድረግ በአለምአቀፍ ደረጃ መጫን ያስፈልግዎታል: npm i -g ማከማቻ. ከዚህ በኋላ መስቀለኛ መንገድ ካለበት የፕሮጀክት ማውጫ ውስጥ አስፈላጊዎቹን ድርጊቶች ማስጀመር ይችላሉ. ለምሳሌ, ማከማቻ -የማከማቻ ፋይል -f ./file.txt -c ./config.jsፋይሉን ለመጨመር. ሁሉም ድርጊቶች በ ውስጥ ይገኛሉ https://github.com/ortexx/storacle/blob/master/bin/actions.js

ለምን ይህ ሊያስፈልግህ ይችላል?

  • ምቹ ዘዴዎችን በመጠቀም ፋይሎችን ለማከማቸት እና ለመስራት ያቀዱበት አንዳንድ ያልተማከለ ፕሮጀክት መፍጠር ከፈለጉ። ለምሳሌ, በአንቀጹ መጀመሪያ ላይ በአገናኙ ላይ የተገለጸው የሙዚቃ ፕሮጀክት ይጠቀማል ማከማቻ.
  • ፋይሎችን በተከፋፈለ መልኩ ማከማቸት በሚፈልጉባቸው ሌሎች ፕሮጀክቶች ላይ ከሰሩ. በቀላሉ የተዘጋ አውታረ መረብዎን መገንባት፣ በተለዋዋጭነት ኖዶችን ማዋቀር እና ሲያስፈልግ አዳዲሶችን ማከል ይችላሉ።
  • የድር ጣቢያዎን ፋይሎች አንድ ቦታ ማከማቸት ከፈለጉ እና ሁሉንም ነገር እራስዎ ለመፃፍ በጣም ብዙ ከሆነ። ምናልባት ይህ ቤተ-መጽሐፍት በእርስዎ ጉዳይ ውስጥ ካሉት ከሌሎች በተሻለ ሁኔታ ተስማሚ ሊሆን ይችላል።
  • ከፋይሎች ጋር የሚሰሩበት ፕሮጀክት ካለዎት ነገር ግን ሁሉንም ማጭበርበሮችን ከአሳሹ ማከናወን ይፈልጋሉ። የአገልጋይ ኮድ ከመጻፍ መቆጠብ ትችላለህ።

የእኔ እውቂያዎች፡-

ምንጭ: hab.com

በDDoS ጥበቃ፣ VPS VDS አገልጋዮች ለጣቢያዎች አስተማማኝ ማስተናገጃ ይግዙ 🔥 አስተማማኝ የድር ጣቢያ ማስተናገጃ በዲዶኤስ ጥበቃ፣ በቪፒኤስ ቪዲኤስ አገልጋዮች ይግዙ | ProHoster