Ориентация данных
Ориентация данных относится к тому, как табличные данные представлены в линейной модели памяти , например на диске или в памяти . Двумя наиболее распространенными представлениями являются ориентированные на столбцы (формат столбцов) и ориентированные на строки (формат строк). [ 1 ] [ 2 ]
Выбор ориентации данных — это компромиссное и архитектурное решение в базах данных , механизмах запросов и численном моделировании. [ 1 ] В результате этих компромиссов форматы, ориентированные на строки, чаще используются в онлайн-обработке транзакций (OLTP). форматы, ориентированные на столбцы, чаще используются в онлайн-аналитической обработке (OLAP). [ 2 ]
Примеры форматов, ориентированных на столбцы, включают Apache ORC , [ 3 ] Паркет Апач , [ 4 ] Апачская стрела , [ 5 ] форматы, используемые BigQuery , Amazon Redshift и Snowflake . Преобладающие примеры форматов, ориентированных на строки, включают CSV, форматы, используемые в большинстве реляционных баз данных в памяти , формат Apache Spark и Apache Avro . [ 6 ]
Описание
[ редактировать ]Табличные данные по своей природе двумерны: данные представлены в строках и столбцах. Однако современные операционные системы логически представляют данные в линейной модели памяти , как на диске, так и в памяти. [ 7 ] [ 8 ] [ 9 ] Следовательно, таблица в модели линейной памяти требует проецирования ее двумерных элементов в одномерное пространство. Ориентация данных относится к решению, принятому в этой проекции. Существует два основных варианта ориентации: ориентированная на строки и ориентированная на столбцы. [ 1 ] [ 2 ]
Рядно-ориентированный
[ редактировать ]В строковой ориентации элементы таблицы
столбец 1 | столбец 2 | столбец 3 |
---|---|---|
пункт 11 | пункт 12 | пункт 13 |
пункт 21 | пункт 22 | пункт 23 |
хранятся линейно как
пункт 11 | пункт 12 | пункт 13 | пункт 21 | пункт 22 | пункт 23 |
Т.е. каждая строка таблицы располагается одна за другой. В этой ориентации значения в одной строке расположены близко в пространстве (например, одинаковый адрес в адресуемом пространстве).
Примеры
[ редактировать ]- CSV-файл
- Форматы Postgres на диске и в памяти
- Формат Apache Spark в памяти
- Апач Авро
Столбцово-ориентированный
[ редактировать ]В столбцовой ориентации элементы таблицы
столбец 1 | столбец 2 | столбец 3 |
---|---|---|
пункт 11 | пункт 12 | пункт 13 |
пункт 21 | пункт 22 | пункт 23 |
хранятся линейно как
пункт 11 | пункт 21 | пункт 12 | пункт 22 | пункт 13 | пункт 23 |
Т.е. каждый столбец таблицы располагается один за другим. В этой ориентации значения в одном и том же столбце расположены близко в пространстве (например, одинаковый адрес в адресном пространстве).
Примеры
[ редактировать ]- BigQuery Форматы хранения данных и памяти
- Паркет Апач
- Апач ОРЦ
- Апач Стрела
- Формат DuckDB в памяти
- Формат Pandas в памяти
см. в списке СУБД, ориентированных на столбцы Дополнительные примеры .
Компромисс
[ редактировать ]Ориентация данных является важным архитектурным решением систем, обрабатывающих данные, поскольку оно приводит к важным компромиссам в производительности и хранении . [ 8 ] Ниже приведены избранные аспекты этого компромисса.
Произвольный доступ
[ редактировать ]Преимущества строкового подхода заключаются в быстром произвольном доступе к строкам. Столбцовая ориентация выигрывает от быстрого произвольного доступа к столбцам. В обоих случаях это результат меньшего количества промахов страниц или кэша при доступе к данным. [ 8 ]
Вставлять
[ редактировать ]Преимущества строковой ориентации заключаются в быстрой вставке новой строки. Преимущества столбцовой ориентации заключаются в быстрой вставке нового столбца.
Это измерение является важной причиной того, почему форматы, ориентированные на строки, чаще используются в онлайн-обработке транзакций (OLTP), поскольку они приводят к более быстрым транзакциям по сравнению с форматами, ориентированными на столбцы. [ 2 ]
Условный доступ
[ редактировать ]Преимущества строкового подхода заключаются в быстром доступе под фильтром. Столбцовая ориентация обеспечивает быстрый доступ к проекции. [ 4 ] [ 3 ]
Вычисление производительности
[ редактировать ]Столбцовая ориентация обеспечивает преимущества быстрых аналитических операций. Это результат возможности использования инструкций SIMD . [ 5 ]
Несжатый размер
[ редактировать ]Преимущества столбцовой ориентации заключаются в меньшем несжатом размере. Это результат возможности того, что эта ориентация предлагает представлять определенные типы данных с помощью специальных кодировок. [ 4 ] [ 3 ]
Например, таблица из 128 строк с логическим столбцом требует 128 байтов в формате, ориентированном на строки (один байт на логическое значение). но 128 бит (16 байт) в формате, ориентированном на столбцы (через растровое изображение). Другим примером является использование кодирования по длине серии для кодирования столбца.
Сжатый размер
[ редактировать ]Преимущества столбцовой ориентации за счет меньшего размера в сжатом виде. Это результат более высокой однородности внутри столбца, чем внутри нескольких строк. [ 4 ] [ 3 ]
Конвертация и обмен
[ редактировать ]Поскольку обе ориентации представляют одни и те же данные, можно преобразовать набор данных, ориентированный на строки, в набор данных, ориентированный на столбцы, и наоборот, за счет вычислений. В частности, расширенные механизмы запросов часто используют преимущества каждой ориентации и преобразуют одну ориентацию в другую в ходе своего выполнения. Например, запрос Apache Spark может
- читать данные из Apache Parquet (столбцово-ориентированный)
- загрузить его во внутренний формат памяти Spark (ориентированный на строки)
- преобразовать его в Apache Arrow для конкретных вычислений (ориентированных по столбцам)
- напишите его в Apache Avro для потоковой передачи (ориентировано на строки)
Ссылки
[ редактировать ]- ^ Перейти обратно: а б с «Хранилища столбцов и хранилища строк: насколько они на самом деле отличаются?». SIGMOD '08: Материалы международной конференции ACM SIGMOD 2008 г. по управлению данными . дои : 10.1145/1376616.1376712 .
- ^ Перейти обратно: а б с д «Сжатие транзакционных данных в гибридных базах данных OLTP и OLAP». Труды Фонда VLDB . дои : 10.14778/2350229.2350258 .
- ^ Перейти обратно: а б с д «Апач ORC» . Проверено 21 мая 2024 г.
- ^ Перейти обратно: а б с д «Апач Паркет» . Проверено 21 мая 2024 г.
- ^ Перейти обратно: а б «Стрела Апача» . Проверено 21 мая 2024 г.
- ^ «Апач Авро» . Проверено 21 мая 2024 г.
- ^ «Вместо свопа: анализ сжатой оперативной памяти в Mac OS X и Linux» . Цифровое расследование . дои : 10.1016/j.diin.2014.05.011 .
- ^ Перейти обратно: а б с М. Франс Каашук, Джером Х. Зальцер. Принципы проектирования компьютерных систем . ISBN 978-0-12-374957-4 .
- ^ «Глава 4. Адресное пространство процесса (документация ядра Linux)» . Проверено 21 мая 2024 г.