{
    "version": "https:\/\/jsonfeed.org\/version\/1.1",
    "title": "Slavlotski: заметки с тегом БД",
    "_rss_description": "Меня зовут Влад и я Data Engineer. В свободное от работы время люблю писать электронную музыку, играть в видеоигры",
    "_rss_language": "ru",
    "_itunes_email": "",
    "_itunes_categories_xml": "",
    "_itunes_image": "",
    "_itunes_explicit": "",
    "home_page_url": "https:\/\/slavlotski.com\/tags\/bd\/",
    "feed_url": "https:\/\/slavlotski.com\/tags\/bd\/json\/",
    "icon": "https:\/\/slavlotski.com\/pictures\/userpic\/userpic@2x.jpg?1696305806",
    "authors": [
        {
            "name": "Slavlotski",
            "url": "https:\/\/slavlotski.com\/",
            "avatar": "https:\/\/slavlotski.com\/pictures\/userpic\/userpic@2x.jpg?1696305806"
        }
    ],
    "items": [
        {
            "id": "12",
            "url": "https:\/\/slavlotski.com\/all\/relyacionnye-i-neryalyacionnye-bd\/",
            "title": "Реляционные и нереляционные БД",
            "content_html": "<div class=\"e2-text-picture\">\n<img src=\"https:\/\/slavlotski.com\/pictures\/relyacionnye-i-neryalyacionnye-bd.png\" width=\"671\" height=\"322\" alt=\"\" \/>\n<div class=\"e2-text-caption\">Источник: <a href=\"https:\/\/bigdataschool.ru\/wiki\/nosql\">bigdataschool<\/a><\/div>\n<\/div>\n<h2><b>Реляционные БД<\/b><\/h2>\n<p>SQL подход — это семейство реляционных баз данных, основанное на отношениях (связях) таблиц друг с другом. Каждая таблица представлена в виде столбцов и строк. Столбец имеет свой предопределенный тип данных, в каждой ячейке значение. Строка хранит набор связанных значений, относящихся к объекту. Для определения уникальности строки существуют уникальный идентификатор (primary key). Строки из нескольких таблиц могут быть связаны посредством внешних ключей (foreign key).<\/p>\n<p><b>Отличительные черты реляционной модели<\/b>:<br \/>\n— подходит для решения большинства существующих задач<br \/>\n— запись и чтение структурированных данных<br \/>\n— данные связаны в виде логических отношений таблиц<br \/>\n— в таблицах есть строки и столбцы, где каждый атрибут имеет свой тип данных, а в ячейке свое значение<br \/>\n— есть уникальный ключ (primary key) для определения уникальности записи<br \/>\n— есть внешний ключ (foreign key) для отношения (связи) строк одной таблицы с строками другой таблицы<br \/>\n— необходима фиксированная схема (schema), где описана структура таблицы (наименование полей, тип полей и т. п.) наложенные на таблицу ограничения (constraints, checks, excludes)<br \/>\n— благодаря поддержки <a href=\"https:\/\/ru.wikipedia.org\/wiki\/ACID\">ACID свойств<\/a> обеспечивается целостное хранение и согласованность данных, высокая отказоустойчивость и надежность<br \/>\n— поддержка языка SQL для манипуляций с данными<\/p>\n<p><b>Недостатки реляционных БД<\/b>:<br \/>\n— сложно горизонтально масштабироваться<br \/>\n— невозможно хранить данные с заранее неизвестной структурой<br \/>\n— менее эффективны в обработке больших объемов данных (террабайты, петабайты), чем нереляционные БД<\/p>\n<p>Популярными представителями реляционных СУБД являются: Oracle, MySQL, MSSQL, Postgres<\/p>\n<h2><b>Нереляционные БД (NotOnlySQL)<\/b><\/h2>\n<p>NoSQL подход — это семейство нереляционных баз данных, реализующее отличный от традиционной табличной модели представления данных, где управление данными осуществляется не только с помощью языка структурированных запросов SQL.<\/p>\n<p><b>Отличительные черты нереляционной модели<\/b>:<br \/>\n— используются для решения узкоспециализированных задач<br \/>\n— запись и чтение неструктурированных данных<br \/>\n— гибкость, отсутствует фиксированное описание схемы из-за хранения данных без строгой структуры в виде документов, ключ-значений, графов и т. д.<br \/>\n— взамен ACID принципов используются <a href=\"https:\/\/ru.wikipedia.org\/wiki\/NoSQL\">BASE принципы<\/a>, которые основаны на <a href=\"https:\/\/habr.com\/ru\/articles\/130577\/\">CAP теореме<\/a><br \/>\n— возможность горизонтального масштабирования путем добавления нового сервера в кластер<br \/>\n— поддержка <a href=\"https:\/\/ru.wikipedia.org\/wiki\/Сегментирование_(базы_данных)#:~:text=sharding)%20—%20подход%2C%20предполагающий%20разделение,правило%2C%20на%20отдельном%20вычислительном%20узле.\">шардирования<\/a><br \/>\n— высокая доступность и отказоустойчивость благодаря репликации данных<br \/>\n— обработка больших объемов неструктированных данных с низкой временной задержкой<br \/>\n— поддержка собственных SQL-подобных языков запросов, RESTful-интерфейсов, API и сложных типов данных<\/p>\n<p><b>Недостатки нереляционных БД<\/b>:<br \/>\n— отсутствие сильной целостности данных приводит к случаям чтения неактуальной информации, реплика не всегда может успеть обновиться актуальными данными<br \/>\n— сильная привязка к специфике внутреннего языка запросов конкретной СУБД, когда в реляционной БД есть SQL, который универсален для всех реляционных баз. Это приводит к сложности перехода от одной нереляционной БД к другой<\/p>\n<p><b>Виды NoSQL БД<\/b>:<br \/>\n<b>Ключ-значение (key-value)<\/b><\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/slavlotski.com\/pictures\/relyacionnye-i-neryalyacionnye-bd-1.png\" width=\"2240\" height=\"1260\" alt=\"\" \/>\n<div class=\"e2-text-caption\">Источник: <a href=\"https:\/\/cloud.yandex.ru\/ru\/blog\/posts\/2022\/10\/nosql\">cloud.yandex.ru<\/a><\/div>\n<\/div>\n<p>В БД данного типа записи хранятся в парах ключ-значение, где ключ — уникальный идентификатор. Key-value БД используются для систем, где очень важна скорость и данные представлены не в сложном виде. Такие БД хорошо подходят например, для хранения кэша данных, пользовательских сессий, корзин в интернет магазине.<\/p>\n<p>Популярными представителями являются: Redis (Remote Dictionary Server), DynamoDB,  Memcached<\/p>\n<p><b>Колоночные (column family store)<\/b><\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/slavlotski.com\/pictures\/relyacionnye-i-neryalyacionnye-bd-2.png\" width=\"630\" height=\"258\" alt=\"\" \/>\n<div class=\"e2-text-caption\">Стандартная строковая СУБД. Источник: <a href=\"https:\/\/clickhouse.com\/docs\/ru\/faq\/general\/columnar-database#:~:text=Что%20такое%20столбцовая%20(колоночная)%20база,(независимо)%20от%20других%20столбцов.\">clickhouse.com<\/a><\/div>\n<\/div>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/slavlotski.com\/pictures\/relyacionnye-i-neryalyacionnye-bd-3.png\" width=\"630\" height=\"258\" alt=\"\" \/>\n<div class=\"e2-text-caption\">Столбцовая СУБД. Источник: <a href=\"https:\/\/clickhouse.com\/docs\/ru\/faq\/general\/columnar-database#:~:text=Что%20такое%20столбцовая%20(колоночная)%20база,(независимо)%20от%20других%20столбцов.\">clickhouse.com<\/a><\/div>\n<\/div>\n<p>В колоночных БД данные каждой колонки хранятся отдельно независимо друг от друга (для каждого столбца создается свой файл). Такой принцип позволяет считывать с диска только данные тех столбцов что указаны в запросе — это ускоряет процесс чтения данных из больших таблиц, предназначенных для аналитических целей. Также преимуществом такого хранения является возможность сильно сжимать данные, что значительно экономит место на диске. Недостатком является выполнение операций над строками, у такого типа БД они более затратные.<\/p>\n<p>Популярными представителями являются: Cassandra, Apache Hbase, ClickHouse<\/p>\n<p><b>Документоориентированные (document-oriented store)<\/b><\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/slavlotski.com\/pictures\/relyacionnye-i-neryalyacionnye-bd-5.png\" width=\"890\" height=\"559\" alt=\"\" \/>\n<div class=\"e2-text-caption\">Схема документоориентированного БД. Источник <a href=\"https:\/\/practicum.yandex.ru\/blog\/subd-mongodb-ustanovka-i-ispolzovanie\/\">practicum.yandex.ru<\/a><\/div>\n<\/div>\n<p>Данные в этом типе БД хранятся в виде документов в формате JSON, YAML, XML. Документы складываются в коллекции, а коллекции группируются логически тем самым создается иерархия. Преимуществом такой БД является гибкость, значения и структура документов может меняться в процессе разработки. Такие БД часто применяются для каталогов товаров в маркетплейсах, в соцсетях, платформ с блогами и видео, геоаналитики.<\/p>\n<p>Популярными представителями являются: MongoDB, Amazon DynamoDB, CouchDB<\/p>\n<h2><b>Бонус<\/b><\/h2>\n<p>Классное и креативное объяснение NoSQL простым языком:<\/p>\n<div class=\"e2-text-video\">\n<iframe src=\"https:\/\/www.youtube.com\/embed\/IBzTDkYNB7I?enablejsapi=1\" allow=\"autoplay\" frameborder=\"0\" allowfullscreen><\/iframe>\n<\/div>\n",
            "date_published": "2023-12-22T17:49:25+05:00",
            "date_modified": "2025-10-28T23:22:24+05:00",
            "tags": [
                "IT",
                "БД"
            ],
            "image": "https:\/\/slavlotski.com\/pictures\/relyacionnye-i-neryalyacionnye-bd.png",
            "_date_published_rfc2822": "Fri, 22 Dec 2023 17:49:25 +0500",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "12",
            "_e2_data": {
                "is_favourite": true,
                "links_required": [
                    "system\/library\/jquery\/jquery.js",
                    "system\/library\/media-seek\/media-seek.js"
                ],
                "og_images": [
                    "https:\/\/slavlotski.com\/pictures\/relyacionnye-i-neryalyacionnye-bd.png",
                    "https:\/\/slavlotski.com\/pictures\/relyacionnye-i-neryalyacionnye-bd-1.png",
                    "https:\/\/slavlotski.com\/pictures\/relyacionnye-i-neryalyacionnye-bd-2.png",
                    "https:\/\/slavlotski.com\/pictures\/relyacionnye-i-neryalyacionnye-bd-3.png",
                    "https:\/\/slavlotski.com\/pictures\/relyacionnye-i-neryalyacionnye-bd-5.png",
                    "https:\/\/slavlotski.com\/pictures\/remote\/youtube-IBzTDkYNB7I-cover.jpg"
                ]
            }
        },
        {
            "id": "11",
            "url": "https:\/\/slavlotski.com\/all\/traditional-db-and-mpp-db\/",
            "title": "Традиционная БД против MPP БД",
            "content_html": "<h2>Предисловие<\/h2>\n<p>В данной статье разберу чем традиционные БД отличаются от MPP, в каких задачах достаточно иметь традиционную, а в каких MPP значительно лучше.<\/p>\n<h2>Симметричная многопроцессорная архитектура SMP<\/h2>\n<p>Традиционные СУБД как Oracle, Postgres, MySQL, MSSQL используются в симметричной многопроцессорной архитектуре (SMP).<br \/>\n<b>SMP архитектура<\/b> — это share-everything архитектура, где несколько процессоров сервера одинаковой производительности совместно используют оперативную память, что позволяет быстро обмениваться данными между процессами, жесткие диски для хранения данных. Каждый процессор может решать разные задачи причем делает это независимо друг от друга.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/slavlotski.com\/pictures\/traditional-db-and-mpp-db-2.png\" width=\"562\" height=\"431\" alt=\"\" \/>\n<div class=\"e2-text-caption\">SMP архитектура<\/div>\n<\/div>\n<p><b>Преимущества SMP архитектуры относительно СУБД<\/b>:<br \/>\n— Хорошо масштабируется по вертикали, добавляются дополнительные ресурсы сервера (CPU, RAM, HDD), тем самым повышая скорость отработки запросов<br \/>\n— Один сервер легче администрировать и обслуживать (управлять правами доступа, делать резервное копирование, накатывать обновления для СУБД и т. д.)<br \/>\n— Высокая производительность на небольших объемах данных, так как данные хранятся в одном месте не нужно передавать их по сети<br \/>\n— Равномерное распределение нагрузки на процессоры сервера<br \/>\n— Отлично подходит для обработки постоянного потока (real time) небольших транзакций характерных для OLTP систем<br \/>\n— Благодаря грамотному использованию индексов достигается высокая скорость чтения данных<br \/>\n— Отказоустойчивость, выход из строя одного процессора не заблокирует работу всего сервера<\/p>\n<p><b>Недостатки<\/b>:<br \/>\n— Совместное использование, конкуренция за ресурсы сервера пользователями СУБД<br \/>\n— В вертикальном масштабировании можно упереться в потолок, где добавление новых компонент (CPU, RAM) не будет давать прирост серверу в производительности<br \/>\n— Отсутствие горизонтального масштабирования<br \/>\n— Медленная обработка аналитических-OLAP запросов<\/p>\n<p>Традиционные СУБД с SMP архитектурой хорошо показывают себя в<br \/>\nOLTP-системах, где важно обрабатывать постоянный поток (real-time) небольших по размеру транзакций с бОльшей долей операций вставки. Поэтому традиционные СУБД используются в микросервисах, веб-сайтах, CRM\/ERP системах, в банках при обработке платежных транзакций.<\/p>\n<h2>Массивно-параллельная архитектура MPP<\/h2>\n<p><b>Массивно-параллельная архитектура<\/b> — это зачастую shared-nothing архитектура, где каждому серверу выделены свои процессоры, своя оперативная память, а иногда и жесткие диски. Для общения и передачи данных между серверами все сервера подключены в одну сеть. Помимо этого в MPP СУБД встроена автоматическая разбивка данных по серверам под названием <b>sharding<\/b>. Если говорить грубо, то MPP — это несколько серверов, которые параллельно трудятся для решения одной задачи. К распространенным MPP СУБД можно отнести следующие продукты: ClickHouse, Greenplum, Vertica, Teradata.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/slavlotski.com\/pictures\/mpp-architecture.png\" width=\"886\" height=\"589\" alt=\"\" \/>\n<div class=\"e2-text-caption\">MPP архитектура<\/div>\n<\/div>\n<p><b>Преимущества MPP архитектуры относительно СУБД<\/b>:<br \/>\n— Легкая и доступная горизонтальная масштабируемость за счет добавления новых серверов в кластер<br \/>\n— Быстрая обработка аналитических-OLAP запросов за счет шардирования и партицирования<br \/>\n— Шардирование — разделение объектов базы данных на разные сегменты. Благодаря шардированию осуществляются распределенные вычисления. Шардирование в комплексе с shared-nothing концепцией дают хороший буст в производительности. Шардирование происходит благодаря дистрибуции данных по ключу, при правильном выборе ключа дистрибуции данные распределяются по сегментам равномерно, что играет ключевую роль<br \/>\n— Партицирование — разделение больших таблиц на секции, влечет за собой повышение производительности запросов путем снижения объема сканируемых данных, читаем только нужные секции. Также облегчает обслуживание таблиц, например, проще и эффективнее удалять, перемещать секции чем всю таблицу целиком<br \/>\n— Идеально подходит для корпоративных хранилищ данных<br \/>\n— Повышенная отказоустойчивость, отсутствует единая точка отказа. При выводе из строя одного из серверов кластера, работа СУБД не прерывается<br \/>\n— Возможность работать с несколькими источниками, например, разными OLTP системами, другими хранилищами или озерами данных<\/p>\n<p><b>Недостатки:<\/b><br \/>\n— Высокие требования к сети, объединяющая сервера в один кластер. Сеть должна стабильно работать и иметь высокоскоростное соединение для передачи данных<br \/>\n— Низкая производительность для OLTP нагрузок с постоянным потоком транзакций<br \/>\n— Возможность возникновения перекоса данных на серверах кластера из-за неверно подобранного ключа дистрибуции, то есть в одном сегменте потребуется обработать значительно больше данных чем в других — это приведет к низкой производительности и нехватки памяти<\/p>\n<p>В MPP СУБД фокус идет на аналитику больших данных (терабайты, петабайты), а значит предназначена решать задачи OLAP нагрузки, например, для построения корпоративного хранилища данных с обеспечением пользователей регулярными отчетами (МСФО, РСБУ), предиктивной аналитикой, подготовки данных с целью визуализации через BI инструменты.<\/p>\n",
            "date_published": "2023-11-27T12:32:50+05:00",
            "date_modified": "2023-11-30T14:11:04+05:00",
            "tags": [
                "IT",
                "БД",
                "СУБД"
            ],
            "image": "https:\/\/slavlotski.com\/pictures\/traditional-db-and-mpp-db-2.png",
            "_date_published_rfc2822": "Mon, 27 Nov 2023 12:32:50 +0500",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "11",
            "_e2_data": {
                "is_favourite": true,
                "links_required": [],
                "og_images": [
                    "https:\/\/slavlotski.com\/pictures\/traditional-db-and-mpp-db-2.png",
                    "https:\/\/slavlotski.com\/pictures\/mpp-architecture.png"
                ]
            }
        }
    ],
    "_e2_version": 4116,
    "_e2_ua_string": "Aegea 11.2 (v4116)"
}