Содержание

Введение в базы данных / Хабр

Прежде чем начать рассказывать о базах данных, скажу, для кого эта статья. Если вы бывалый разработчик, то смело пропускайте статью, ничего нового вы с ней не найдете. Статья для тех, кто только планирует начать карьеру в дата-аналитике или data science, кто много раз слышал словосочетание «база данных», но не до конца понимает, что это.

Я решила написать эту статью, потому что именно такой статьи мне очень не хватало несколько лет назад, когда я только начала карьеру в аналитике данных. Тогда я часто слышала слова «база данных», «реляционная база», «primary key», примерно понимала, что они означают, но единую картину в голове у меня сложить не получалось.

Что такое база данных и зачем она?

Компании часто собирают информацию о своих клиентах, сотрудниках, операциях, финансах и т. д. Потом эту информацию можно выгодно использовать. Например, можно ее проанализировать и понять, какими способами можно увеличить прибыль. Можно на ее основе построить хитрые MLмодели, которые помогут улучшить продукт. Или, в конце концов, эту информацию можно просто перепродать другим компаниям.

Чтоб собирать и анализировать информацию, надо уметь ее сохранять. Конечно, можно сохранять информацию в печатном виде в обычных папках или в Excel-файлах. И многие компании до сих пор так сохраняют информацию. Однако, такое подойдет только для маленьких компаний с небольшим количеством данных. Когда компания вырастает, то и данных становится много, такие варианты сохранения информации становятся непригодны. Тогда на помощь приходят базы данных.

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

  • В базе данных можно хранить очень огромное количество данных – миллиарды и триллионы записей;

  • Базы помогают защищать данные — они позволяют давать доступ к данным только определенному кругу лиц. При этом можно ставить ограничения, кому к каким данным можно давать доступ и какого типа доступ, только чтение или редактирование тоже;

  • Базы данных могут помогать следить за правильностью данных с помощью различного вида проверок;

  • Также, базы данных могут позволять большому количеству людей одновременно взаимодействовать с данными.

Так что же такое база данных? Если говорить коротко, то это определенная структура, в которой хранится информация. Я понимаю, что из этого определения пока мало что понятно. Однако, более конкретное определение дать сложно, потому что существует много типов баз данных, и все они совершенно разные.

Я думаю, это определение станет понятнее, когда я далее опишу наиболее популярные типы баз данных на конкретных примерах.

Типы баз данных

Существует много разных типов баз данных. Наиболее популярные типы:

  • Реляционные базы данных

  • Key-value базы данных

  • Документно-ориентированные базы данных

  • Графовые базы данных

  • Колоночные базы данных

Далее я расскажу о каждом из этих типов. Однако, начну я реляционных баз данных и больше всего буду рассказывать о них, потому что именно этим типом баз данных чаще всего пользуются аналитики данных и data scientist-ы.

Реляционные базы данных (MySQL, PostgreSQL, Oracle DB)

Реляционная база данных – это база данных, которая состоит из таблиц. У реляционной базы данных 2 очень важные характеристики:

Рассмотрим пример реляционной базы. Допустим, у нас есть сервис доставки еды. Тогда, если мы построим реляционную базу данных для этого сервиса, то она, скорее всего, будет содержать следующие таблицы:

Рис 1. Пример реляционной базы данных

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

Как я отметила выше, второй важной характеристикой реляционных баз данных является то, что между таблицами существуют отношения. Отношения между таблицами определяются с помощью primary key и foreign key.

Primary key – это столбец (или группа столбцов) таблицы, который содержит уникальные значения для каждой строки. На примере выше primary key каждой таблицы я выделила зеленым цветом. То есть, например, в таблице с заказами каждая строка будет описывать отдельный заказ. Не будет 2 строк, которые описывают один и тот же заказ, потому ID заказа будет разный для каждой строки.

Foreign key – это столбец в таблице, который содержит primary key другой таблицы. На рисунке foreign key отмечены желтым. То есть, таблица с заказами содержит ID клиента, который является primary key в таблице с клиентами, но в таблице с заказами он будет foreign key.

Primary key и foreign key помогают не только связывать между собой таблицы реляционной базы данных отношениями. Они еще помогают следить за целостностью и правильностью данных в базе. Например, если мы ошибемся в ID клиента, добавляя новый заказ в таблицу с заказами, то база выдаст ошибку, так как не найдет соответствующий ID клиента в таблице с клиентами.

Для взаимодействия с реляционными базами данных чаще всего используется SQL (Structured QueryLanguage). Это специальный язык программирования, на котором пишутся запросы к реляционной базе. SQL-запросами можно создавать и удалять таблицы в реляционной базе, изменять данные в существующих таблицах и доставать из таблиц необходимую информацию.

Как я уже говорила выше, реляционные базы данных удобно использовать в аналитике, так как информация в них структурирована и распределена по смыслу, что, конечно, мечта любого аналитика. Однако, аналитики часто пишут сложные и не очень эффективные SQL-запросы, потому важно придумывать способы ускорения обработки запросов к реляционной базе.

Одним из наиболее популярных методов ускорения работы запросов к реляционным базам данных является индексирование таблиц. Индекс – это определенный столбец в таблице, по которому осуществляется поиск. 

Приведу пример работы индекса. Например, мы хотим найти все заказы клиента 007 из ресторана 1. Тогда, если у нас в таблице с заказами нет индекса, то мы будем перебирать все заказы пока не найдем нужные. Если же у нас есть индекс в таблице с заказами, то ситуация будет иной. Допустим, что индексом является столбец ID ресторана. Тогда наши данные в таблице с заказами будут сгруппированы по ID ресторана. И тогда при поиске заказов клиента 007 из ресторана 1, мы не будем перебирать всю таблицу с заказами, а найдем группу заказов из ресторана 1 и будем искать необходимые данные внутри этой группы.

Из примера выше с индексом выше понятно, что индексом удобно выбирать такой столбец, в разрезе которого часто ищутся данные.

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

Выглядит так, что реляционная база данных идеальная база, и непонятно, почему бы постоянно ее не использовать. Однако, у реляционной базы данных есть и недостатки, и потому данный тип не всегда подходит для нужд бизнеса. Например, реляционная база данных не подходит для данных без четкой структуры, потому что мы не сможем разложить эти данные в отдельные таблицы по смыслу. А данных без четкой структуры гораздо больше, чем данных с четкой структурой.

Какие еще есть типы баз данных?

Прочие типы баз данных, которые не реляционные, часто называются noSQL базы данных. Обсудим наиболее популярные типы нереляционных баз данных.

Key-value базы данных (пример — Redis)

Название говорит о том, какие данные удобно хранить в Key-value базе – в такой базе хранят данные, которые удобно представить в виде пары ключ-значение. Основное преимущество таких баз – это очень быстрый поиск значения по ключу. При этом значение может содержать какие угодно типы данных. 

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

Рис 2. Пример key-value базы данных

Документно-ориентированные (пример — Mongo DB)

В документно-ориентированной базе данных единицей хранения является документ (который может быть в формате json, или xml, или в каком-нибудь еще формате). Удобство таких баз в том, что в них быстро и легко записывать любые типы данных, при этом эти данные не обязаны обладать четкой структурой. Минус таких баз в том, что данные в них неудобно анализировать.  

В моей предыдущей компании такой тип баз данных служил базой для реляционных баз. То есть сначала все данные попадали и сохранялись в документно-ориентированной базе. Потом команда дата инженеров обрабатывала эти огромные полотна информации, структурировала и складывала в реляционную базу данных, которую уже могла использовать команда аналитиков и Data Science.

Рис 3. Пример документно-ориентированной базы данных

Графовые базы данных (пример — Orient DB)

Как следует из названия, в графовой базе данных данные хранятся в виде графов. Данный тип баз удобен, когда надо находить информацию не только о каком-то объекте, но и доставать информации о связах этого объекта с другими. 

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

Колоночные (столбцовые) базы данных (примеры — Cassandra, Clickhouse)

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

Преимущество колоночных баз данных в том, что они могут быстро находить определенные значения в столбцах, которые нас интересуют.

Ну и напоследок

В заключение скажу, что типов баз данных великое множество. Какие-то типы приобретают популярность, какие-то больше не используются. У каждого типа свои преимущества и недостатки. И, выбирая тот или иной тип баз данных, надо исходить в первую очередь от вида вашего бизнеса и его потребностей.

Что такое база данных? – Описание облачных баз данных – AWS

Что такое база данных?

База данных — это систематический сбор данных, хранящихся в электронном виде. Он может содержать любые типы данных, включая слова, цифры, изображения, видео и файлы. Для хранения, извлечения и редактирования данных можно использовать программное обеспечение, называемое системой управления базами данных (СУБД). В компьютерных системах слово «база данных» также может относиться к любой СУБД, системе баз данных или приложению, связанному с базой данных.

Почему база данных важна?

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

Эффективное масштабирование

Приложения баз данных могут управлять большими объемами данных с масштабированием до миллионов, миллиардов и более. Невозможно хранить такое количество цифровых данных без базы данных.

Целостность данных

Базы данных часто имеют встроенные правила и условия для обеспечения согласованности данных.

Безопасность данных

Базы данных поддерживают требования конфиденциальности и соответствия, связанные с любыми данными. Например, для получения доступа к базе данных пользователям необходимо войти. Различным пользователям предоставляются разные уровни доступа, например только для чтения.

Аналитика данных

Современные программные системы используют базы данных для анализа данных. Эти системы могут выявлять тенденции и закономерности или делать прогнозы. Аналитика данных позволяет организациям с уверенностью принимать бизнес-решения.

Какие существуют типы баз данных?

Базы данных можно классифицировать по примеру использования, типу данных и способу их хранения. Ниже перечислены три примера способов классификации баз данных.

  • Классификация по содержимому баз данных (например, текст документа, статистический или мультимедийный объект)
  • Классификация по области применения (бухгалтерия, кинематограф или производство)
  • Классификация по техническим аспектам (структура базы данных или тип интерфейса)

Что такое модель базы данных?

Модель базы данных показывает ее логическую структуру. Она определяет отношения и правила хранения и организации данных, а также управления ими. Каждое приложение базы данных создано на основе определенной модели данных. Индивидуальные модели баз данных разрабатываются на основе правил и концепций более широкой модели данных, используемой в базовых приложениях.

Как развивались базы данных?

Самые первые базы данных представляли собой магнитные ленты, на которых записи данных хранились в последовательной форме. Базы данных продолжали совершенствоваться с развитием технологий. Сегодня они превратились в сложные высокопроизводительные системы, которым посвящена собственная область исследования. Рассмотрим историю развития моделей данных. 

Иерархическая база данных

Иерархические базы данных стали популярными в 1970-х годах. На смену последовательной форме хранения записей данных пришла древовидная структура, в которой два файла находились в отношении «предок-потомок». Например, при создании системы базы данных для розничного мебельного магазина можно было определить спальню как запись-предок, а кровать, прикроватную тумбочку и шкаф – как записи-потомки. Кроме того, к записи кровать можно было добавить другие записи-потомки, такие как односпальная кровать, двуспальная кровать, большая двуспальная кровать и т. д. К сожалению, иерархическая модель данных была сложной для реализации и не могла поддерживать несколько родительско-дочерних отношений без значительного дублирования данных.

Сетевая база данных

У другой ранней базы данных – сетевой – у одной записи-потомка может иметься несколько записей-предков и наоборот. Так в примере с мебельным магазином две записи типа предок (спальня и детская комната) можно связать с записью-потомком шкаф.

Реляционная база данных

В 1980-х годах среди предприятий стали популярными реляционные базы данных благодаря своей высокой производительности, гибкости и совместимости с более быстрым оборудованием. В реляционных базах данных записи организованы в виде нескольких таблиц, а не связанных списков. 

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

Комнаты и Мебель. Таблицы связаны столбцами Номер комнаты и Название мебели. Оба этих столбца также называются первичными ключами.

Номер комнаты

Название комнаты

1

Спальня

2

Детская комната

 

Название мебели

Цвет

Кровать

Коричневый

Шкаф

Белый

Прикроватная тумбочка

Черный

 

Номер комнаты

Название мебели

1

Кровать

1

Шкаф

2

Шкаф

 

Объектно-ориентированная база данных

Объектно-ориентированные базы данных были созданы в 1990-х годах в ответ на появление объектно-ориентированного программирования. В то время программисты и дизайнеры начали рассматривать данные в базах данных как объекты. Например, можно сопоставить атрибуты стула, такие как цвет и размер, с объектом данных стула. Этот объект является виртуальным представлением реального кресла в объектно-ориентированной базе данных.

База данных NoSQL

SQL – язык запросов, используемый для доступа к данным, а также для их извлечения и редактирования в реляционных базах данных. NoSQL – противоположный механизм базы данных, который не использует табличную форму представления отношений в моделировании данных. Базы данных NoSQL были созданы в начале XXIвека, когда появились кластерные вычисления и распределенные архитектуры баз данных. Распределенные архитектуры хранят одну большую базу данных на нескольких базовых устройствах хранения. Это называется горизонтальным масштабированием. Программные механизмы, используемые в NoSQL, отличаются высокой скоростью, отсутствием необходимости в фиксированных табличных схемах, возможностями хранения дублированных или сгруппированных данных и горизонтального масштабирования.

Что такое современные базы данных?

Современные базы данных можно масштабировать как вертикально, так и горизонтально. Они могут хранить большие объемы данных в облаке и обеспечивают расширенные программные интерфейсы для машинного обучения и другой аналитики данных.

Облачная база данных

Облачная база данных, как правило, работает на платформе облачных вычислений. Существуют две стандартные модели развертывания: независимое использование баз данных в облаке или приобретение к ним доступа у поставщика облачных баз данных. Облачные базы данных могут следовать моделям данных SQL и NoSQL.

Графовая база данных

Графовые базы данных полезны тем, что уделяют первостепенное внимание взаимосвязям между различными записями данных. Они предназначены для хранения взаимосвязей и навигации в них. Графовая база данных состоит из узлов и ребер. Узлы хранят объекты данных, а ребра – взаимосвязи между объектами. Ребро всегда имеет начальный узел, конечный узел, тип и направление. Ребра могут описывать взаимосвязи типа «предок‑потомок», действия и права владения. Ограничения на количество и тип взаимосвязей, которые может иметь узел, отсутствуют.

База данных в памяти

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

Что такое хранилище данных?

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

Amazon Redshift – полностью управляемый сервис облачного хранения данных, объем которых измеряется в петабайтах. Вы можете начать с нескольких сотен ГБ и масштабировать объем данных до петабайтов и более.

Для чего используются базы данных?

Базы данных применяются в разных отраслях для реализации различных примеров использования. Далее приведены некоторые их примеры.

Выявление мошенничества

Графовые базы данных используются для управления идентификацией и выявления мошенничества. Алгоритмы машинного обучения находят закономерности, а также автоматически и заблаговременно обнаруживают мошеннические действия.

Управление документами 

Базы данных NoSQL хранят такие документы, как статьи и контракты, а также управляют ими. Кроме того, с их помощью организации могут осуществлять запросы и индексировать документы.

Игры и развлечения

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

Для чего нужны облачные базы данных AWS?

Облако AWS предлагает широкий выбор специализированных баз данных для любого предприятия. Базы данных AWS поддерживают любые задачи по управлению базами данных, такие как выделение сервера, исправление, настройка и резервное копирование. Благодаря этому вы можете сосредоточиться на разработке приложений, пока AWS непрерывно выполняет мониторинг ваших баз данных и автоматизирует масштабирование. Далее приведены некоторые примеры сервисов баз данных AWS.

  • Служба реляционных баз данных Amazon (Amazon RDS) – это управляемый сервис, который упрощает настройку, использование и масштабирование реляционной базы данных в облаке.
  • Amazon Aurora – реляционная база данных, созданная для работы в облаке. Это полностью управляемый сервис, который автоматизирует такие трудоемкие задачи, как выделение ресурсов, применение исправлений, резервное копирование, восстановление, обнаружение отказов и устранение неполадок.
  • Amazon Neptune – графо-ориентированная база данных, способная выполнять более 100 000 запросов в секунду.
  • Amazon Redshift – полностью управляемый сервис облачного хранения данных, объем которых измеряется в петабайтах.
  • Amazon ElastiCache – полностью управляемая, масштабируемая и надежная база данных NoSQL в памяти. Она является популярным решением для мобильных приложений, игр, электронной коммерции и других программ, требующих хранения часто используемых данных в памяти.

Узнайте о том, как выбрать базу данных, или создайте бесплатный аккаунт AWS, чтобы начать работу уже сегодня. 

Что такое NoSQL? Описание баз данных NoSQL

Базы данных NoSQL (также известные как «не только SQL») не являются табличными базами данных и хранят данные иначе, чем реляционные таблицы. Базы данных NoSQL бывают разных типов в зависимости от их модели данных. Основными типами являются документ, ключ-значение, широкий столбец и график. Они обеспечивают гибкие схемы и легко масштабируются при больших объемах данных и высокой пользовательской нагрузке.

В этой статье вы узнаете что такое база данных NoSQL, почему (и когда!) вы должны использовать один, а как , чтобы начать.

Обзор

В этой статье рассматриваются:

  • Что такое база данных NoSQL?
    • Краткая история баз данных NoSQL
    • Особенности базы данных NoSQL
    • Типы баз данных NoSQL
    • Различия между РСУБД и NoSQL
    • Почему NoSQL?
    • Когда следует использовать NoSQL?
    • Неправильные представления о базе данных NoSQL
  • Учебное пособие по запросам NoSQL
  • Сводка
  • Часто задаваемые вопросы

Что такое база данных NoSQL?

Когда люди используют термин «база данных NoSQL», они обычно используют его для обозначения любой нереляционной базы данных. Некоторые говорят, что термин «NoSQL» означает «не SQL», в то время как другие говорят, что он означает «не только SQL». В любом случае, большинство согласны с тем, что базы данных NoSQL — это базы данных, которые хранят данные в формате, отличном от реляционных таблиц.

Краткая история баз данных NoSQL

Базы данных NoSQL появились в конце 2000-х, когда стоимость хранения резко снизилась. Прошли те времена, когда нужно было создавать сложную, трудноуправляемую модель данных, чтобы избежать дублирования данных. Разработчики (а не хранилище) становились основной статьей расходов при разработке программного обеспечения, поэтому базы данных NoSQL были оптимизированы для повышения производительности разработчиков.

Поскольку затраты на хранение быстро снижались, объем данных, которые приложения должны были хранить и запрашивать, увеличивался. Эти данные были самых разных форм и размеров — структурированные, полуструктурированные и полиморфные — и заранее определить схему стало практически невозможно. Базы данных NoSQL позволяют разработчикам хранить огромные объемы неструктурированных данных, что дает им большую гибкость.

Кроме того, популярность Agile Manifesto росла, и инженеры-программисты переосмысливали свои методы разработки программного обеспечения. Они признавали необходимость быстрой адаптации к изменяющимся требованиям. Им нужна была возможность быстро выполнять итерации и вносить изменения в свой программный стек — вплоть до базы данных. Базы данных NoSQL предоставили им такую ​​гибкость.

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

Функции базы данных NoSQL

Каждая база данных NoSQL имеет свои уникальные функции. На высоком уровне многие базы данных NoSQL имеют следующие функции:

  • Гибкие схемы
  • Горизонтальное масштабирование
  • Быстрые запросы благодаря модели данных
  • Простота использования для разработчиков

Ознакомьтесь с преимуществами баз данных NoSQL? чтобы узнать больше о каждой из перечисленных выше функций.

Типы баз данных NoSQL

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

  • Базы данных документов хранить данные в документах, аналогичных объектам JSON (нотация объектов JavaScript). Каждый документ содержит пары полей и значений. Значения обычно могут быть различных типов, включая такие вещи, как строки, числа, логические значения, массивы или объекты.
  • Базы данных «ключ-значение» — это более простой тип базы данных, где каждый элемент содержит ключи и значения.
  • Хранилища с широкими столбцами хранят данные в таблицах, строках и динамических столбцах.
  • Графические базы данных хранить данные в узлах и ребрах. Узлы обычно хранят информацию о людях, местах и ​​вещах, а ребра хранят информацию об отношениях между узлами.

Дополнительные сведения см. на странице Общие сведения о различных типах баз данных NoSQL.

Разница между реляционными СУБД и базами данных NoSQL

Несмотря на то, что между системами управления реляционными базами данных (RDBMS) и базами данных NoSQL существует множество различий, одно из ключевых различий заключается в способе моделирования данных в базе данных. В этом разделе мы рассмотрим пример моделирования одних и тех же данных в реляционной базе данных и базе данных NoSQL. Затем мы выделим некоторые другие ключевые различия между реляционными базами данных и базами данных NoSQL.

РСУБД против NoSQL: пример моделирования данных

Рассмотрим пример хранения информации о пользователе и его увлечениях. Нам нужно сохранить имя пользователя, фамилию, номер мобильного телефона, город и увлечения.

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

Пользователи

90 123
ID имя фамилия сотовый город
1 Лесли Йепп 8125552344 Пауни

Хобби

901 27 1 9012 3
ID user_id хобби
10 скрапбукинг
11 1 есть вафли
12 1 рабочий

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

Модель данных, которую мы разрабатываем для базы данных NoSQL, будет зависеть от типа выбранной нами базы данных NoSQL. Давайте рассмотрим, как хранить ту же информацию о пользователе и его увлечениях в базе данных документов, такой как MongoDB.

 {
   "_id": 1,
   "first_name": "Лесли",
   "last_name": "Да",
   "ячейка": "8125552344",
   "город": "Пауни",
   "хобби": ["скрапбукинг", "поедание вафель", "работа"]
} 

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

Чтобы увидеть более подробную версию этого примера моделирования данных, прочитайте Сопоставление терминов и понятий из SQL в MongoDB.

Другие различия между РСУБД и реляционными базами данных

Хотя в приведенном выше примере показаны различия в моделях данных между реляционными базами данных и базами данных NoSQL, существует много других важных различий, в том числе:

  • Гибкость схемы
  • Метод масштабирования
  • Поддержка для сделок
  • Зависимость от сопоставления данных с объектами

Чтобы узнать больше о различиях между реляционными базами данных и базами данных NoSQL, посетите страницу NoSQL и базы данных SQL или посмотрите презентацию From RDBMS to NoSQL от AWs re:Invent 2022.

Почему NoSQL?

Базы данных NoSQL используются практически во всех отраслях. Варианты использования варьируются от крайне важных (например, хранение финансовых данных и медицинских записей) до более забавных и легкомысленных (например, хранение показаний IoT из умного кошачьего туалета).

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

Когда следует использовать NoSQL?

При принятии решения о том, какую базу данных использовать, лица, принимающие решения, обычно обнаруживают, что один или несколько из следующих факторов приводят их к выбору базы данных NoSQL:

  • Быстрая гибкая разработка
  • Хранение структурированных и частично структурированных данных
  • Огромный объемы данных
  • Требования к масштабируемой архитектуре
  • Современные парадигмы приложений, такие как микросервисы и потоковая передача в реальном времени

Дополнительные сведения о перечисленных выше причинах см. в разделах «Когда использовать базы данных NoSQL» и «Изучение примеров баз данных NoSQL».

Неверные представления о базах данных NoSQL

За прошедшие годы в сообществе разработчиков распространилось множество неправильных представлений о базах данных NoSQL. В этом разделе мы обсудим два наиболее распространенных заблуждения:

  • Реляционные данные лучше всего подходят для реляционных баз данных.
  • Базы данных NoSQL не поддерживают транзакции ACID.

Чтобы узнать больше о распространенных заблуждениях, прочитайте «Все, что вы знаете о MongoDB, неверно».

Заблуждение: данные отношений лучше всего подходят для реляционных баз данных

Распространенное заблуждение состоит в том, что базы данных NoSQL или нереляционные базы данных плохо хранят данные отношений. Базы данных NoSQL могут хранить данные об отношениях — просто они хранят их иначе, чем реляционные базы данных.

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

Заблуждение: базы данных NoSQL не поддерживают транзакции ACID

Другое распространенное заблуждение состоит в том, что базы данных NoSQL не поддерживают транзакции ACID. Некоторые базы данных NoSQL, такие как MongoDB, действительно поддерживают транзакции ACID.

Обратите внимание, что способ моделирования данных в базах данных NoSQL может устранить необходимость в транзакциях с несколькими записями во многих случаях использования. Рассмотрим предыдущий пример, в котором мы хранили информацию о пользователе и его увлечениях как в реляционной базе данных, так и в базе данных документов. Чтобы обеспечить совместное обновление информации о пользователе и его увлечениях в реляционной базе данных, нам потребуется использовать транзакцию для обновления записей в двух таблицах. Чтобы сделать то же самое в базе данных документов, мы могли бы обновить один документ — транзакция с несколькими записями не требуется.

Руководство по запросам NoSQL

Существует множество баз данных NoSQL. Сегодня мы попробуем MongoDB, самую популярную в мире базу данных NoSQL по версии DB-Engines.

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

Аутентификация в MongoDB Atlas

Самый простой способ начать работу с MongoDB — MongoDB Atlas. Atlas — это полностью управляемая база данных как услуга MongoDB. У Atlas есть бессрочный бесплатный уровень, который вы будете использовать сегодня.

  1. Перейти к Атласу.
  2. Создайте учетную запись, если вы еще этого не сделали.
  3. Войдите в Атлас.
  4. Создайте организацию и проект Atlas.

Для получения дополнительной информации о том, как выполнить описанные выше шаги, посетите официальную документацию MongoDB по созданию учетной записи Atlas.

Создайте кластер и базу данных

Кластер — это место, где вы можете хранить свои базы данных MongoDB. В этом разделе вы создадите бесплатный кластер.

Когда у вас есть кластер, вы можете начать хранить данные в Atlas. Вы можете вручную создать базу данных в Atlas Data Explorer, в MongoDB Shell, в MongoDB Compass или с помощью вашего любимого языка программирования. Вместо этого в этом примере вы импортируете образец набора данных Atlas.

  1. Создайте бесплатный кластер, выполнив действия, описанные в официальной документации MongoDB.
  2. Загрузите образец набора данных, следуя инструкциям в официальной документации MongoDB.

Загрузка примера набора данных займет несколько минут.

Хотя для этого руководства нам не нужно думать о проектировании базы данных, обратите внимание, что проектирование базы данных и моделирование данных являются основными факторами производительности MongoDB. Узнайте больше о передовых методах моделирования данных в MongoDB:

  • Серия блогов о шаблонах проектирования схемы MongoDB
  • Серия блогов о шаблонах дизайна схемы MongoDB
  • Бесплатный университетский курс MongoDB: Моделирование данных M320

Запрос к базе данных

Теперь, когда у вас есть данные в кластере, давайте сделаем запрос! Точно так же, как у вас было несколько способов создать базу данных, у вас есть несколько вариантов запроса к базе данных: в Atlas Data Explorer, в оболочке MongoDB, в MongoDB Compass или с помощью вашего любимого языка программирования.

В этом разделе вы будете запрашивать базу данных с помощью Atlas Data Explorer. Это хороший способ начать работу с запросами, так как он не требует настройки.

  1. Перейдите к обозревателю данных (вкладка «Коллекции»), если вы еще этого не сделали. См. официальную документацию MongoDB для получения информации о том, как перейти к обозревателю данных.

    На левой панели проводника данных отображается список баз данных и коллекций в текущем кластере. На правой панели проводника данных отображается список документов в текущей коллекции.

    Обозреватель данных отображает список документов в коллекции listingsAndReviews.

    1. Разверните базу данных sample_mflix на левой панели. Отображается список коллекций базы данных.

    2. Выберите коллекцию фильмов . Представление поиска отображается на правой панели. Отображаются первые двадцать документов результатов.

    3. Теперь вы готовы запросить коллекцию фильмов . Давайте запросим фильм Гордость и предубеждение. В строке запроса введите { title: "Гордость и предубеждение"} и нажмите Применить .

Два документа с названием «Гордость и предубеждение» возвращены.

Результаты поиска фильмов с названием «Гордость и предубеждение».

Поздравляем! Вы успешно запросили базу данных NoSQL!

Продолжить изучение ваших данных

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

Когда вы будете готовы попробовать более сложные запросы, объединяющие ваши данные, создайте конвейер агрегации. Платформа агрегации — невероятно мощный инструмент для анализа ваших данных. Чтобы узнать больше, пройдите бесплатный университетский курс MongoDB M121 The MongoDB Aggregation Framework.

Если вы хотите визуализировать свои данные, ознакомьтесь с диаграммами MongoDB. Диаграммы — это самый простой способ визуализации данных, хранящихся в Atlas и Atlas Data Lake. Диаграммы позволяют создавать информационные панели, заполненные визуализацией ваших данных.

Резюме

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

MongoDB — самая популярная в мире база данных NoSQL. Узнайте больше о MongoDB Atlas и попробуйте бесплатный уровень.

Хотите узнать больше, теперь у вас есть собственная учетная запись Atlas? Отправляйтесь в Университет MongoDB, где вы сможете пройти бесплатное онлайн-обучение у инженеров MongoDB и получить сертификат MongoDB. Учебники по быстрому запуску — еще одно отличное место для начала; они помогут вам быстро начать работу с вашим любимым языком программирования.

Следуйте этому руководству с MongoDB Atlas

Оцените преимущества использования MongoDB, первоклассной базы данных NoSQL, в облаке.

Каковы преимущества NoSQL?

Многие базы данных NoSQL имеют следующие преимущества:

  • Гибкие схемы
  • Горизонтальное масштабирование
  • Быстрые запросы благодаря модели данных
  • Простота использования для разработчиков

Ознакомьтесь Преимущества баз данных NoSQL? Больше подробностей.

Что такое окончательная согласованность?

Согласованность в конечном итоге является свойством распределенных баз данных. Согласованность в конечном счете гарантирует, что при обновлении базы данных все узлы в распределенной базе данных будут отражать это обновление.

Что такое теорема CAP?

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

Для чего используется NoSQL?

Базы данных NoSQL используются практически во всех отраслях для самых разных целей.

Тип базы данных NoSQL определяет типичный вариант использования. Например, базы данных документов, такие как MongoDB, являются базами данных общего назначения. Базы данных «ключ-значение» идеально подходят для больших объемов данных с простыми поисковыми запросами. Хранилища с широкими столбцами хорошо подходят для случаев использования с большими объемами данных и предсказуемыми шаблонами запросов. Базы данных Graph отлично подходят для анализа и отслеживания взаимосвязей между данными. Дополнительную информацию см. в разделе Общие сведения о различных типах баз данных NoSQL.

Что такое база данных NoSQL?

База данных NoSQL — это база данных, в которой данные хранятся в формате, отличном от реляционных таблиц.

Как написать запрос NoSQL?

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

Тяжело ли изучать NoSQL?

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

Обратите внимание, что тем, кто прошел обучение и имеет опыт работы с реляционными базами данных, скорее всего, придется немного поучиться, поскольку они приспосабливаются к новым способам моделирования данных в базах данных NoSQL.

Является ли JSON NoSQL?

Базы данных документов — это тип базы данных NoSQL, в которой данные хранятся в документах JSON или BSON.

Какой язык используется для запросов NoSQL?

Базы данных NoSQL охватывают множество типов и реализаций. В результате к базам данных NoSQL можно обращаться с помощью различных языков запросов и API. К MongoDB, самой популярной в мире базе данных NoSQL, можно обращаться с помощью языка запросов MongoDB (MQL).

Есть ли у NoSQL схема?

Базы данных NoSQL обычно имеют гибкие схемы. Обратите внимание, что некоторые базы данных NoSQL, такие как MongoDB, также поддерживают проверку схемы, поэтому разработчики могут блокировать свои схемы в той или иной степени, когда они будут готовы.

Эта статья была написана Лорен Шефер, адвокатом разработчиков MongoDB.

Узнайте больше об основных различиях между базами данных NoSQL и SQL

Что такое база данных SQL? — Глоссарий ИТ

Ресурсы

База данных SQL

Что вам нужно знать о структуре базы данных SQL, типах, преимуществах, показателях производительности и многом другом.

  • Определение базы данных SQL
  • Структура таблицы базы данных SQL
  • Как используются базы данных SQL?
  • Преимущества использования базы данных SQL
  • Показатели производительности базы данных SQL
  • Список баз данных SQL
  • Отличия баз данных SQL и NoSQL
  • Определение базы данных SQL

    Определение базы данных SQL

    База данных SQL или реляционная база данных представляет собой набор высокоструктурированных таблиц, в которых каждая строка отражает объект данных, а каждый столбец определяет конкретное информационное поле. Реляционные базы данных строятся с использованием языка структурированных запросов (SQL) для создания, хранения, обновления и извлечения данных. Таким образом, SQL является базовым языком программирования для всех систем управления реляционными базами данных (RDBMS), таких как MySQL, Oracle и Sybase, среди прочих.

  • Структура таблицы базы данных SQL

    Структура таблицы базы данных SQL

    Сервер базы данных SQL хранит и организует данные в таблицах. В СУБД таблицы — это фундаментальные объекты базы данных, логически предназначенные для сбора данных в формате строк и столбцов. В то время как строки отражают объекты, столбцы определяют атрибуты каждого объекта. Например, в таблице данных клиентов каждая строка отражает запись для конкретного клиента, а каждый столбец таблицы содержит соответствующую информацию о клиенте, такую ​​как имя и адрес клиента. Ниже приведены ключевые элементы таблицы базы данных SQL:

     

    • Столбцы: Каждый столбец содержит определенную атрибутивную информацию, а свойства столбца определяют тип данных (например, числовые или текстовые данные) и допустимый диапазон.
      Каждая таблица имеет первичный ключ для уникальной идентификации сущности. Конкретный столбец, например идентификатор клиента в таблице данных о клиентах, может быть первичным ключом.
    • Строки: Пользователи базы данных могут добавлять данные в каждую строку и выполнять SQL-запросы для извлечения данных. Для первичного ключа каждая строка содержит уникальное значение, что также помогает решить проблемы с дублированием данных.
  • Как используются базы данных SQL?

    Как используются базы данных SQL?

    Базы данных SQL служат краеугольным камнем для нескольких приложений и служб в различных отраслях. Предприятия полагаются на серверы баз данных SQL для хранения и извлечения данных, поскольку они обеспечивают широкий спектр операционных возможностей, включая обработку транзакций, аналитику и бизнес-аналитику, необходимые для управления критически важными бизнес-приложениями.

     

    Реляционные базы данных содержат несколько таблиц с соответствующими столбцами (атрибут) и строками (запись) вместе с уникальным первичным ключом. Когда пользователь выполняет запрос, он либо обновляет или изменяет данные в базе данных, либо извлекает соответствующие результаты для определенных запросов после проверки ограничений.

     

    Пользователи могут использовать базы данных SQL для получения значимой информации путем объединения различных таблиц, чтобы лучше понять контекст и отношения данных. SQL используется для выполнения основных функций управления данными и сложных запросов для преобразования имеющихся необработанных данных в полезную и контекстуальную информацию. Пользователи базы данных могут использовать стандартные языки SQL, такие как язык определения данных (DDL) для создания базы данных и структур таблиц, а также язык обработки данных (DML) для вставки, обновления, удаления и выбора данных в таблицах.

  • Преимущества использования базы данных SQL

    Преимущества использования базы данных SQL

    Реляционные базы данных предлагают множество преимуществ и являются предпочтительным вариантом базы данных для предприятий, например:

     

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

    Показатели производительности базы данных SQL

    Для эффективного мониторинга производительности базы данных и точной настройки сервера базы данных SQL администратор базы данных должен активно отслеживать ключевые показатели производительности. Предприятия могут извлечь выгоду из использования инструментов анализа базы данных SQL для более эффективного управления производительностью базы данных. Отслеживание показателей помогает выявить потенциальные проблемы и аномалии, чтобы инициировать адекватное устранение неполадок. Вот список ключевых показателей, по которым можно отслеживать и оценивать, хорошо ли работает сервер базы данных SQL:

     

    • Использование ЦП: Наиболее распространенный показатель для оценки производительности сервера базы данных SQL, поскольку он помогает анализировать использование памяти и определять перегрузку сервера в данный момент времени.
    • Использование диска базы данных: Измерение использования диска базы данных является важным компонентом мониторинга производительности базы данных. Это помогает отслеживать использование ресурсов и настраивать сигналы тревоги и уведомления для неэффективного распределения ресурсов.
    • Чтений страниц/мин: Оценивает нагрузку на системную память, измеряя количество страниц, считываемых из памяти в минуту. Анализ этой метрики с течением времени помогает определить, есть ли проблемы с системной памятью.
    • Cache Hit Ratio: Измеряет, как часто сервер базы данных SQL обращается к страницам из кэша. Более низкий коэффициент попаданий в кэш может указывать на узкое место системной памяти. Важным фактором, влияющим на коэффициент попаданий в кэш, является продолжительность жизни страницы. Ожидаемое длительное время жизни страницы означает, что страница остается в памяти в течение длительного времени, что приводит к лучшему коэффициенту попаданий в кэш.
    • Подключения пользователей: Измеряет количество пользователей, подключенных к серверу базы данных. Долгосрочный анализ этой метрики позволяет получить представление о моделях нагрузки на память и быстро определить другие связанные проблемы.
    • Среднее время ожидания блокировки: Сервер базы данных SQL управляет несколькими пользователями в данный момент времени. Следовательно, он может резервировать ресурсы для определенных процессов через разные промежутки времени, и другим процессам, возможно, придется ждать, пока ресурсы не будут освобождены. Более высокое значение этого показателя указывает на проблемы со временем загрузки; поэтому рекомендуется убедиться, что значение этой метрики остается ближе к нулю.
  • Список баз данных SQL

    Список баз данных SQL

    Большинство предприятий используют реляционные базы данных, начиная от традиционных настольных систем и заканчивая современными облачными системами, открытыми или коммерческими системами с закрытым исходным кодом. Давайте посмотрим на список наиболее часто используемых баз данных SQL.

     

    MySQL

     

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

     

    PostgreSQL

     

    В отличие от MySQL и MariaDB, PostgreSQL представляет собой объектно-реляционную систему управления базами данных (ORDBMS), предназначенную для поддержки более сложных и разнообразных моделей данных. Он предлагает ряд корпоративных функций, включая масштабируемость, безопасность и улучшенную поддержку автоматизации через интерфейс командной строки или прямой доступ через Интернет. PostgreSQL поддерживает Windows, macOS и несколько дистрибутивов Linux. Он также поддерживает хранимые процедуры, очень сложный язык программирования, созданный на основе SQL для упрощения сложных транзакций и обеспечения соответствия требованиям ACID (атомарность, согласованность, изоляция, надежность).

     

    Microsoft SQL Server

     

    Microsoft SQL Server — еще одна самая популярная реляционная база данных, код которой принадлежит Microsoft. SQL Server поддерживает распространенные операционные системы Windows и Linux и упрощает доступ с помощью запросов SQL и графических пользовательских интерфейсов. Крупные корпоративные приложения обычно используют базы данных Microsoft SQL Server вместо баз данных SQL, доступных в среде с открытым исходным кодом. Предприятия могут использовать ряд функций текущей версии SQL Server, включая ссылочную целостность, управление параллельным выполнением нескольких версий, более высокую доступность, детализированную блокировку и повышенную стабильность.

     

    Oracle Database

     

    Oracle DB – коммерческая реляционная база данных с закрытым исходным кодом, принадлежащая корпорации Oracle. Он поддерживает операционные системы macOS, Windows и Linux и эффективно используется для крупных приложений в различных отраслях. База данных Oracle может облегчить автоматизацию управления данными и сервером.

  • Отличия баз данных SQL и NoSQL

    Различия между базами данных SQL и NoSQL

    В отличие от баз данных SQL, базы данных NoSQL хранят данные в формате документа, а не в таблицах. Базы данных NoSQL хранят неструктурированные данные, такие как фотографии, видео, статьи и многое другое, в одном документе. Ниже приведены некоторые ключевые различия между базами данных SQL и NoSQL:

     

    • Структура базы данных: В отличие от реляционных баз данных с таблицами для хранения информации, базы данных NoSQL используют подход пар ключ-значение для хранения всех данных в одном месте. . В данном случае ключ указывает на уникальный элемент, например, адрес электронной почты для сотрудников.
    • Гибкость: Базы данных NoSQL могут хранить огромные объемы неструктурированных данных без ограничений на типы данных, которые пользователи хотят хранить вместе. Гибкость в хранении различных новых типов данных в соответствии с различными потребностями делает базы данных NoSQL более интуитивно понятными и расширяет область применения. Однако базы данных требуют дополнительных усилий по обработке и большего объема памяти, чем реляционные базы данных.
    • Непротиворечивость: Обеспечение доступности и согласованности данных является критически важным аспектом для обеспечения исключительной производительности базы данных. В то время как реляционные базы данных всегда обеспечивают согласованность данных между экземплярами сервера базы данных SQL, некоторые базы данных NoSQL, такие как Redis, отвечают на запрос с информацией, которая может быть неверной на несколько секунд.

Представлено в этом ресурсе

Как то, что вы видите? Попробуйте продукты.

Анализатор производительности базы данных

Мониторинг и оптимизация нескольких платформ систем управления базами данных (СУБД) для облачных и локальных сред.

СКАЧАТЬ БЕСПЛАТНУЮ ПРОБНУЮ ПРОБНУЮ ВЕРСИЮ Полная функциональность в течение 14 дней ССЫЛКА НА ПРОБНУЮ ПРОБНУЮ ЭЛЕКТРОННУЮ ПОЧТУ Полная функциональность в течение 14 дней

Монитор производительности базы данных

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

НАЧАТЬ БЕСПЛАТНУЮ ПРОБНУЮ ПРОБНУЮ ВЕРСИЮ Полная функциональность в течение 14 дней НАЧАТЬ БЕСПЛАТНУЮ ПРОБНУЮ ПРОБНУЮ ВЕРСИЮ Полная функциональность в течение 14 дней

SolarWinds SQL Sentry

Мониторинг производительности базы данных для платформы данных Майкрософт с быстрым анализом первопричин и обзором всего комплекса.

СКАЧАТЬ БЕСПЛАТНУЮ ПРОБНУЮ ПРОБНУЮ ВЕРСИЮ Полная функциональность в течение 14 дней ССЫЛКА НА ПРОБНУЮ ПРОБНУЮ ЭЛЕКТРОННУЮ ПОЧТУ Полная функциональность в течение 14 дней

Мы Geekbuilt.