Открыть сервисСервис

Слайсы — тип файловой системы и формат данных

Слайс (от англ. slice — ломтик, долька) — термин, обозначающий фрагмент данных, выделенный из более крупной структуры, либо отдельный тип файловой системы, разработанный для работы с большими массивами данных. В русскоязычной вычислительной практике слово «слайсы» чаще всего применяется в трёх контекстах: файловые системы для хранения больших файлов (CephFS, GlusterFS), формат хранения геномных данных (CRAM/SAM) и графические/пространственные фрагменты в программировании и компьютерной графике.

Файловые системы на основе слайсов

В контексте распределённого хранения данных слайс — это непрерывный фрагмент файла, который является единицей распределения и восстановления. Файл, записываемый в такую систему, разбивается на несколько слайсов (обычно от 4 до 16), которые распределяются по разным узлам кластера. Для чтения файла собираются все его слайсы, при отказе одного узла данные восстанавливаются из избыточных блоков (erasure coding) или из реплик.

Такой подход реализован в системах:

  • CephFS — файловая система, построенная поверх распределённого хранилища Ceph RADOS, где данные автоматически распределяются по слайсам между узлами кластера;
  • GlusterFS — распределённая файловая система, в которой файлы разбиваются на блоки (транзитно называемые слайсами) и распределяются по томам-брикам;
  • Lustre — файловая система, применяемая в суперкомпьютерах, использующая объектно-блочное разделение данных.

В России подобные технологии применяются в отечественных системах хранения, например в проектах на базе Ceph для корпоративных и государственных облаков, а также в решениях отечественных вендоров (Yadro, «Ростех», «Код безопасность»).

Слайсы в биоинформатике

В биоинformatике под слайсами понимают фрагменты последовательностей ДНК, получаемые при секвенировании нового поколения (NGS). Аппараты секвенирования выдают миллионы коротких «слайсов» — прочтений длиной от 50 до 300 пар нуклеотидов, которые затем собираются в полную последовательность генома с помощью сборочных алгоритмов (assemblers).

Также слайсами называют срезы (slices) в формате BAM/CRAM — сжатых бинарных форматах хранения результатов секвенирования. Каждый слайс содержит часть прочтений, упорядоченных по позиции в геноме, что позволяет обращаться к отдельным участкам без загрузки всего файла.

Слайсы в программировании

В языках программирования slice — это непрерывный вид (view) на массив или строку, не создающий копии данных. Механизм слайсов реализован в Go, Rust (тип slice), Python (срезы списков и строк), Julia и других языках.

В Go слайс — структура из трёх полей: указатель на массив, длина и ёмкость. Слайсы динамически растут, что делает их основной структурой для работы с коллекциями. В Python срезы реализованы синтаксисом list[start:stop:step] и возвращают новый объект, но для строк и кортежей используются семантически аналогичные механизмы.

Слайсы в компьютерной графике и 3D

В 3D-моделировании и компьютерной графике слайс — это горизонтальный срез 3D-модели, используемый при аддитивном производстве (3D-печати). Модель разрезается на тонкие слои (слайсы) толщиной от 0,05 до 0,3 мм, и принтер воспроизводит их последовательно. Программы, разрезающие модель на слайсы, называются слайсерами (Cura, PrusaSlicer, Slic3r).

В веб-графике и картографии слайсы — это заранее нарезанные тайлы изображений карты разных уровней детализации, которые подгружаются клиенту по мере необходимости (технология, применяемая в OpenStreetMap, Яндекс.Картах и Google Maps).

Слайсы в веб-разработке

В контексте веб-интерфейсов «слайсы» — это горизонтальные фрагменты макета (отсюда название подхода «sliding sprite» или «CSS sprites»). В дизайне и вёрстке слайсинг — процесс разрезания макета (обычно из Photoshop или Figma) на отдельные изображения для последующей сборки веб-страницы.

История термина

Понятие «слайс» в вычислительной технике восходит к практике разбиения файлов на блоки для магнитных лент и дисковых накопителей в 1960-х годах. Широкое распространение термин получил в 2000-х годах с развитием распределённых файловых систем (Lustre, 2003; Ceph, 2006) и аддитивного производства. В программировании слайсы как отдельная абстракция закрепились в Go (2009) и Rust (2015).

Примечания

В русскоязычной документации и обзорах термин «слайсы» может вызывать неоднозначность, поскольку переводится как «ломтики», «дольки» или «срезы» в зависимости от контекста. В официальной документации Go используется транслитерация «слайс» (slice), в биоинформатике — «прочтение» (read) или «фрагмент» (fragment).

Источники

  • Гланц Я. «Go. Подробное руководство» — М.: Вильямс, 2020.
  • Weil S. et al. «Ceph: A Scalable, High-Performance Distributed File System» — OSDI, 2006.
  • Li H. et al. «The Sequence Alignment/Map format and SAMtools» — Bioinformatics, 2009.
  • Сайт проекта Lustre — lustre.org.
  • Документация GlusterFS — gluster.org.
  • Документация PrusaSlicer — help.prusa3d.com.
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru