
Пеш аз он ки ман оғоз кунам, ман бояд тарк кунам , то маълум шавад, ки сухан дар бораи чй меравад.
Дар ин мақола ман мехоҳам қабатеро, ки барои нигоҳдории файлҳо масъул аст, таҳлил кунам ва чӣ гуна онро ҳар кас истифода бурда метавонад. Ягон робитаи мустақим ба мусиқӣ вуҷуд надорад. Шумо метавонед нигоҳдории ҳама гуна файлҳоро ташкил кунед.
Дар мақолаи қаблӣ ман каме фаротар рафтам ipfs, аммо он махсусан дар заминаи проблемае, ки ман ҳал мекардам, рӯй дод. Умуман, ман фикр мекунам, ки ин лоиҳа ҷолиб аст. Ман танҳо қобилияти эҷоди шабакаҳои гуногунро барои вазифаҳои гуногун бартарӣ медиҳам. Ин имкон медиҳад, ки беҳтар ташкил карда шавад ва сарбориро ба гиреҳҳои алоҳида ва умуман шабака кам кунад. Шумо ҳатто метавонед, агар лозим бошад, шабакаро дар як лоиҳа дар асоси меъёрҳои мушаххас ба қисмҳо тақсим кунед ва сарбории умумиро кам кунед.
Ҳамин тавр, storacle механизмро истифода мебарад барои ташкили шабака. Хусусиятҳои асосӣ:
- Файлҳоро тавассути ҳама гиреҳ ба анбор илова кардан мумкин аст.
- Файлҳо дар маҷмӯъ нигоҳ дошта мешаванд, на дар блокҳо.
- Ҳар як файл дорои хэши беназири мундариҷаи он барои кори минбаъда бо он мебошад.
- Барои эътимоднокии бештар файлҳоро такрор кардан мумкин аст.
- Шумораи файлҳо дар як гиреҳ танҳо аз ҷониби системаи файлӣ маҳдуд аст (истисно вуҷуд дорад, бештар дар бораи он дар зер)
- Шумораи файлҳо дар шабака бо имкониятҳои паҳншавандаи шумораи гиреҳҳои иҷозатдодашуда дар шабака маҳдуд аст, ки дар версияи дуюм метавонанд бо шумораи беохири гиреҳҳо кор кунанд (бештар дар ин бора дар мақолаи дигар)
Намунаи оддии он, ки ин аз барнома чӣ гуна кор мекунад:
Сервер:
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 ҷузвдон ва ду сатҳи лона иборат аст. Файлҳо дар ҷузвдонҳои сатҳи дуюм нигоҳ дошта мешаванд. Ин маънои онро дорад, ки агар 1 миллион файл мавҷуд бошад, ҳар як ҷузвдон тақрибан 62500 (1000000 / sqrt(256)) иборат хоҳад буд.
Номҳои ҷузвдонҳо аз хэши файл сохта мешаванд, то онҳо бо донистани хэш зуд дастрас шаванд.
Ин сохтор дар асоси шумораи зиёди талаботҳои гуногуни нигоҳдорӣ интихоб карда шудааст: дастгирии системаҳои файлии заиф, ки дар як ҷузвдон мавҷудияти файлҳои зиёд номатлуб аст, дар ҳолати зарурӣ гузариши зуд аз ҳама ҷузвдонҳо ва ғайра. Як навъ маънои тиллоӣ.
кэш
Ҳангоми илова кардани файлҳо, инчунин ҳангоми қабули онҳо, пайвандҳо ба файлҳо ба кэш навишта мешаванд.
Ин аксар вақт зарурати гузариши тамоми шабакаро барои дарёфти файл бартараф мекунад. Ин ҷустуҷӯи пайвандҳоро суръат мебахшад ва сарбории шабакаро кам мекунад. Кэш инчунин тавассути сарлавҳаҳои HTTP сурат мегирад.
Изоморфизм
Мизоҷ дар JavaScript навишта шудааст ва изоморфӣ аст, онро мустақиман аз браузер истифода бурдан мумкин аст.
Шумо метавонед файлро бор кунед ҳамчун скрипт ва дастрасӣ ба даст window.ClientStoracle ё воридот тавассути системаи сохтмон ва ғайра.
Истинодҳои таъхиршуда
Хусусияти дигари ҷолиб ин "пайванди таъхиршуда" мебошад. Ин истинод ба файлест, ки онро дар ин ҷо ва ҳоло ҳамзамон гирифтан мумкин аст ва файл пас аз пайдо шудани он дар анбор гирифта мешавад. Ин хеле қулай аст, вақте ки масалан, шумо бояд баъзе тасвирҳоро дар вебсайт намоиш диҳед. Танҳо истиноди таъхиршударо ба src илова кунед ва ҳамин тавр. Бисёр ҳолатҳои истифода вуҷуд доранд, ки шумо метавонед пайдо кунед.
API-и муштарӣ
- Асинc Client.prototype.storeFile() - захира кардани файл
- Асинc Client.prototype.getFileLink() - гирифтани истиноди мустақим ба файл
- Асинc Client.prototype.getFileLinks() - гирифтани рӯйхати истинодҳои мустақим ба файл аз ҳама гиреҳҳо, ки дар он ҷо мавҷуд аст
- Асинc Client.prototype.getFileToBuffer() — файлро ба буфер ворид кунед
- Асинc Client.prototype.getFileToPath() — файлро ба системаи файлӣ ворид кунед
- Асинc Client.prototype.getFileToBlob() — файлро дар blob гиред (барои версияи браузер)
- Асинc Client.prototype.removeFile() - файлро нест кунед
- Client.prototype.createRequestedFileLink() - истиноди таъхирнопазир эҷод кунед
Файлҳоро ба сервери дигар содир кунед
Барои интиқоли файлҳо ба гиреҳи дигар, шумо метавонед:
- Танҳо тамоми ҷузвдони нигоҳдорӣ ва танзимотро нусхабардорӣ кунед. (Ин метавонад дар оянда кор накунад.)
- Танҳо ҷузвдони дорои файлҳоро нусхабардорӣ кунед. Аммо, дар ин ҳолат, шумо бояд ин функсияро як маротиба иҷро кунед. node.normalizeFilesInfo()ки хамаи маълумотхоро аз нав хисоб карда, ба база дохил карда шаванд.
- Функсияро истифода баред node.exportFiles(), ки нусхабардории файлҳоро оғоз мекунад.
Танзимоти асосии гиреҳ
Ҳангоми оғоз кардани гиреҳи нигаҳдорӣ, шумо метавонед ҳамаи танзимоти заруриро муайян кунед.
Ман асоситаринҳоро тавсиф мекунам, боқимондаро дар GitHub пайдо кардан мумкин аст.
- storage.dataSize — андозаи ҷузвдон бо файлҳо
- storage.tempSize — андозаи папкаи муваққатӣ
- storage.autoCleanSize — андозаи ҳадди ақали нигоҳдорӣ барои нигоҳдорӣ. Агар шумо ин параметрро муайян кунед, файлҳои камтар истифодашуда баробари нокифоя шудани ҷой тоза карда мешаванд.
- file.maxSize — андозаи максималии файл
- file.minSize - андозаи ҳадди ақали файл
- file.preferredDuplicates — шумораи дилхоҳи нусхаҳои файл дар шабака
- file.mimeWhitellist — намудҳои файлҳои қобили қабул
- file.mimeBlacklist - намудҳои файлҳои нодуруст
- file.extWhitellist — васеъшавии файлҳои қобили қабул
- file.extBlacklist - васеъшавии файлҳои нодуруст
- file.linkCache - танзимоти гуногуни кэшкунии истинод
Қариб ҳамаи параметрҳои марбут ба андозаҳо метавонанд дар арзишҳои мутлақ ва нисбӣ муайян карда шаванд.
Кор тавассути сатри фармон
Китобхонаро тавассути сатри фармон истифода бурдан мумкин аст. Барои ин, онро дар саросари ҷаҳон насб кунед: npm i -g storacleПас аз ин, шумо метавонед амалҳои заруриро аз директорияи лоиҳа, ки гиреҳ ҷойгир аст, иҷро кунед. Барои намуна, storacle -a storeFile -f ./file.txt -c ./config.jsбарои илова кардани файл. Ҳама амалҳоро дар зер пайдо кардан мумкин аст
Чаро ба шумо ин лозим аст?
- Агар шумо хоҳед, ки лоиҳаи ғайримарказонидашуда эҷод кунед, ки ба шумо имкон медиҳад файлҳоро бо истифода аз усулҳои мувофиқ нигоҳ доред ва идора кунед. Масалан, лоиҳаи мусиқии дар истиноди аввали мақола тавсифшуда истифода мебарад нигоҳдорӣ.
- Агар шумо дар ҳама гуна лоиҳаҳои дигаре, ки нигаҳдории файлҳои тақсимшударо талаб мекунанд, кор карда истода бошед, шумо метавонед ба осонӣ шабакаи хусусии худро созед, гиреҳҳоро ба таври фасеҳ танзим кунед ва дар ҳолати зарурӣ наворҳои нав илова кунед.
- Агар ба шумо танҳо ҷойе барои нигоҳ доштани файлҳои вебсайти худ ниёз дошта бошед ва шумо наметавонед ҳама чизро худатон нависед, ин китобхона метавонад барои эҳтиёҷоти шумо беҳтар мувофиқ бошад.
- Агар шумо лоиҳае дошта бошед, ки дар он шумо бо файлҳо кор мекунед, вале мехоҳед, ки ҳама корҳоро аз браузер иҷро кунед, шумо метавонед аз навиштани коди сервер канорагирӣ кунед.
Алоқаҳои ман:
Манбаъ: will.com
