---
metadata:
  - name: generator
    content: Diplodoc Platform v5.50.6
alternate:
  - https://ytsaurus.tech/docs/en/user-guide/storage/objects.md
  - https://ytsaurus.tech/docs/ru/user-guide/storage/objects.md
---
> **Documentation Index:** Fetch the complete configuration index at https://ytsaurus.tech/docs/ru/llms.txt

<!-- source: ru/_includes/user-guide/storage/objects.md -->
# Объекты

В разделе описаны основные [типы объектов](https://ytsaurus.tech/docs/ru/user-guide/storage/objects.md#object_types) системы YTsaurus. Представлена таблица с ключевыми [атрибутами каждого объекта](https://ytsaurus.tech/docs/ru/user-guide/storage/objects.md#attributes) и описано понятие [идентификатора объекта](https://ytsaurus.tech/docs/ru/user-guide/storage/objects.md#object_ids).

## Типы объектов { #object_types }

Основные типы объектов в YTsaurus:

* [Файлы](https://ytsaurus.tech/docs/ru/user-guide/storage/objects.md#files);
* [Таблицы](https://ytsaurus.tech/docs/ru/user-guide/storage/objects.md#tables);
* [Ссылки](https://ytsaurus.tech/docs/ru/user-guide/storage/objects.md#links);
* [YSON-документы](https://ytsaurus.tech/docs/ru/user-guide/storage/objects.md#yson_doc);
* [Примитивные типы](https://ytsaurus.tech/docs/ru/user-guide/storage/objects.md#primitive_types);
* [Системные объекты](#internal_objects).

Описание объектов занимает большую часть метаинформации, которая хранится в реплицированном виде в памяти мастер-серверов [Кипариса](https://ytsaurus.tech/docs/ru/user-guide/storage/cypress.md). Кипарис содержит в себе различную системную информацию, а также данные о том, где хранятся пользовательские данные.

Для любого узла Кипариса может присутствовать несколько версий, поскольку в контексте каждой [транзакции](https://ytsaurus.tech/docs/ru/user-guide/storage/transactions.md) состояние узла может выглядеть по-разному.

### Файлы { #files }

Это узлы Кипариса, имеющие тип **file** и предназначенные для хранения больших бинарных данных в системе.
Файлы состоят из множества чанков — [являются владельцами чанков](https://ytsaurus.tech/docs/ru/user-guide/storage/chunks.md#attributes).
Чанки организованы в виде специальной древовидной структуры данных, в которой листьями являются чанки, а промежуточными вершинами — чанк-листы.

Подробнее можно прочитать в разделе [Файлы](https://ytsaurus.tech/docs/ru/user-guide/storage/files.md).

### Таблицы { #tables }

Это узлы типа **table**, предназначенные для хранения больших пользовательских данных. Таблицы бывают двух типов: [Статические](https://ytsaurus.tech/docs/ru/user-guide/storage/static-tables.md) и [Динамические](https://ytsaurus.tech/docs/ru/user-guide/dynamic-tables/overview.md). Логически таблица представляет из себя последовательность строк. Каждая строка состоит из колонок.
Значения колонок типизированы и могут содержать произвольные структурированные данные, поддерживаемые языком [YSON](https://ytsaurus.tech/docs/ru/user-guide/storage/yson.md).

### Ссылки { #links }

Ссылки представляют собой узлы типа **link**, ссылающиеся на другие объекты по пути, указанному при создании объекта.
Все обращения к узлу-ссылке автоматически переадресуются к целевому объекту.
Подробнее можно прочитать в разделе [Ссылки](https://ytsaurus.tech/docs/ru/user-guide/storage/links.md).

### YSON-документы { #yson_doc }

YSON-документ — это узел Кипариса, имеющий тип  **document** и предназначенный для хранения произвольных YSON-структур.

Поддерживаются запросы и модификации внутри документа. Адресация внутри документа осуществляется с помощью языка [YPath](https://ytsaurus.tech/docs/ru/user-guide/storage/ypath.md).

Подробнее можно прочитать в разделе [YSON-документы](https://ytsaurus.tech/docs/ru/user-guide/storage/yson-docs.md).

Подробнее про формат YSON можно прочитать в разделе [YSON.](https://ytsaurus.tech/docs/ru/user-guide/storage/yson.md)

### Примитивные типы { #primitive_types }

Узел Кипариса может содержать значение примитивного типа: строку, число, словарь, список. В таблице представлено описание примитивных типов узлов Кипариса.

|Имя типа        |Описание						   |
| -------------- | --------------------------------|
| `string_node`  | Узел Кипариса, содержащий строку |
| `int64_node`   | Узел Кипариса, содержащий целое знаковое число |
| `uint64_node`  | Узел Кипариса, содержащий целое беззнаковое число |
| `double_node`  | Узел Кипариса, содержащий вещественное число |
| `map_node`     | Словарь в Кипарисе (ключи — строки, значения — другие узлы). Если проводить аналогию с файловой системой, то это каталог |
| `boolean_node` | Узел кипариса, содержащий булево значение |

### Системные объекты { #internal_objects }

Кроме перечисленных выше объектов, существуют внутренние объекты: транзакции, чанки, аккаунты, пользователи и группы. Такие объекты не версионируются.
Системные объекты перечислены в таблице:

| Имя объекта    | Описание                                                     |
| -------------- | ------------------------------------------------------------ |
| `transaction`   | [Транзакция](transactions.md) |
| `chunk`   | Чанк           |
| `chunk_list`  | Чанклист    |
| `erasure_chunk`  | Erasure-chunk |
| `account`     | Аккаунт |
| `user`    | Пользователь |
| `group` | Группа |

## Идентификаторы объектов { #object_ids }

Каждый объект имеет уникальный **идентификатор**, представляющий собой 128-битное число, по формату совпадающее с GUID. Это число можно представить в виде четырех 32-битных чисел: `a-b-c-d`. Обычно при печати идентификатора компоненты `a`, `b`, `c` и `d` записываются в шестнадцатеричном виде. Каждая из этих компонент имеет свой смысл, описание приведено в таблице.

|  Компонент  | Назначение                                                   |
| :---------: | ------------------------------------------------------------ |
|     `a`     | Номер Hydra-эпохи, в которой был создан данный объект |
|     `b`     | Номер мутации в пределах эпохи, на которой был создан данный объект |
| `c[16..31]` | Идентификатор группы мастеров (cell id), представляет собой уникальное 16-битное число, однозначно определяющее кластер. Данный идентификатор можно найти в веб-интерфейсе кластера напротив мастер-серверов |
| `c[0..15]`  | Тип объекта                                                  |
|     `d`     | Хеш, представляет собой псевдоуникальное случайное число, выбираемое в момент создания объекта. |

Таким образом, идентификатор объекта зависит от кластера, на котором создан данный объект, а также от момента времени (в смысле номеров мутаций), когда объект был создан. В пределах одной мутации может быть создано более одного объекта, тогда они будут отличаться значением хеша. Это различие гарантируется механизмом порождения хешей. Пример идентификатора: `28bb5-75b04b-3fe012f-8b4eda94`.

## Атрибуты объектов { #attributes }

Все объекты системы имеют атрибуты, представленные в таблице:

| **Атрибут**             | **Тип**         | **Значение**                                              |
| :---------------------- | --------------- | --------------------------------------------------------- |
| `id`                    | `string`        | Идентификатор объекта                                     |
| `type`                  | `string`        | Тип объекта                                               |
| `ref_counter`           | `integer`       | Количество [сильных ссылок](objects.md#ref_counter) на объект   |
| `supported_permissions` | `array<string>` | Список поддерживаемых прав доступа                        |
| `effective_acl`         | `Acl`           | Эффективный ACL объекта                                   |

У некоторых объектов системы есть дополнительные атрибуты: `inherit_acl`, `acl` и `owner`, влияющие на доступ к данному объекту. Эти атрибуты носят название **дескриптор управления доступом** (ACD, access control descriptor). Подробно про ACD в разделе [Управление доступом](https://ytsaurus.tech/docs/ru/user-guide/storage/access-control.md).

### Счетчики ссылок { #ref_counter }

Для отслеживания времени жизни объекта используются **счетчики ссылок**. Объект живет в системе до тех пор, пока на него есть **сильные ссылки**. Количество последних можно узнать из атрибута ref_counter. Как только это число становится равным нулю, объект превращается в **зомби** и подлежит удалению. Это удаление производится не мгновенно, вместо этого есть специальная **очередь на удаление** (GC queue), из которой зомби забираются порциями контролируемого размера и разрушаются. Размер задается внутренними конфигурационными параметрами системы. После того, как объект стал зомби, обратиться к нему уже нельзя, даже явно построив путь по идентификатору.
<!-- endsource: ru/_includes/user-guide/storage/objects.md -->