(Этот пост также есть в моем блоге)

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

Schemaless

Ключевым отличием, конечно же, является структура данных. Как вы знаете, в мире реляционных баз данных данные хранятся в таблице. И каждая строка таблицы имеет одинаковый набор столбцов. Это означает, что модель данных хорошо смоделирована. Напротив, база данных NoSQL предлагает очень гибкую модель данных. Данные хранятся в виде документов или предметов. У каждого элемента могут быть разные столбцы. Например, в AWS DynamoDB вы можете определить таблицу с ключом раздела и ключом сортировки. Остальные атрибуты легко вставляются / обновляются во время выполнения.

Последовательность

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

Вертикальная масштабируемость против горизонтальной масштабируемости

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

Запрос

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

Последние слова

Если вас интересует база данных, есть определенно другие темы, на которые вы можете погрузиться глубже. КИСЛОТА и Теорема CAP - отличные темы для изучения. Понимание основ и умение читать руководство пользователя от поставщика базы данных являются критически важными навыками при выборе базы данных. Чтобы узнать больше о системном дизайне, вы можете найти больше в Grokking System Design и Designing Data-Intensive Application.

Предыдущие сообщения:

Интервью по проектированию системы: как разработать систему для выполнения длительных задач

Интервью по проектированию систем Ace в FAANG

Как я использую LeetCode на 6 месяцев и получаю предложение FAANG

Это все ресурсы, которые помогают мне получить работу FANG

Мои сообщения об интервью FAANG

Мои сообщения о финансах и технологиях

От разработчика веб-приложений CRUD к SDE в голосовом помощнике - мой постоянный путь к машинному обучению

Учебное пособие по разработке полного стека: интеграция бессерверной службы AWS Lambda в Angular SPA

Учебное пособие по разработке полного стека: обслуживание торговых данных с помощью бессерверного REST API, работающего на AWS Lambda

Учебное пособие по разработке полного стека: визуализация торговых данных на Angular SPA

Обучение с подкреплением: Введение в Q Learning