Как сочетать базу данных SQL и базу данных SQL?Хранилище ключей и значений (т. е.Редис)
-
18-09-2019 - |
Вопрос
Я просматриваю свой код и понимаю, что трачу огромное количество времени
- получение строк из базы данных,
- форматирование как XML,
- AJAX GET в браузер, а затем
- преобразование обратно в хешированный объект JavaScript в качестве моего локального хранилища данных.
При обновлении мне приходится отменить процесс (за исключением использования POST вместо XML).
Только начав изучать Redis, я думаю, что смогу сэкономить огромное количество времени, сохраняя объекты в хранилище значений «ключ-значение» на сервере и просто используя JSON для передачи непосредственно JS-клиенту.Но мой слабый ум не может предвидеть, от чего я отказываюсь, оставив базу данных SQL (т.Боюсь отказаться от запросов GROUP BY/HAVING)
Для моих данных у меня есть:
- отношения многие-многие, т.е.obj-теги, obj-группы и т. д.
- запрашивать объекты с помощью комбинации таких методов, т.е.WHERE тег IN ('a', 'b','c') И группировка в ('x','y')
- сам присоединяется, т.е.ВСЕ теги для каждого объекта ГДЕ tag='a' (sql group_concat())
- много внешних соединений, т.е.ВНЕШНЕЕ СОЕДИНЕНИЕ рейтинг ON o.id = рейтинг.obj_id
- и каналы, которые кажутся сильной стороной REDIS.
Как успешно сочетать базы данных «ключ-значение» и SQL?
Например, практично объединить большой список obj.Ids из набора REDIS с данными SQL с помощью запроса SQL RANGE (т. е.ГДЕ obj.id IN (1,4,6,7,8,34,876,9879,567,345,...), или наоборот?
идеи/предложения приветствуются.
Решение
Возможно, вы захотите взглянуть на МонгоБД.Он работает с объектами стиля JSON и поставляется с SQL, например индексированием и запросами.Redis больше подходит для хранения структур данных, таких как списки и наборы, когда вам нужен простой поиск вместо сложного запроса.
Другие советы
Теперь, когда реальная проблема более определена (т.вы тратите много времени на написание повторяющегося кода преобразования для перехода от одного слоя/представления к другому), может быть, вам стоит подумать о написании (или поиске в Google) чего-то, что автоматизирует это, может быть?
Googles возвращает множество результатов по запросу «конвертировать таблицу в XML» (и наоборот), поможет ли это?Будет ли лучше что-то, идущее напрямую от таблицы к парам ключ/значение?Пробовали ли вы решить эту проблему в общем виде?
Когда вы говорите «Я трачу огромное количество времени», вы имеете в виду, что это много времени на разработку, или вы имеете в виду время вычислений?
Лично я бы поостерегся смешивать СУБД с решением, отличным от СУБД, поскольку это, вероятно, создаст проблемы при столкновении двух разных парадигм.