Ориентация данных
Ориентация данных относится к тому, как табличные данные представлены в линейной модели памяти , например на диске или в памяти . Двумя наиболее распространенными представлениями являются ориентированные на столбцы (формат столбцов) и ориентированные на строки (формат строк). [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 для потоковой передачи (ориентировано на строки)
Ссылки [ править ]
- ^ Jump up to: а б с «Хранилища столбцов и хранилища строк: насколько они на самом деле отличаются?». SIGMOD '08: Материалы международной конференции ACM SIGMOD 2008 г. по управлению данными . дои : 10.1145/1376616.1376712 .
- ^ Jump up to: а б с д «Сжатие транзакционных данных в гибридных базах данных OLTP и OLAP». Труды Фонда VLDB . дои : 10.14778/2350229.2350258 .
- ^ Jump up to: а б с д «Апач ORC» . Проверено 21 мая 2024 г.
- ^ Jump up to: а б с д «Апач Паркет» . Проверено 21 мая 2024 г.
- ^ Jump up to: а б «Стрела Апача» . Проверено 21 мая 2024 г.
- ^ «Апач Авро» . Проверено 21 мая 2024 г.
- ^ «Вместо свопа: анализ сжатой оперативной памяти в Mac OS X и Linux» . Цифровое расследование . дои : 10.1016/j.diin.2014.05.011 .
- ^ Jump up to: а б с М. Франс Каашук, Джером Х. Зальцер. Принципы проектирования компьютерных систем . ISBN 978-0-12-374957-4 .
- ^ «Глава 4. Адресное пространство процесса (документация ядра Linux)» . Проверено 21 мая 2024 г.