Databases
Постановка задачи
Начнем с простого вопроса. Можно ли создать программное приложени е без использования баз данных? Допустим, у нас есть приложение, похожее на WhatsApp. Люди используют наше приложение для общения с друзьями. Теперь, где и как мы можем хранить информацию (список имен людей и их соответствующие сообщения) постоянно и получать к ней доступ?
Мы можем использовать простой файл для хранения всех записей в отдельных строках и извлекать их из того же файла. Но использование файла для хранения имеет свои ограничения.
Ограничения файлового хранения
- Мы не можем обеспечить одновременное управление несколькими пользователями, которые получают доступ к файлам хранения из разных мест.
- Мы не можем предоставить разные права доступа разным пользователям.
- Как система будет масштабироваться и оставаться доступной при добавлении тысяч записей?
- Как мы будем искать контент для разных пользователей за короткое время?

Решение
Ограничения, упомянутые выше, можно устранить с помощью баз данных.
База данных — это организованная коллекция данных, которая легко управляется и к которой можно легко получить доступ. Базы данных создаются для упрощения хранения, извлечения, изменения и удаления данных в связи с различными процедурами обработки данных.
Некоторые из приложений, где используются системы управления базами данных (DBMS), включают банковские системы, интернет-магазины и т. д. Разные организации имеют базы данных различных размеров в зависимости от своих нужд.
Примечание: Согласно одному источнику, Всемирный центр данных по климату (World Data Center for Climate, WDCC) является крупнейшей базой данных в мире. Она содержит около 220 терабайт веб-данных и 6 петабайт дополнительных данных.
Существуют два основных типа баз данных:
- SQL (реляционные базы данных)
- NoSQL (нереляционные базы данных)
Они различаются по своему предполагаемому применению, типу информации, которую они хранят, и методу хранения данных.

Реляционные и нереляционные базы данных
Реляционные базы данных, подобно телефонным книгам, которые записывают контактные номера и адреса, организованы и имеют заранее определенные схемы. Нереляционные базы данных, подобно файловым директориям, которые хранят все, от постоянной информации о человеке до предпочтений в покупках, неструктурированы, разбросаны и имеют динамическую схему. Мы обсудим их различия и типы более подробно в следующем уроке.
Преимущества баз данных
Правильная база данных необходима для каждого бизнеса или организации. Это связано с тем, что база данных хранит всю важную информацию об организации, такую как записи о персонале, транзакции, информация о зарплате и так далее. Ниже приведены некоторые причины, почему базы данных важны:
- Управление большими данными: Большое количество данных можно легко обрабатывать с помощью базы данных, что было бы невозможно с использованием других инструментов.
- Получение точных данных (консистентность данных): Благодаря различным ограничениям в базах данных, мы можем получать точные данные в любое время.
- Легкость обновления: Обновление данных в базах данных довольно легко с помощью языка манипулирования данными (DML).
- Безопасность: Базы данных обеспечивают безопасность данных, предоставляя доступ к данным только авторизованным пользователям.
- Целостность данных: Базы данных обеспечивают целостность данных с помощью различных ограничений.
- Доступность: Базы данных могут быть реплицированы (с использованием репликации данных) на различных серверах, которые могут обновляться одновременно. Эти реплики обеспечивают доступность.
- Масштабируемость: Базы данных разделяются (с использованием партиционирования данных) для управления нагрузкой на одном узле, что увеличивает масштабируемость.
Как мы будем объяснять базы данных?
Мы разделили главу по базам данных на четыре урока:
- Типы баз данных: Мы обсудим различные типы баз данных, их преимущества и недостатки.
- Репликация данных: Мы обсудим, что такое репликация данных и различные модели репликации с их плюсами и минусами.
- Партиционирование данных: Мы обсудим, что такое партиционирование данных и различные модели партиционирования с их плюсами и минусами.
- Анализ затрат и выгод: Мы обсудим, какой подход к шардингу базы данных лучше всего подходит для различных типов баз данных.
Давайте начнем с понимания разли чных типов баз данных и их предпочтительных сценариев использования.
Реляционные базы данных
Реляционные базы данных придерживаются определенных схем перед сохранением данных. Данные, хранящиеся в реляционных базах данных, имеют заранее заданную структуру. В основном, эта модель организует данные в одну или несколько таблиц (также называемых отношениями), где каждая строка (кортеж) имеет уникальный ключ. Каждая сущность данных состоит из экземпляров и атрибутов, где экземпляры хранятся в строках, а атрибуты каждого экземпляра — в столбцах. Поскольку каждый кортеж имеет уникальный ключ, кортеж в одной таблице может быть связан с кортежем в других таблицах через хранение первичных ключей в других таблицах, что обычно называется внешними ключами.
Для манипуляции с базой данных используется язык структурированных запросов (SQL). Это включает вставку, удаление и извлечение данных.