Сначала вы должны реализовать это самым простым способом, а затем сравнить это. Всегда проверяйте вещи. Это значит:
- Создайте схему, соответствующую вашему варианту использования.
- Создание запросов, представляющих ваш вариант использования.
- Создание значительного количества фиктивных данных, представляющих ваш вариант использования.
- В различных циклах, включая как произвольный доступ, так и последовательный, отметьте его.
- Убедитесь, что вы используете параллелизм (запускайте множество процессов, случайным образом забивая сервер всеми видами запросов, представляющими ваши варианты использования).
Если у вас есть это, измерьте, проверьте. Есть разные способы сделать это. Некоторые тесты могут быть простыми, но могут быть менее реалистичными. Измерьте пропускную способность и задержку.
Тогда попробуйте оптимизировать его.
В MySQL есть одно конкретное ограничение для KV - стандартные двигатели с постоянными индексами использования, оптимизированными для поиска по диапазону, а не для KV, что может привести к дополнительным издержкам, хотя также сложно заставить такие вещи, как хэш, работать с постоянным хранилищем из-за перепевы. Таблицы памяти поддерживают хэш-индекс.
Многие люди связывают определенные вещи с медлительностью, такие как SQL, RELATIONAL, JOINS, ACID и т. Д.
При использовании реляционной базы данных с поддержкой ACID необязательно использовать ACID или отношения.
Несмотря на то, что объединения имеют плохую репутацию медленных, это обычно сводится к неправильным представлениям о соединениях. Часто люди просто пишут плохие запросы. Это усложняется, так как SQL декларативен, он может ошибаться, особенно в соединениях, где часто есть несколько способов выполнить соединение. То, что люди на самом деле получают от NoSQL в этом случае, обязательно. NoDeclaritive будет более точным, так как это проблема с SQL, которая возникает у многих людей. Нередко людям просто не хватает индексов. Это не аргумент в пользу объединения, а скорее для того, чтобы осветить, где люди могут ошибиться в скорости.
Традиционные базы данных могут быть очень быстрыми, если вы делаете для этого определенные специальные вещи, такие как игнорирование целостности данных или обработка их в другом месте. Вам не нужно ждать, пока жесткий диск очистит записи, вам не нужно навязывать отношения, вам не нужно навязывать уникальные ограничения, вам не нужно использовать транзакции, но если вы замените безопасность на скорость, то тебе нужно знать, что ты делаешь.
Решения NoSQL для сравнения, в первую очередь, как правило, предназначены для поддержки различных режимов масштабирования "из коробки". Производительность отдельного узла может быть не совсем такой, как вы ожидаете. Решения NoSQL также борются за общее использование со многими, имеющими довольно необычные характеристики производительности или ограниченные наборы функций.