Каждые несколько лет мир разработки увлекается новой волной идей, которые, как кажется, решат все проблемы. Ключ-значение (Key-Value) базы данных — одна из таких волн. Простые, универсальные и быстрые — кажется, чего ещё желать? Но недавняя статья Джастина Джаффрея заставила задуматься: может быть, пора остановиться и перестать делать очередной «идеальный KV-движок»? На первый взгляд всё просто и красиво: данные хранятся в виде пар ключ-значение, а приложение уже само решает, как именно использовать эти байты. Но, копнув глубже, мы сталкиваемся с серьёзными ограничениями: Многие избегают SQL-баз данных именно из-за сложности и непредсказуемости планировщика запросов. Программистам хочется знать, что запрос выполнится именно так, как задумано, без сюрпризов оптимизации. Автор статьи предлагает компромиссную модель, сочетающую преимущества SQL и простоту KV: Приведём простой пример реализации такой модели данных: -- Логическая схема (что хранить)
CREATE TABLE logs (
timestamp TIMESTAMP