Ответ
В классической послойной архитектуре хранилища данных (слоистой, или layered architecture) я обычно работал со следующими уровнями:
-
Staging Area (Зона загрузки): Сырые, неизменённые данные, зеркально загруженные из источников (source system). Здесь данные временно хранятся в формате, близком к исходному. Цель — изоляция источников и обеспечение точки восстановления.
-- Пример таблицы в Staging CREATE TABLE stg_orders ( source_id RAW(16), order_data CLOB, -- сырой JSON/XML extracted_at TIMESTAMP DEFAULT SYSTIMESTAMP ); -
Integration Layer / Core DWH (Слой интеграции): Здесь происходит очистка (data cleansing), стандартизация, дедупликация и объединение данных из разных источников в согласованные бизнес-сущности. Часто реализуется в виде нормализованной схемы (3NF) или Data Vault.
-- Пример: преобразование сырых данных в детализированные таблицы INSERT INTO dim_customer (customer_nk, name, email, valid_from) SELECT j.customer_id, j.customer_name, j.customer_email, SYSDATE FROM stg_orders s, JSON_TABLE(s.order_data, '$' COLUMNS (customer_id NUMBER, customer_name VARCHAR2(100), customer_email VARCHAR2(200))) j; -
Data Marts / Presentation Layer (Слой представления): Оптимизированные для конечного потребления схемы, обычно денормализованные (звёздная или снежинка). Это уровень, к которому подключаются BI-инструменты (Tableau, Power BI). Данные здесь агрегированы и структурированы по предметным областям (финансы, продажи).
-- Пример таблицы фактов в витрине данных по продажам CREATE TABLE fct_sales ( date_key INT REFERENCES dim_date(date_key), product_key INT REFERENCES dim_product(product_key), customer_key INT REFERENCES dim_customer(customer_key), quantity_sold NUMBER, amount_sold NUMBER(10,2) ) COMPRESS FOR QUERY;
В современных облачных DWH (BigQuery, Snowflake) границы между слоями могут быть более размыты, но логическое разделение на "сырые", "очищенные" и "потребляемые" данные сохраняется.