---
title: Типы структур
seo:
  title: Типы структур — Data Engineer
  description: "Тема «Типы структур» для собеседования Data Engineer. С какими типами архитектуры сталкивались (якорь, звезда, снежинка, датаволт)? Что можете рассказать о концепции звезды, якоря, снежинки?"
---

[Все темы Data Engineer](/data-engineer)

## <strong>С какими типами архитектуры сталкивались (якорь, звезда, снежинка, датаволт)?</strong> [#q-14bee738d69b81aba7fece2a994c7075]

Назовите модели данных, с которыми работали, и объясните выбор на примере проекта. Звезда связывает факты с измерениями, снежинка дополнительно нормализует измерения; Anchor Modeling и Data Vault используют другие способы моделирования сущностей и истории.

---

## <strong>Что можете рассказать о концепции звезды, якоря, снежинки?</strong> [#q-14bee738d69b81c49902d7a121e08703]

Концепции звезды, якоря и снежинки являются архитектурными подходами к построению хранилищ данных&#58;

1. <strong>Архитектура звезды</strong>&#58; Центральная таблица фактов содержит
   фактические данные, а связанные с ней измерения представлены в виде отдельных
   таблиц. Это простая и понятная структура, обеспечивающая быстрый доступ к
   данным, но может привести к избыточности данных.

1. Anchor Modeling&#58; высоконормализованная модель с якорями для сущностей, атрибутами, связями и узлами для общих значений. Атрибуты и связи выделяются в отдельные таблицы; модель поддерживает хранение истории изменений.

1. <strong>Архитектура снежинки</strong>&#58; В этой архитектуре измерения
   дополнительно нормализованы, что означает, что они разделены на несколько
   таблиц для уменьшения избыточности данных. Это делает структуру более
   компактной и экономит место, но может усложнить запросы к данным из-за
   необходимости объединения таблиц.

:::note[Ссылки для изучения]

1. [Руководство по DWH](https://wiki.orionsoft.ru/ru/zvirt/latest/dwh-guide.adoc)
   :::

---

## <strong>Какие типы структур данных вы используете для хранения и обработки данных?</strong> [#q-14bee738d69b8185aebcdcfa56ba12f6]

Основные типы структур данных включают&#58;

{/* prettier-ignore */}
1. <strong>Массивы</strong>&#58;

    - Простые и эффективные для хранения однотипных данных.

1. <strong>Списки (</strong><code>Lists</code><strong>)</strong>&#58;

    - Гибкие структуры данных для хранения последовательностей элементов.

1. <strong>Множества (</strong><code>Sets</code><strong>)</strong>&#58;

    - Структуры данных для хранения уникальных элементов.

1. <strong>Словари (</strong><code>Dictionaries</code><strong>/</strong><code>Maps</code><strong>)</strong>&#58;

    - Ассоциативные массивы для хранения пар ключ-значение.

1. <strong>Стек (</strong><code>Stack</code><strong>) и очередь (</strong><code>Queue</code><strong>)</strong>&#58;

    - Структуры данных для хранения элементов с ограниченным доступом (LIFO и FIFO соответственно).

1. <strong>Деревья (</strong><code>Trees</code><strong>)</strong>&#58;

    - Структуры данных для представления иерархий и выполнения эффективных операций поиска и вставки.

1. <strong>Графы (</strong><code>Graphs</code><strong>)</strong>&#58;

    - Структуры данных для представления сетевых связей и выполнения сложных операций поиска.

:::note[Ссылки для изучения]

1. [Руководство по DWH](https://wiki.orionsoft.ru/ru/zvirt/latest/dwh-guide.adoc)
   :::

---

## <strong>Как выбрать подходящую структуру данных для конкретной задачи?</strong> [#q-14bee738d69b8143b7dbeebe641efc93]

Для выбора подходящей структуры данных необходимо учитывать следующие факторы&#58;

{/* prettier-ignore */}
1. <strong>Тип данных</strong>&#58;

    - Определите, какие данные нужно хранить и обрабатывать (однородные, ассоциативные, иерархические и т.д.).

1. <strong>Операции над данными</strong>&#58;

    - Определите, какие операции будут выполняться чаще всего (вставка, удаление, поиск, обновление).

1. <strong>Требования к производительности</strong>&#58;

    - Учитывайте требования к времени выполнения операций (время доступа, вставки, удаления).

1. <strong>Память</strong>&#58;

    - Учитывайте ограничения по объему используемой памяти.

1. <strong>Гибкость и расширяемость</strong>&#58;

    - Оцените, насколько структура данных должна быть гибкой и легко расширяемой.

:::note[Ссылки для изучения]

1. [Руководство по DWH](https://wiki.orionsoft.ru/ru/zvirt/latest/dwh-guide.adoc)
   :::

---

## <strong>Объясните преимущества и недостатки различных структур данных.</strong> [#q-14bee738d69b813590d5dbf9c597344f]

Основные структуры данных и их преимущества и недостатки&#58;

{/* prettier-ignore */}
1. <strong>Массивы</strong>&#58;

    - Преимущества&#58; Быстрый доступ к элементам по индексу, компактное хранение.

    - Недостатки&#58; Фиксированный размер, дорогие операции вставки и удаления.

1. <strong>Списки (</strong><code>Lists</code><strong>)</strong>&#58;

    - Преимущества&#58; Гибкость, динамическое изменение размера.

    - Недостатки зависят от реализации&#58; связный список даёт O(n) доступ по индексу; динамический массив, например Python list, даёт O(1), но вставки в середину требуют сдвига элементов.

1. <strong>Множества (</strong><code>Sets</code><strong>)</strong>&#58;

    - Преимущества&#58; Быстрый доступ и проверка уникальности.

    - Недостатки&#58; Высокие затраты на вставку и удаление в некоторых реализациях.

1. <strong>Словари (</strong><code>Dictionaries</code><strong>/</strong><code>Maps</code><strong>)</strong>&#58;

    - Преимущества&#58; Быстрый доступ по ключу.

    - Недостатки&#58; Дополнительные затраты памяти, сложность реализации.

1. <strong>Стек (</strong><code>Stack</code><strong>)</strong>&#58;

    - Преимущества&#58; Быстрые операции вставки и удаления (LIFO).

    - Недостатки&#58; Ограниченный доступ к элементам.

1. <strong>Очередь (</strong><code>Queue</code><strong>)</strong>&#58;

    - Преимущества&#58; Быстрые операции вставки и удаления (FIFO).

    - Недостатки&#58; Ограниченный доступ к элементам.

1. <strong>Деревья (</strong><code>Trees</code><strong>)</strong>&#58;

    - Преимущества&#58; Эффективные операции поиска, вставки и удаления.

    - Недостатки&#58; Сложность реализации, дополнительные затраты памяти.

1. <strong>Графы (</strong><code>Graphs</code><strong>)</strong>&#58;

    - Преимущества&#58; Представление сложных связей и сетей.

    - Недостатки&#58; Сложность реализации и анализа, высокие затраты памяти.

:::note[Ссылки для изучения]

1. [Руководство по DWH](https://wiki.orionsoft.ru/ru/zvirt/latest/dwh-guide.adoc)
   :::
