BI Consult Desktop Logo BI Consult Mobile Logo
  • Russian BI Исследование российских bi
  • Перейти на Fine BI
  • Контакты
  • +7 812 334-08-01
    +7 499 608-13-06
  • Отправить сообщение
  • Главная
  • Продукты Эксперт-BI
    • Дистрибуция
    • Розничная торговля
    • Производство
    • Операторы связи
    • Страхование
    • Банки
    • Лизинг
    • Логистика
    • Нефтегазовый сектор
    • Медицина
    • Сеть ресторанов
    • E-Commerce
    • Сельское хозяйство
    • Энергетика
    • FMCG
    • Девелоперы
    • Маркетплейсы
    • Пищевая промышленность
    • Фармацевтика
    • Построение Data Platform
    • Цифровая трансформация
    • Управление по KPI
    • Финансы
    • Продажи
    • Склад
    • HR
    • Маркетинг
    • Внутренний аудит
    • Категорийный менеджмент
    • S&OP и FP&A
    • Геоаналитика
    • Цепочки поставок (SCM)
    • AutoML
    • Process Mining
    • IBP
    • ИТ (CIO)
    • Закупки
  • Платформы
    • Системы бизнес-анализа (BI)
    • Интегрированное бизнес-планирование (IBP)
    • Хранилища данных (DWH / Lakehouse)
    • Каталоги данных (Data Catalog)
    • Системы ETL и ELT
    • AI / Исскуственный интеллект
    • Шина данных (ESB)
    • Система управления мастер-данными (MDM)
    • Семантический слой
  • Услуги
    • Переход на отечественные BI и DWH системы
    • Консалтинг
    • Пилотный проект
    • Обучение и сертификация
    • Бесплатное обучение
    • Поддержка
    • Технические задания
    • Сбор требований для проекта внедрения BI-системы
    • CI/CD для DWH
    • Аудит BI приложений и DWH
    • Выделенная команда
    • Настойка и поддержка баз данных
    • Разработка BI Стратегии
    • Styleguide для BI-системы
    • Как выбрать BI-систему
  • Курсы
    • Учебный курс Информационная грамотность (Data Literacy)
    • Учебный курс для бизнес-аналитиков
    • Учебный курс для системных аналитиков
    • Учебный курс по Data Governance
    • Учебный курс Как стать CDO
    • Учебный курс Современная архитектура хранилища данных
    • Учебный курс по Fine BI
    • Учебный курс по FineReport
    • Учебный курс по DWH
    • Учебный курс по Data Science (ML, AI)
    • Учебный курс по PostgreSQL
    • Учебный курс по Greenplum
    • Учебный курс по Apache Airflow и NiFi
    • Учебный курс по Open-source BI
    • Учебный курс по ClickHouse
    • Учебный курс по DataLens
    • Учебный курс по Loginom
    • Учебный курс по Modus BI и ETL
    • Учебный курс по Visiology
    • Учебный курс по dbt (Data Build Tool)
  • Компания
    • Руководство
    • Новости
    • Клиенты
    • Карьера
    • Скачать
    • Контакты

BI

  • FineBI
  • FineReport
  • FineDataLink
  • FineChatBI (FineAI)
  • Коннекторы данных из 1С в BI
  • Airflow / Nifi
  • Visiology
  • PIX BI
  • Modus BI
  • Yandex.DataLens
  • Open-source BI: Superset/Metabase
  • Luxms BI
  • AW BI + Alpha BI
  • FlyBI + Форсайт. Аналитическая Платформа
  • Loginom
  • Триафлай
  • AI / Исскуственный интеллект
  • Optimacros
  • Навигатор BI
  • Семантический слой

СУБД

  • Arenadata
  • ClickHouse
  • Greenplum
  • Postgres Professional
  • TData

Другое

  • Построение Data Platform
    • Аналитическое хранилище данных
    • Data Lake и Data Engineering
    • Подробнее про Data Lake
    • Внедрение Lakehouse
      • Apache Doris
      • StarRocks
      • Trino
    • Миграция витрин из пропиетарных DWH на новый стек
    • Учебный курс "Современная архитектура хранилища данных"
Главная » Курсы по системам бизнес-анализа и методологии » Учебный курс по PostgreSQL » Как устроен PostgreSQL » Структура файла таблицы HEAP PostgreSQL

Структура файла таблицы HEAP PostgreSQL

Файл данных (heap - таблицы, карты свободного пространства и карты видимости) разделен на страницы (или блоки) фиксированной длины, которая по умолчанию составляет 8192 байта (8 КБ). Страницы в каждом файле пронумерованы, начиная с 0, эти номера называются номерами блоков. Если файл переполнен, PostgreSQL добавляет новую пустую страницу в конец файла для того, чтобы увеличить его размер.

Внутренняя структура страниц зависит от типа файла данных. В этом разделе описывается структура таблиц, поскольку эта информация потребуется в следующих главах.

Страница в таблице содержит три типа данных:

  • Кортеж - это основной строительный блок реляционных баз данных, представляющий собой упорядоченные элементы данных или записи в таблице. Кортежи обеспечивают эффективную организацию, хранение и поиск многомерных данных, играя важную роль в современной разработке ПО.
     

Внутренняя структура кортежа подробно описана в Разделах 5.2 и 9, поскольку  данная тема подразумевает глубокие знания в области механизма управления параллельным доступом к данным (CC), а также журналов предзаписи (WAL) в PostgreSQL.

  • Указатель на строку – Это переменная, которая содержит адрес области данных (переменной/структуры/объекта/функции и т.п.) в памяти микроконтроллера, точнее – его самого первого блока, байта. Зная адрес первого байта в блоке данных, можно получить контроль над данными по этому адресу, но нужно знать размер этого блока. Поэтому при создании указателя мы указываем, на какой тип данных он указывает, это может быть любой тип данных. Длина указателя составляет 4 байта.

Указатели строк образуют простой массив, который играет роль индекса к кортежам. Каждый указатель пронумерован, начиная с 1. Когда на страницу добавляется новый кортеж, в массив также помещается новый указатель на строку, указывающий на этот кортеж.

  • Данные заголовка страницы  – содержат общую информацию о странице, включая указатели свободного пространства. Первые 24 байта каждой страницы образуют заголовок страницы (PageHeaderData).
     

Данные заголовка страницы описаны ниже:

PageHeaderData
typedef struct PageHeaderData @src/include/storage/bufpage.h
{
  /* XXX LSN is member of *any* block, not only page-organized ones */
  PageXLogRecPtr       pd_lsn;      /* LSN: next byte after last byte of xlog
                                                                                     * record for last change to this page */
  uint16                          pd_checksum; /* checksum */
  uint16                          pd_flags;    /* flag bits, see below */
  LocationIndex            pd_lower;    /* offset to start of free space */
  LocationIndex            pd_upper;    /* offset to end of free space */
  LocationIndex            pd_special;  /* offset to start of special space */
  uint16                          pd_pagesize_version;
  TransactionId             pd_prune_xid;/* oldest prunable XID, or zero if none */
  ItemIdData                  pd_linp[1];  /* beginning of line pointer array */
} PageHeaderData;
 
typedef PageHeaderData *PageHeader;
 
typedef uint64 XLogRecPtr;

 

  • pd_lsn – данный тип данных применяется для хранения значения LSN (последовательный номер в журнале, Log Sequence Number), которое представляет собой указатель на позицию в журнале WAL. Этот тип содержит XLogRecPtr и является внутренним системным типом PostgreSQL . Длина данного типа данных составляет 8 байт. Более подробная информация по данной теме предоставлена в подразделе 9.1.
  • pd_checksum – данный тип данных содержит контрольную сумму страницы. Обратите внимание, что эта переменная доступна в версиях 9.3 и новее.
    • pd_lower, pd_upper – pd_lower указывает на смещение до начала свободного пространства, pd_upper – на смещение до конца свободного пространства;
    • pd_special  – переменная, предназначенная для индексов, указывает на смещение до начала специального пространства.

 

Пространство между концом указателей строк и началом нового кортежа называется свободным пространством.

Для определения кортежа в рамках таблицы используется идентификатор кортежа (Tuple Identifier или TID) . Он указывает на физическое положение конкретной версии строки. TID занимает 6 байт и состоит из номера блока (страницы) и номера строки внутри блока. Более подробная информация представлена в подразделе 1.4.

Примечание: структура PageHeaderData описана в src/include/storage/bufpage.h.

Примечание: хранение сложных типов данных, особенно тех, значения которых могут быть очень большого размера – непростая задача. В PostgreSQL физический размер одной записи таблицы не может превышать размер страницы (по умолчанию – 8 кб). Каждая строка должна помещаться целиком на одну страницу: нет способа «продолжить» строку на следующей странице. Для длинных строк используется технология, названная TOAST (The Oversized Attributes Storage Technique). Для получения более детальной информации рекомендуем обратиться к оффициальной документации PostgreSQL.

 

 

Узнать стоимость решенияЗапросить видео презентацию

← Предыдущая статья
Физическая структура кластера баз данных PostgreSQL
Следующая статья →
Методы записи и чтения кортежей PostgreSQL

Решения

Анализировать ФинансыУвеличивайте ПродажиОптимальный Склад и ЛогистикаМаркетинговые Метрики

Клиенты
  • "Холодильник.ру" - крупнейший в России интернет-магазин бытовой техники и электроники. Компания была основана в 2003 году и за почти 20 лет работы завоевала лидирующие позиции на рынке онлайн ритейла. По данным исследовательского агентства Data Insight, "Холодильник.ру" входит в top-10 крупнейших интернет-магазинов России в категории "электроника и бытовая техника". Компания имеет развитую логистическую инфраструктуру и ежедневно осуществляет более 3500 доставок заказов по всей стране.

  • ГК «Акрон Холдинг», одно из крупнейших в России промышленно-металлургических предприятий, запустил проект по модернизации управления данными. В качестве целевого решения для анализа ключевых данных компания выбрала систему PIX BI. В компании уже более 100 пользователей PIX BI, и в этом году в планах увеличить их число в два раза.

  • Группа компаний "Дёке" производит товары для внешней отделки загородных домов. Ассортимент включает виниловый сайдинг, фасадные панели, водосточные системы, чердачные лестницы и гибкую битумную черепицу. Продукция Дёке вызывает гордость у сотрудников и партнеров компании.

  • Компания ООО "Комус" - один из лидеров российского рынка оптовых продаж офисных товаров и техники. Компания поставляет широкий ассортимент продукции - от канцелярских принадлежностей до компьютерной техники и офисной мебели.

  • Решения
    • Дистрибуция
    • Розничная торговля
    • Производство
    • Операторы связи
    • Страхование
    • Банки
    • Лизинг
    • Логистика
    • Нефтегазовый сектор
    • Медицина
    • Сеть ресторанов
    • E-Commerce
    • Энергетика
    • Фармацевтика
  • Услуги
    • Переход на отечественные BI и DWH
    • Консалтинг
    • Пилотный проект
    • Обучение и сертификация
    • Бесплатное обучение
    • Техническая поддержка
    • Технические задания
    • Сбор требований для проекта внедрения BI-системы
    • CI/CD для DWH
    • Аудит BI приложений
    • Выделенная команда
    • Настойка и поддержка баз данных
    • Разработка BI Стратегии
    • Styleguide для BI-системы
    • Как выбрать BI-систему
  • Платформы
    • FineBI
    • FineReport
    • FineDataLink
    • Коннекторы данных из 1С в BI
    • Airflow + NiFi
    • Visiology
    • Luxms BI
    • Modus BI
    • PIX BI
    • Arenadata
    • ClickHouse
    • Greenplum
    • Postgres Professional
    • Open-source BI: Superset/Metabase
    • Loginom
    • Yandex.DataLens
    • AI / Исскуственный интеллект
    • Optimacros
    • Шины данных
  • Курсы
    • Учебный курс Информационная грамотность
    • Учебный курс для бизнес-аналитиков
    • Учебный курс для системных аналитиков
    • Учебный курс по Data Governance
    • Учебный курс Как стать CDO
    • Учебный курс Современная архитектура хранилища данных
    • Учебный курс по Fine BI
    • Учебный курс по FineReport
    • Учебный курс по DWH
    • Учебный курс по Data Science (ML, AI)
    • Учебный курс по PostgreSQL
    • Учебный курс по Apache Airflow и NiFi
    • Учебный курс по Open-source BI
    • Учебный курс по ClickHouse
    • Учебный курс по DataLens
    • Учебный курс по Loginom
    • Учебный курс по Modus BI и ETL
    • Учебный курс по Visiology
    • Учебный курс по dbt
  • Функциональные решения
    • Создание Data Lake
    • Цифровая трансформация
    • Управление по KPI
    • Финансы
    • Продажи
    • Склад
    • HR
    • Маркетинг
    • Внутренний аудит
    • Категорийный менеджмент
    • S&OP и прогнозная аналитика
    • Геоаналитика
    • Цепочки поставок (SCM)
    • AutoML
    • Process Mining
    • Сквозная аналитика
  • Компания
    • О нас
    • Руководство
    • Новости
    • Клиенты
    • Скачать
    • Контакты
    • Политика конфиденциальности
RutubeVkontakteLinkedInYouTube
ООО "Би Ай Консалт",
ИНН: 7811437757,
ОГРН: 1097847154184
199178, Россия,
Санкт-Петербург,
6-ая линия В.О., Д. 63, 4 этаж
Тел: +7 (812) 334-08-01
Тел: +7 (499) 608-13-06
E-mail: info@biconsult.ru

 

 

 

 

 

×

Пользуясь сайтом, вы соглашаетесь с использованием cookies и политикой конфиденциальности.