ذخیره - غیر متمرکز فایل ذخیره کول

ذخیره - غیر متمرکز فایل ذخیره کول

مخکې له دې چې زه پیل کړم، زه باید پریږدم پخوانۍ مقالې ته لینکنو دا روښانه شي چې موږ په ریښتیا د څه په اړه خبرې کوو.

پدې مقاله کې زه غواړم هغه پرت ته وګورم چې د فایلونو ذخیره کولو مسؤلیت لري، او دا څنګه د هر چا لخوا کارول کیدی شي. سټوریکل یو خپلواک کتابتون دی، د موسیقۍ سره مستقیم تړاو نلري. تاسو کولی شئ د هر ډول فایلونو ذخیره تنظیم کړئ.

په تیره مقاله کې، ما یو څه "بیرل رول کړ". 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 / sqrt (256)).

د فولډر نومونه د فایل هش څخه جوړ شوي ترڅو تاسو ژر تر ژره لاسرسی ومومئ که تاسو هش پیژنئ.

دا جوړښت د ډیری مختلف ذخیره کولو اړتیاو پراساس غوره شوی: د ضعیف فایل سیسټمونو ملاتړ ، چیرې چې دا د پام وړ ندي چې په یو فولډر کې ډیری فایلونه ولري ، د اړتیا په صورت کې د ټولو فولډرونو ګړندي تګ ، او داسې نور. یو ډول طلایی معنی.

کیشینګ

کله چې فایلونه اضافه کړئ، او همدارنګه کله چې دوی ترلاسه کوئ، د فایلونو لینکونه کیچ ته لیکل کیږي.
د دې څخه مننه، ډیری وختونه د فایل په لټه کې د ټولې شبکې څخه تیریدو ته اړتیا نشته. دا د لینکونو رسید ګړندی کوي او په شبکه کې بار کموي. کیچ کول د http سرلیکونو له لارې هم پیښیږي.

Isomorphy

مراجع په جاوا سکرپٹ کې لیکل شوی او isomorphic دی، دا په مستقیم ډول د براوزر څخه کارول کیدی شي. 
تاسو کولی شئ فایل پورته کړئ https://github.com/ortexx/storacle/blob/master/dist/storacle.client.js د سکریپټ او لاسرسي په توګه window.ClientStoracle یا د جوړونې سیسټم له لارې واردول، او داسې نور.

ځنډول شوي لینکونه

یو په زړه پوری خصوصیت هم " ځنډول شوی حواله" دی. دا د هغه فایل لینک دی چې په همغږي ډول ترلاسه کیدی شي، دلته او اوس، او فایل به پورته شي کله چې دا دمخه په ذخیره کې وموندل شي. دا خورا اسانه دی کله چې ، د مثال په توګه ، تاسو اړتیا لرئ په سایټ کې ځینې عکسونه وښایاست. موږ یوازې یو ځنډول شوی لینک په src کې واچاوه او بس. تاسو کولی شئ د ډیری قضیو سره راشي.

د مراجعینو API

  • async Client.prototype.storeFile() - فایل خوندي کول
  • async Client.prototype.getFileLink() - فایل ته مستقیم لینک ترلاسه کول
  • async Client.prototype.getFileLinks() - د ټولو نوډونو څخه فایل ته د مستقیم لینکونو لیست ترلاسه کول چیرې چې شتون لري
  • async Client.prototype.getFileToBuffer() - بفر ته فایل ترلاسه کړئ
  • async Client.prototype.getFileToPath() - د فایل سیسټم ته فایل ترلاسه کړئ
  • async Client.prototype.getFileToBlob() - فایل په بلاب کې ترلاسه کړئ (د براوزر نسخه لپاره)
  • async Client.prototype.removeFile() - یوه فایل حذف کړئ
  • Client.prototype.createRequestedFileLink() - ځنډول شوی لینک جوړ کړئ

فایلونه بل سرور ته صادر کړئ

بل نوډ ته د فایلونو لیږدولو لپاره، تاسو کولی شئ:

  • یوازې د تنظیماتو سره د ذخیره کولو ټول فولډر کاپي کړئ. (دا ممکن په راتلونکي کې کار ونکړي)
  • یوازې فولډر د فایلونو سره کاپي کړئ. مګر، پدې حالت کې، تاسو اړتیا لرئ چې یو ځل فنکشن چل کړئ node.normalizeFilesInfo()ټول معلومات بیا محاسبه کړئ او ډیټابیس ته یې دننه کړئ.
  • فعالیت وکاروئ node.exportFiles()کوم چې به د فایلونو کاپي پیل کړي.

د بنسټیز نوډ ترتیبات
کله چې د ذخیره کولو نوډ پیل کړئ، تاسو کولی شئ ټول اړین ترتیبات مشخص کړئ.
زه به خورا لومړني بیان کړم ، پاتې نور په ګیتوب کې موندل کیدی شي.

  • store.dataSize - د فایلونو سره د فولډر اندازه
  • store.tempSize - لنډمهاله فولډر اندازه
  • store.autoCleanSize - د ذخیره کولو لږترلږه اندازه چې باید وساتل شي. که تاسو دا پیرامیټر مشخص کړئ، نو هرڅومره ژر چې د ځای په تیریدو پیل شي ، لږترلږه کارول شوي فایلونه به حذف شي.
  • file.maxSize - د فایل اعظمي اندازه
  • file.minSize - د فایل اندازه لږترلږه
  • file.preferredDuplicates - په شبکه کې د فایل نقلونو غوره شمیره
  • file.mimeWhitelist - د اعتبار وړ فایل ډولونه
  • file.mimeBlacklist - د دوتنې ناسم ډولونه
  • file.extWhitelist - د اعتبار وړ فایل توسیع
  • file.extBlacklist - د غلط فایل توسیع
  • file.linkCache - د مختلف لینک کیشینګ تنظیمات

د ابعادو پورې اړوند نږدې ټول پیرامیټونه په مطلق او نسبي ارزښتونو کې دننه کیدی شي.

د کمانډ لاین له لارې کار کول
کتابتون د کمانډ لاین له لارې کارول کیدی شي. د دې کولو لپاره تاسو اړتیا لرئ دا په نړیواله کچه نصب کړئ: npm i -g ذخیره. له دې وروسته ، تاسو کولی شئ د پروژې لارښود څخه اړین عملونه پیل کړئ چیرې چې نوډ شتون لري. د مثال په ډول، سټورکل - یو ذخیره فایل -f ./file.txt -c ./config.jsد فایل اضافه کولو لپاره. ټولې کړنې په کې موندل کیدی شي https://github.com/ortexx/storacle/blob/master/bin/actions.js

تاسو ولې دې ته اړتیا لرئ؟

  • که تاسو غواړئ یو ډول غیر متمرکز پروژه رامینځته کړئ په کوم کې چې تاسو د مناسبو میتودونو په کارولو سره د فایلونو ذخیره کولو او کار کولو پلان لرئ. د مثال په توګه، د موسیقۍ پروژه د مقالې په پیل کې په لینک کې تشریح شوي ذخیره.
  • که تاسو په نورو پروژو کار کوئ چیرې چې تاسو اړتیا لرئ فایلونه په ویشل شوي ډول ذخیره کړئ. تاسو کولی شئ په اسانۍ سره خپله تړل شوې شبکه جوړه کړئ، په نرمۍ سره نوډونه تنظیم کړئ او د اړتیا په وخت کې نوي اضافه کړئ.
  • که تاسو اړتیا لرئ د خپلې ویب پاڼې فایلونه چیرته ذخیره کړئ او دا ستاسو لپاره خورا ډیر دی چې هرڅه پخپله ولیکئ. شاید دا کتابتون ستاسو په قضیه کې د نورو په پرتله غوره وي.
  • که تاسو یوه پروژه لرئ په کوم کې چې تاسو د فایلونو سره کار کوئ ، مګر غواړئ د براوزر څخه ټولې لاسوهنې ترسره کړئ. تاسو کولی شئ د سرور کوډ لیکلو څخه مخنیوی وکړئ.

زما اړیکې:

سرچینه: www.habr.com

Add a comment