Como você misturar SQL DB vs. Key-Value loja (ou seja Redis)
-
18-09-2019 - |
Pergunta
Eu estou revendo meu código e perceber que eu gastar uma quantidade enorme de tempo
- tomar linhas de uma base de dados,
- formatação como XML,
- AJAX GET para o navegador, e depois
- converter de volta para um objeto javascript hash como meu armazenamento de dados local.
Em atualizações, eu tenho que inverter o processo (exceto usando POST em vez de XML.)
Tendo acabado de começar a olhar para Redis, eu estou pensando que pode salvar uma quantidade enorme de tempo manter os objetos em uma loja de valor-chave no servidor e apenas usando JSON para transferir diretamente ao cliente JS. Mas a minha mente fraca não pode antecipar o que eu estou desistindo, deixando um SQL DB (ou seja, eu estou com medo de desistir da GROUP BY / TENDO consultas)
Para os meus dados, eu tenho:
- muitos-muitos, isto é, Obj-tags, Obj-grupos, etc.
- consulta objetos por uma combinação de tais, isto é, onde tag EM ( 'a', 'b', 'c') e o grupo em ( 'x', 'y')
- auto junta-se, ou seja, todas as marcas para cada objeto onde tag = 'a' (group_concat sql ())
- um monte de junções externas, ou seja, OUTER JOIN classificação ON o.id = rating.obj_id
- e feeds, que parecem ser um ponto forte em REDIS
Como você se misturar com sucesso key-value & SQL bancos de dados?
Por exemplo, é prático para se juntar a uma grande lista de obj.Ids de um conjunto REDIS com dados SQL utilizando uma consulta SQL GAMA (ou seja, onde obj.id IN (1,4,6,7,8,34,876,9879 , 567345, ...), ou vice-versa?
ideias / sugestões bem-vindos.
Solução
Você pode querer dar uma olhada MongoDB . Ele funciona com objetos de estilo JSON, e vem com SQL como a indexação e consulta. Redis é mais adequado para armazenar estruturas de dados gosta de listas e conjuntos, quando quiser uma pesquisa simples em vez de uma consulta complexa.
Outras dicas
Agora que o problema real é mais definido (ou seja, você gastar muito tempo escrevendo código de conversão repetitivo para passar de uma camada / representação para o próximo), talvez você poderia considerar escrever (ou googling para) algo que automatiza este, talvez ?
Googles retorna abundância de resultados para "Converter tabela para XML" (e vice-versa), isso ajudaria? Será que algo vai diretamente da tabela de pares chave / valor ser melhor? Você tentou abordar este problema de uma forma generalizada?
Quando você diz "eu gastar uma quantidade enorme de tempo" que quer dizer este é um monte de tempo de desenvolvimento, ou você está se referindo a tempo de computação?
Pessoalmente eu ter cuidado com a mistura de um RDBMS com uma solução não-RDBMS, porque isso provavelmente irá criar problemas quando os dois paradigmas diferentes colidem.