Здравствуй дорогой читатель! Продолжаю серию экспериментов по сравнению производительности Mongo DB и MSSQL Server. На этот раз я решил сравнить производительность операций выборки, так как это, пожалуй, основная операция при взаимодействии с БД в большинстве приложений. На этот раз постараюсь провести несколько экспериментов в одной статье, по-этому будет минимум текста.
Выборка по ключу
В первом тесте я буду выбирать информацию из БД по первичному ключу. Для подготовки тестовых данных я воспользовался наработками предыдущего эксперимента по добавлению разнородных объектов. Выборки осуществляются по случайно сгенерированному ключу в цикле по десять тысяч итераций из наборов записей в количествах 1000, 10000, 50000, 100000 и 500000. Исходники этого теста на Гитхабе.
Как видно, на операциях выборки данных по первичному ключу обе СУБД показали примерно одинаковые результаты, причем скорость выборки практически не зависит от количества записей в базе.
Выборка набора записей
Во второй части я буду выбирать данные не по одной штуке, а по 10, 100 и 500, но тоже по первичному ключу. Прямая ссылка на исходники эксперимента.
Увы, в выборке больше одной записи Mongo не особо силен. Если на достаточно маленьком количестве записей в выборке, Mongo практически не уступает MSSQL, то уже на 100 записях выборки разница в быстродействии отличается в пять раз. И чем больше выборка, тем этот разрыв в производительности увеличивается.
Выборка по like
Последний, на этот раз, эксперимент - поиск по like. Искать буду по начальным четырем символам Guid, которыми заполняется поле Field1. Индекс по этому полю не строился. Исходники этого эксперимента.
И снова MSSQL выполнил операции поиска быстрее Mongo. Как и следовало ожидать, время поиска по не индексированному полю зависит от количества записей в базе.
Сегодняшние эксперименты показали преимущество MSSQL Server в выборке набора записей. Тем не менее, Mongo DB вполне может заменить MSSQL Server, если требуется выбирать небольшое количество записей.