[Анализ и проектирование систем, ERP-системы, Big Data, Хранилища данных, Финансы в IT] Как упростить доработки и поддержку хранилища данных?
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
1. Адаптированная методология Anchor modelingАрхитектура ядра хранилища данных должна соответствовать описанной ниже адаптированной (не оригинальной) методологии Anchor modeling (но не Data Vault).Тип таблицыПримеры имени таблицы (в скобках описание)С таблицами каких типов может быть связанаОбязательный тип поляПримеры имени поляСущности (Anchor, Entity type). Обозначается квадратом TR_Transaction (полупроводка по дебету или по кредиту), AC_Account (синтетический счет)Связи, Атрибут сущностейСуррогатный ключ сущностиTR_ID, AC_IDАтрибут сущностей (Attribute). Обозначается кругомTR_TDT_TransactionDate (дата заключения сделки)СущностиСуррогатный ключ сущности (является первичным ключом в течение срока действия записи)TR_IDДата и время начала срока действия записиTR_TDT_FROMДата и время окончания срока действия записи (не включительно)TR_TDT_BEFOREАтрибут сущностейTR_TDTСвязи (Tie, Relationship). Обозначается ромбомTR_AC_DC_Transaction_Account_DrCr (счет главной книги в полупроводке)СущностиСуррогатные ключи каждой связанной сущности (вместе с некоторыми атрибутами связей, обозначающими тип связи, образуют составной ключ в течение срока действия записи)TR_ID, AC_IDДата и время начала срока действия записиTR_AC_DC_FROMДата и время окончания срока действия записи (не включительно)TR_AC_DC_BEFOREОпциональный атрибут или несколько атрибутов связей DC (дебет/кредит)
Схема данных примераТаблицы связей связывают сущности отношениями многие-ко-многим или один-ко-многим. Таблицы связей должны соединять минимально возможное количество сущностей и атрибутов связей – за счет увеличения количества таблиц связей. Например, вместо связывания в одной таблице связей полупроводки с синтетическим счетом, с контрагентом, с продуктом или финансовым инструментом и т.д. необходимо связывать полупроводку с каждым из этих типов сущностей отдельной таблицей связей. Если не следовать этому принципу, то разбухшая таблица связей превратится в таблицу фактов в денормализованной схеме «звезды» – со всеми ее недостатками.В оригинальной методологии Anchor modeling атрибуты связей запрещены, но они иногда могут быть полезными для упрощения структуры данных и ее лучшего соответствия реальному миру. Также в оригинальной методологии Anchor modeling используются более длинные и неудобные имена таблиц и полей.В ядре хранилища данных не должны использоваться значения NULL, за исключением тех атрибутов связей, которые не входят в составной ключ (обычно это наименования, обозначения, коды, ссылки, выбранные значения, флаги). Если неизвестны начало и/или окончание срока действия записи, то должны указываться принятые условные даты (например, '0001-01-01', '-infinity', '9999-12-31', 'infinity').Для облегчения создания полиморфных связей двухсимвольный код в именах должен совпадать с двумя последними символами в соответствующих суррогатных ключах, которыми обозначается тип сущностей или атрибут связей (см. ниже). Поэтому в нем необходимо использовать символы алфавита [url=https://en.wikipedia.org/wiki/Base32#Crockford's_Base32]Crockford's base32[/url].Таблицы типа узел (knot) исключены из адаптированной методологии Anchor modeling. Однако типовое обозначение узла на схеме в виде квадрата с закругленными углами удобно использовать для обозначения атрибутов связей.Набросок БД может быть сделан (в том числе, офлайн) с помощью наглядных и удобных веб-инструментов Online Modeler или Online Modeler (test version), но сгенерированный ими SQL-код непригоден для использования. Для генерации SQL-кода (включая SQL-запросы) по методологии Anchor modeling все известные компании используют самостоятельно разработанные ими инструменты на основе языка программирования Python и Microsoft Excel.2. Суррогатные ключи в адаптированном формате ULIDДля связи таблиц должны использоваться исключительно суррогатные ключи в адаптированном формате ULID. Для связи таблиц не должны использоваться автоинкремент, составные ключи и хеши бизнес-ключей.В качестве суррогатного ключа должна использоваться адаптированная (не оригинальная) версия ULID(но не UUID), имеющая любой из двух форматов:
- ttttttttttrrrrrrrrrrrrrrxx (пример: 01F5B023PBG3C48TSBDQQ3V9TR)
- ttttttttttsssrrrrrrrrrrrxx (пример: 01F5B023PB00448TSBDQQ3V5TR)
гдеt – дата и время генерации с точностью до миллисекунды (Timestamp) (10 символов или 48 бит), UNIX-time в миллисекундах (UTC)s – счетчик от 0 до 32768, сбрасываемый каждую миллисекунду, (Sequence) (3 символа или 15 бит)r – случайное число (Randomness) (14/11 символов или 65/55 бит)x – тип сущностей (Entity type) (2 символа или 10 бит)Должна использоваться кодировка и алфавит Crockford's base32.Генератор ULID’ов должен удовлетворять следующим требованиям:
- Соблюдение требуемого формата ULID’ов
- Однократное использование каждого генерируемого ULID’а в качестве суррогатного ключа сущности
- Использование (достаточно производительного) криптографически стойкого генератора псевдослучайных чисел или генератора истинно случайных чисел
- Монотонное возрастание ULID’ов в интервале менее миллисекунды (за счет инкремента случайного числа – для формата без счетчика, или за счет счетчика – для формата со счетчиком)
- Генерация ULID’ов в формате (текстовый, бинарный, UUID или целочисленный), наиболее производительном для операций поиска в применяемых СУБД и носителе данных (HDD или SSD)
- Пиковая (в течение 5 мс) производительность генерации ULID’ов должна быть выше максимальной производительности записи в применяемых СУБД и носителе данных (HDD или SSD) (например, за счет буферизации заранее вычисленных частей ULID’а)
Данные из информационных систем-источников должны загружаться в хранилище данных уже с необходимыми именами полей и с суррогатными ключами, имеющими описанный выше формат. В хранилище данных эти ключи не должны изменяться, подменяться другими ключами или переименовываться.3. Указание начала и окончания срока действия записиДля сохранения историчности данных должен применяться второй тип медленно меняющегося измерения SCD2 с добавлением двух унифицированных полей (столбцов): «Дата и время начала срока действия записи» (имя столбца с суффиксом _FROM) и «Дата и время окончания срока действия записи (не включительно)» (имя столбца с суффиксом _BEFORE).Единственным условием связи записей в таблицах, помимо суррогатного ключа, должно быть одновременное действие (valid time) связанных записей, определяемое унифицированными полями начала и окончания срока действия записи, но не датой загрузки в систему или датой создания записи (transaction time). Данные не должны храниться в форме «срезов» на отчетные или на текущую дату или за календарный период (например, месяц).4. Указание даты и времени создания записиЕсли нужно знать не только изменение состояния реального мира во времени, но и изменение состояния самой учетной системы (когда в учетной системе изменяются сведения об одном и том же моменте в реальном мире), то во все таблицы необходимо добавить поле с датой и временем создания записи (transaction time), являющееся частью составного ключа. Чтобы точно воспроизвести отчет, сформированный в определенный момент в прошлом, достаточно игнорировать записи, чьи дата и время создания позднее этого момента в прошлом.Примеры имени поля: TR_TIMESTAMP, TR_TDT_TIMESTAMP, TR_AC_DC_TIMESTAMP.5. Только внешние источники пунктов классификаторовВ учетной системе необходимо использовать пункты классификаторов (статьи доходов и расходов, синтетические счета, категории клиентов, типы продуктов и т.п.), полученные непосредственно из реального мира без каких либо изменений – вместо разработки собственных или соединения в гибридных классификаторах. Пункты классификаторов могут быть получены из законодательства, из требований топ-менеджмента к отчетам и т.п.Если при загрузке свежей версии классификатора изменился (исчез, появился) пункт классификатора, то должны автоматически рассчитываться и указываться окончание срока действия прежней запаси, а также начало и окончание действия новой записи.6. Фасетная классификацияНеобходимо по возможности использовать фасетную классификацию вместо иерархической классификации.Если всё же приходится использовать иерархический справочник из внешнего источника, то для него нужно создать соответствующие справочники фасетной классификации. При этом каждый пункт из иерархического справочника становится сущностью, а каждый пункт из справочника фасетной классификации – атрибутом этой сущности.Например, пятизначные счета второго порядка в плане счетов российских кредитных организацийдолжны быть самостоятельными сущностями, а не атрибутами двадцатизначных лицевых счетов. К счетам второго порядка можно привязать соответствующие значения атрибутов, не образующих составной ключ:
- признак счета активный/пассивный,
- глава,
- раздел,
- счет первого порядка,
- тип контрагента,
- срок.
7. ТегиЕсли есть большое количество атрибутов с логическими значениями true и false, то эти атрибуты удобнее заменить соответствующими тегами, которые можно хранить в одном поле типа array, типа hstoreили типа jsonb.8. Полиморфные связиВ некоторых учетных системах необходима возможность связывать определенную таблицу (будем называть ее основной) с большим количеством других таблиц, причем эти связи используются редко. Например, таблица полупроводок должна иметь большое количество субконто или аналитик, каждая из которых редко используется в отчетах.Однако использование таблиц связей в таких случаях нежелательно, так как их будет слишком много, и на их поддержание будет затрачиваться слишком много ресурсов IT-подразделения.Решить эту проблему можно с помощью полиморфных связей. В основной таблице в поле полиморфных связей ищется суррогатный ключ записи, содержащейся в связанной таблице, а по двум последним символам в этом суррогатном ключе определятся таблица с типом «Сущности». Связь автоматически устанавливается с записью в этой таблице, имеющей соответствующий суррогатный ключ.Если полиморфные связи необходимы одновременно с несколькими таблицами, то суррогатные ключи записей в этих связанных таблицах можно хранить в основной таблице в одном поле типа array, типа hstoreили типа jsonb.9. Устранение витрин данныхКаждый отчет должен формироваться непосредственно из реплики ядра хранилища данных.Нежелательно использовать витрины данных, так как они сводят на нет все достоинства методологии Anchor modeling. Особенно большими недостатками обладают универсальные витрины данных, предназначенные для формирования любых видов отчетности.10. Типовые SQL-запросы и материализованные представленияРазработка SQL-запросов к базе данных, соответствующей методологии Anchor modeling, трудоемка. Поэтому для облегчения работы системных аналитиков и SQL-программистов могут быть созданы типовые SQL-запросы или материализованные представления, соединяющие сущности с их атрибутами на задаваемую дату. Но использование таких SQL-запросов и материализованных представлений может привести к усложнению БД и снижению производительности. Поэтому для рабочей системы вместо них необходимо использовать автоматическую генерацию SQL-запросов (с использованием языка программирования Python и Microsoft Excel).В качестве источника значений для заполнения полей могут использоваться соответствующие SQL-запросы, материализованные представления или созданные на их основе таблицы допустимых значений. Допустимые значения для заполнения полей могут определяться и таблицей решений (см. ниже).Сильная нормализация данных в Anchor modeling не позволяет производить многие автоматические проверки целостности на уровне таблиц. Поэтому для проверки целостности и качества данных нужны соответствующие SQL-запросы, автоматически запускаемые перед вставкой данных в таблицы.11. Вынесение логики из программного кода в таблицы решенийЛогику необходимо по возможности выносить из программного кода на языках программирования, SQL и различных ORM в таблицы решений. Например, в таблице решений может быть закодирован выбор дебетуемого синтетического счета в зависимости от типа операции, категории контрагента и срока погашения финансового инструмента. Таблица решений может быть реализована двумя способами:
- таблица сущностей – правил, к которой привязаны входные атрибуты и один выходной атрибут,
- таблица связей, соединяющая входные сущности и атрибуты с выходной сущностью либо с выходным атрибутом.
Первый способ очевидно более гибкий и упорядоченный.
===========
Источник:
habr.com
===========
Похожие новости:
- [Законодательство в IT, Финансы в IT, IT-компании] Власти Франции оштрафовали Google на €220 млн
- [Анализ и проектирование систем, Читальный зал, Научно-популярное, Изучение языков, Инженерные системы] Русский язык глазами инженера. Числительные
- [Исследования и прогнозы в IT, Развитие стартапа, Финансы в IT] Brex: будущее бизнес-банкинга и управления денежными средствами (перевод)
- [IT-инфраструктура, Законодательство в IT, Финансы в IT] Росгвардия заплатит более 300 млн рублей за IT-систему контроля за оружием
- [Big Data] Cloudera Data Platform как многогранное ценностное предложение (перевод)
- [PHP, Разработка мобильных приложений, Визуализация данных, Финансы в IT] Телеграмм-бот для анализа опционов
- [Разработка систем связи] Зачем британскому провайдеру полое оптоволокно
- [Тестирование IT-систем, Анализ и проектирование систем, Управление разработкой, Софт, Визуальное программирование] RPA инструменты и не только…
- [Разработка веб-сайтов, Анализ и проектирование систем] UML умер, а никто и не заметил? (перевод)
- [Программирование, Анализ и проектирование систем, Проектирование и рефакторинг, IT-стандарты] Хватит организовывать код по типу файлов (перевод)
Теги для поиска: #_analiz_i_proektirovanie_sistem (Анализ и проектирование систем), #_erpsistemy (ERP-системы), #_big_data, #_hranilischa_dannyh (Хранилища данных), #_finansy_v_it (Финансы в IT), #_shema_dannyh (схема данных), #_kljuch (ключ), #_atribut (атрибут), #_suschnost (сущность), #_svjazi (связи), #_identifikatory (идентификаторы), #_normalizatsija (нормализация), #_izmerenija (измерения), #_vitriny_dannyh (витрины данных), #_polimorfnye_svjazi (полиморфные связи), #_analiz_i_proektirovanie_sistem (
Анализ и проектирование систем
), #_erpsistemy (
ERP-системы
), #_big_data, #_hranilischa_dannyh (
Хранилища данных
), #_finansy_v_it (
Финансы в IT
)
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 17:21
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
1. Адаптированная методология Anchor modelingАрхитектура ядра хранилища данных должна соответствовать описанной ниже адаптированной (не оригинальной) методологии Anchor modeling (но не Data Vault).Тип таблицыПримеры имени таблицы (в скобках описание)С таблицами каких типов может быть связанаОбязательный тип поляПримеры имени поляСущности (Anchor, Entity type). Обозначается квадратом TR_Transaction (полупроводка по дебету или по кредиту), AC_Account (синтетический счет)Связи, Атрибут сущностейСуррогатный ключ сущностиTR_ID, AC_IDАтрибут сущностей (Attribute). Обозначается кругомTR_TDT_TransactionDate (дата заключения сделки)СущностиСуррогатный ключ сущности (является первичным ключом в течение срока действия записи)TR_IDДата и время начала срока действия записиTR_TDT_FROMДата и время окончания срока действия записи (не включительно)TR_TDT_BEFOREАтрибут сущностейTR_TDTСвязи (Tie, Relationship). Обозначается ромбомTR_AC_DC_Transaction_Account_DrCr (счет главной книги в полупроводке)СущностиСуррогатные ключи каждой связанной сущности (вместе с некоторыми атрибутами связей, обозначающими тип связи, образуют составной ключ в течение срока действия записи)TR_ID, AC_IDДата и время начала срока действия записиTR_AC_DC_FROMДата и время окончания срока действия записи (не включительно)TR_AC_DC_BEFOREОпциональный атрибут или несколько атрибутов связей DC (дебет/кредит) Схема данных примераТаблицы связей связывают сущности отношениями многие-ко-многим или один-ко-многим. Таблицы связей должны соединять минимально возможное количество сущностей и атрибутов связей – за счет увеличения количества таблиц связей. Например, вместо связывания в одной таблице связей полупроводки с синтетическим счетом, с контрагентом, с продуктом или финансовым инструментом и т.д. необходимо связывать полупроводку с каждым из этих типов сущностей отдельной таблицей связей. Если не следовать этому принципу, то разбухшая таблица связей превратится в таблицу фактов в денормализованной схеме «звезды» – со всеми ее недостатками.В оригинальной методологии Anchor modeling атрибуты связей запрещены, но они иногда могут быть полезными для упрощения структуры данных и ее лучшего соответствия реальному миру. Также в оригинальной методологии Anchor modeling используются более длинные и неудобные имена таблиц и полей.В ядре хранилища данных не должны использоваться значения NULL, за исключением тех атрибутов связей, которые не входят в составной ключ (обычно это наименования, обозначения, коды, ссылки, выбранные значения, флаги). Если неизвестны начало и/или окончание срока действия записи, то должны указываться принятые условные даты (например, '0001-01-01', '-infinity', '9999-12-31', 'infinity').Для облегчения создания полиморфных связей двухсимвольный код в именах должен совпадать с двумя последними символами в соответствующих суррогатных ключах, которыми обозначается тип сущностей или атрибут связей (см. ниже). Поэтому в нем необходимо использовать символы алфавита [url=https://en.wikipedia.org/wiki/Base32#Crockford's_Base32]Crockford's base32[/url].Таблицы типа узел (knot) исключены из адаптированной методологии Anchor modeling. Однако типовое обозначение узла на схеме в виде квадрата с закругленными углами удобно использовать для обозначения атрибутов связей.Набросок БД может быть сделан (в том числе, офлайн) с помощью наглядных и удобных веб-инструментов Online Modeler или Online Modeler (test version), но сгенерированный ими SQL-код непригоден для использования. Для генерации SQL-кода (включая SQL-запросы) по методологии Anchor modeling все известные компании используют самостоятельно разработанные ими инструменты на основе языка программирования Python и Microsoft Excel.2. Суррогатные ключи в адаптированном формате ULIDДля связи таблиц должны использоваться исключительно суррогатные ключи в адаптированном формате ULID. Для связи таблиц не должны использоваться автоинкремент, составные ключи и хеши бизнес-ключей.В качестве суррогатного ключа должна использоваться адаптированная (не оригинальная) версия ULID(но не UUID), имеющая любой из двух форматов:
=========== Источник: habr.com =========== Похожие новости:
Анализ и проектирование систем ), #_erpsistemy ( ERP-системы ), #_big_data, #_hranilischa_dannyh ( Хранилища данных ), #_finansy_v_it ( Финансы в IT ) |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 17:21
Часовой пояс: UTC + 5