Как выбрать бд

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

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

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

Возможности: MySql MSSQL PostgreSQL MongoDb OrientDb CouchDB Redis Memcache Aerospike
Понятный язык запросов SQL-92 (влияет на кол-во разработчиков и их обучаемость) + + + - +   - - +
Key-Value хранение данных + + + + +   + + +
Schema-Full - строго-структурированные данные + + + - +   - - -
Schema-Less - слабоструктури́рованные да́нные  + + + + +   - - -
Schema-Hybrid (Schema-Mixed) - смешанный тип данных (есть обязательные поля, но у некоторых строк есть собственные поля) - - - - +   - - -
Хранение деревьев (документы не требуют определения схемы) + + + + +   - - -
CRUD деревьев (автоматические связи на основе рёбер) - - - - +   - - -
OLTP ACID транзакции: высокая целостность данных (поддержка только локальной транзакции не в счет) + + + + +   + - -
MVCC механизм обеспечения параллельного доступа - - - - - + - - -
Журнал Опережающей Записи (WAL) - это метод обеспечения целостности данных (обычно применяется в транзакциях). Основная идея - изменения в файлах должны записываться только после того, как записи журнала, описывающие данные изменения, будут сохранены на постоянное устройство хранения. + + + + +   - - -
Вертикальная масштабирование + + + + +   + + +
Горизонтальное масштабирование       +          
Шардинг — разнесение одной таблицы по разным серверам. В результате "шардинга" вместо одной физической БД появляется несколько с одинаковой логической схемой, называемые "шардами". Может быть максимальное количество "шардов", например в Oracle - до 1 тысячи, причем у каждой таблицы должен быть единый ключ шардирования. Пользователя автоматически направляют туда, где хранится его информация, в зависимости от значения ключа шардирования, указываемого в строке соединения. Соединение таблиц в таких базах работает только в рамках отдельного шарда, но можно сделать агрегацию данных по нескольким шардам. + + +            
Партиционирование — разбиение большой таблицы на логические части по выбранным критериям (например по диапазонам дат времени или диапазонам PK), иногда это называют шардинг на уровне одной файловой системы (данные одной таблицы могут состоять из нескольких файлов) + + + + +   - - -
Реплицируемость синхронная: бд может работать с набором реплик, таким образом уменьшая нагрузку и улучшая масштабируемость и доступность приложения + + + -     -    
Реплицируемость асинхронная - - - +     +    
Автоматический выбор мастер реплик       +          
Проверено временем: наличие большого сообщества вокруг неё, множество примеров и высокую надёжность + + + + -   + + -
Совместимость: доступна на всех основных платформах, включая Linux, Windows, Mac, BSD и Solaris. Также у неё есть библиотеки для языков вроде Node.js, Ruby, C#, C++, Java, Perl, Python и PHP + + +            
Окупаемость: Это СУБД с открытым исходным кодом, находящаяся в свободном доступе - - +            
Возможность хранение данных в памяти (RAM) ?   ?       + + +
Возможность хранение данных на диске + + + + +   + - -
Быстрая разработка приложения, благодаря отсутсвию подготовительных действий (создания схем и типов данных) - - - + -   + + +
Джоины таблиц/документов/наборов + + + + +        
Джоины таблиц/документов/наборов из нескольких бд +     -          
Группировка данных + + + +          
Сортировка данных + + + +          
Колоночные индексы   +              
function based index (создается поле, значение которого формируется согласно обработки указанной SQL-функцией, в результате по вычесленному результату создается индекс)   +              
Гибридность - представляет собой комбинацию из двух или более типов работы с данными                  

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

p.s. вот признаки проектов, для которых подойдёт что-то из сферы NoSQL:

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

И наверное неплохой пример сравнения по типам хранения данных:

Как выбрать бд

Источник: 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11

Оцени публикацию:
  • 2,7
Оценили: 2


Комментарии посетителей:

  • В Postgresql есть наследование одной таблицы от другой (в простонародье листья)
    12 февраля 2019, 18:56 коммент полезен : 0 # Nikolay.lebedenko (гость)

Предложения и пожелания:

 

youtube.com/watch?v=7hFivbgIEqk

При полном или частичном использовании материалов данного сайта, ссылка на сайт "yapro.ru" обязательна как на источник информации.
Автоматический импорт материалов и информации с сайта запрещен.
Copyrights © 2007 - 2019 YaPro.Ru

Лебеденко Николай Николаевич
Ошибка в тексте? Выделите её мышкой и нажмите: Ctrl + Enter