В мире больших данных
218 subscribers
34 photos
5 files
54 links
Полезные заметки о системном анализе в мире больших данных. Если вам интересны Big Data, DWH, SQL и как навести порядок в данных — заглядывайте. Будет интересно и по делу.

Автор: @JuliaMur
Download Telegram
Ключи в базах данных: коротко о важном

При работе с БД важно понимать разницу между ключами.

Primary Key (PK) – уникальный идентификатор для каждой записи в таблице, гарантирует целостность данных. Эффективное использование этого ключа требует тщательного выбора типа данных. Использование слишком длинных строк (VARCHAR(MAX) и подобных) или сложных типов может существенно повлиять на производительность запросов при соединении по ключу.
Если нужен уникальный идентификатор, который может быть сгенерирован в любом месте без возможности конфликта, можно рассмотреть использование UUID или hash от строки (выбор конкретного метода зависит от целей и типа БД). Также PK поддерживает auto increment.

Foreign Key (FK) создает связь между двумя таблицами, ссылаясь на PK в другой таблице. FK обеспечивает целостность связей между таблицами и логически структурирует данные. Именование полей — это важный аспект проектирования БД, который способствует легкости в понимании структуры данных. Хороший тон в наименовании FK — использование стандартных сокращений и отражение связи с PK.

Unique Key (UK) – ограничение базы данных, которое гарантирует уникальность значений в столбце или группе столбцов. Это позволяет исключить дубликаты и обеспечить целостность данных. UK может содержать одно NULL значение.
При создании индексов, PK — это кластерный индекс, а UK — некластеризованный.

Резюме:
— PK: уникальный идентификатор для записей, обеспечивает единственность.
— UK: обеспечивает уникальность значений без строгой идентификации.
— FK: создает отношения между таблицами.
— В таблице может быть только 1 PK и несколько UK.
— Именование любых ключей должно быть осмысленным.

#databasedesign
1
Наведите порядок в данных: кратко про нормальные формы

Сегодня поговорим о нормальных формах и нормализации. Это важные понятия в мире баз данных, они помогают нам правильно организовывать информацию.

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

Нормальные формы — это набор правил, помогающих структурировать данные оптимальным образом. Существует несколько уровней нормальных форм, каждый из которых улучшает организацию базы данных.

Первая нормальная форма (1NF) устанавливает базовое правило: "Одна ячейка — один факт". Это означает, что нельзя хранить множественные значения в одном поле. Например, контактные номера клиента должны храниться в отдельных записях или столбцах, а не списком в одной ячейке.

Вторая нормальная форма (2NF) развивает эту идею дальше. Она требует, чтобы все неключевые атрибуты зависели от полного первичного ключа, а не от его части. Это похоже на разделение шкафа на секции по типам одежды.

Третья нормальная форма (3NF) вводит дополнительное требование: атрибуты, не зависящие напрямую от первичного ключа, должны быть вынесены в отдельные таблицы. Это помогает избежать избыточности данных и экономит пространство.

Существуют и более высокие нормальные формы о которых стоит поговорить отдельно.

Основная цель нормализации заключается в следующем:
— Минимизация дублирования данных, что снижает риск ошибок и несоответствий.
— Упрощение процесса обновления информации. Централизованное хранение данных облегчает их модификацию.
— Повышение понятности структуры базы данных, что упрощает ее поддержку и развитие.

Исследования показывают, что корректно нормализованные базы данных могут обеспечить экономию до 30% дискового пространства. Это особенно актуально для крупномасштабных систем.

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

Таким образом, при работе с базами данных всегда следует учитывать принципы нормальных форм. Это позволит создать более эффективную и удобную в использовании систему хранения и обработки информации. Чуть позже рассмотрим различные нормальные формы на примерах.

#dwh #databasedesign
1
Путешествие по миру современных баз данных

Хочу рассказать о современных базах данных. Мир баз данных постоянно развивается, и сейчас у нас есть целый арсенал инструментов для различных целей. Разберемся с некоторыми из них.

Реляционные базы данных (RDBMS) — это классический вид, основанный на табличной модели. Идеальны для структурированной информации с четкими связями. Н-р, для банковских систем или управления заказами в интернет-магазине.

Фишка: поддерживают сложные запросы и гарантируют целостность данных.

Согласно отчету DB-Engines Ranking на сегодня, Oracle, MySQL и MS SQL остаются самыми популярными СУБД в мире.
══════════
NoSQL — предлагает подходы, отличные от стандартного реляционного шаблона. Они появились, когда стало ясно, что не все данные удобно хранить в таблицах. Эти СУБД бывают документоориентированные (MongoDB), ключ-значение (Redis), графовые (Neo4j). Они часто используются в веб-приложениях, системах реального времени или для работы с большими данными.

Фишка: легко масштабируются и быстро обрабатывают большие объемы данных.

MongoDB — самая популярная NoSQL база среди разработчиков по данным Stack Overflow Developer Survey 2023.
══════════
Колоночные базы данных — в них данные также организованы в таблицы, но хранятся по столбцам, а не по строкам. Отлично подходят для аналитики с большими объемами данных.

Фишка: молниеносно обрабатывают аналитические запросы на терабайтах данных.

Примеры таких СУБД: ClickHouse, Google BigQuery, Apache Cassandra.
══════════
NewSQL базы данных наследуют реляционную структуру и семантику, но построены с использованием более современных, масштабируемых конструкций, обеспечивая высокую масштабируемость и согласованность данных.

Фишка: могут обрабатывать тысячи транзакций в секунду, сохраняя при этом ACID-свойства.

Популярные системы: CockroachDB, Google Spanner, VoltDB. Они хорошо подходят для приложений, которым нужна высокая доступность и горизонтальная масштабируемость.
══════════
Многомодельные базы данных поддерживают несколько моделей данных в рамках одной системы. Они упрощают разработку сложных приложений, где нужны разные типы данных и связей между ними.

Фишка: позволяют использовать одну базу данных вместо нескольких, упрощая архитектуру приложения.

Пример: ArangoDB (работает с документами, графами и данные в формате ключ-значение).
══════════
Базы данных на основе блокчейна используют технологию распределенного реестра. Они обеспечивают высокую безопасность и неизменяемость данных.

Фишка: гарантируют прозрачность и защиту от несанкционированных изменений.

Примеры таких баз: BigchainDB, Bluzelle. Они популярны в финтехе, управлении цепочками поставок и других областях, где важна прозрачность и безопасность.
══════════
Хранилища данных и базы данных для аналитики оптимизированы для обработки огромных объемов данных и сложных аналитических запросов.

Фишка: быстро анализируют петабайты данных и предоставляют результаты в удобном виде для бизнес-аналитики и машинного обучения.

Примеры: Snowflake, Amazon Redshift, Google BigQuery.
══════════
In-Memory базы данных хранят данные в оперативной памяти, что обеспечивает молниеносную сверхвысокую скорость работы. Часто используются как кэш или для обработки данных в реальном времени, особенно в приложениях, требующих минимальной задержки.

Фишка: обеспечивают время отклика в микро- или даже наносекундах, что критично для таких приложений, как финансовые системы, системы интернет-рекламы и игровые платформы.

Самые известные представители: Redis, Memcached, SAP HANA (для более сложных аналитических задач), Apache Ignite (для распределенных вычислений и кэширования).
══════════

Как вы можете заметить, некоторые из известных вам СУБД хочется отнести к нескольким видам. И это важно понимать: границы между типами баз данных часто размыты. Многие современные СУБД сочетают черты разных типов, адаптируясь под сложные требования своих клиентов.

Признаюсь честно, пока писала эту статью, узнала о нескольких новых для себя видах. А вы? С чем приходилось работать? 😎

#databasedesign #dwh
Please open Telegram to view this post
VIEW IN TELEGRAM
2