Неща, за които трябва да помислите, когато съхранявате данните си в облака
Накратко, говорим за факта, че като съхранявате данни в множество облаци, можете значително да увеличите тяхната наличност и безопасност. Под сигурност имаме предвид, че данните ще съществуват, дори ако един доставчик (или няколко) има сериозен проблем. Подробна мотивация в първата част.

В тази статия искам да анализирам теоретичната част за това кой метод е по-добър за създаване на излишни данни. И практическата част - какво можете да използвате в момента. За да избегна разочарование, това, за което пиша, са сравнително скорошни научни разработки, така че практическата част ще бъде доста лоша. Но се надявам да привлече вниманието на онези, които биха искали да разработят програма за такава задача.
Искам веднага да направя отклонение. Умишлено използвам английския термин erasure кодове в статията - не намерих този термин на руски. Това не са корекции на грешки по никакъв начин. Ако някой знае и ми каже, ще съм благодарен.
За щастие има различен подход, който може да спести както дисково пространство, така и честотна лента, без да нарушава наличността на данни. Това са кодове за изтриване.
Същността на кодовете за изтриване е, че след кодирането на определен файл се получават n фрагменти (при практическо изпълнение това също са файлове). Всякакви м от тези фрагменти са равни по размер на оригиналния файл. При това n> m. Всеки от фрагментите се съхранява в отделно облачно хранилище. За да възстановите оригиналния файл, просто съберете м всякакви фрагменти и декодиране. Останалите n-m фрагменти могат да бъдат изтрити, повредени, облачното хранилище, което ги съдържа, не е налично и т.н. По този начин система, използваща кодове за изтриване, може да се справи с появата на n - m грешки.
За тези, които искат да се задълбочат, описвам кодове за изтриване на MDS. Има и други видове кодове и те имат малко по-различни свойства. Ако има интерес, мога да опиша подробно с цялата математика.
Защо този подход е по-добър?
Излишен размер на данните
Съотношение на параметрите н и м можеш да избираш. Например можете да зададете параметрите така, че п = 2 * m, в този случай размерът на кодираните данни ще бъде точно два пъти повече от първоначалния размер. Например нека m = 5, n = 10. Тогава фрагментите след кодирането са 10 броя. Размерът на един фрагмент ще бъде равен на съотношението между размера на файла и м. Ако съберете някой от тези фрагменти и изчислите общия размер, той ще бъде равен на размера на оригиналния файл. Всеки от фрагментите се съхранява в един от 10 хранилища в облак. В този случай всички 5 хранилища могат да бъдат недостъпни едновременно, но това няма да повлияе на наличността на потребителски данни - файлът може да бъде възстановен.
В математическа нотация това изглежда така. Да кажем, че размерът на файла е L. Тогава размерът на един фрагмент е p = L/m, общ размер на излишните данни - 2 * L. Размерът на всички фрагменти, необходими за възстановяване, е L = p * m.
Нека сравним с репликацията. За да имате система, в която могат да се провалят 5 хранилища в облак, трябва да имате 6 хранилища в облак, всяко от които съхранява копие на файла. В този случай размерът на данните, съхранявани в системата, ще бъде 6 пъти размера на файла. Докато при използване на кодове за изтриване - ще трябва да запазите излишни данни два пъти по-големи от оригиналния файл.