Ir al contenido



Foto

Redis, ThinkDB y Similares.

NoSQL

  • Por favor identifícate para responder
5 respuestas en este tema

#1 gatosoft

gatosoft

    Member

  • Miembros
  • PipPip
  • 21 mensajes
  • LocationColombia

Escrito 11 septiembre 2019 - 03:55

buen día amigos,

 

Quería saber, ¿Qué experiencia tienen con bases de datos NoSQL?, principalmente estoy interesado en evaluar Redis por su característica de "Caché en Memoria", y su utilidad para comuniar procesos

 

El tema es que actualmente tenemos una applicación que ejecuta varios procesos en un servidor, y es necesario comunicar estos procesos entre si y a su vez con el cliente. La comunicación se maneja a tarvés de una BD común y corriente gaurdando el estado y los mensajes en registros.

 

De acuerdo a loq ue he cisto con Redis, podriamos comunicar los procesos con mensajes en memoria, que es lo que me interesa.

 

En alguna ocasión inetnté algo con el Objeto Super global planteado a manera de ejercicio por nuestro amigo AlGonzalez, pero al final no fue lo que queriamos.. entre otras porque con Redis, la comunicación seria transparente independiente del lenguaje de programación con el que se accese.

 

 

como dije, me gustaria saber que experiencia tienen, si ha sido facil la implementación y si es viable clo que pretendo hacer,

 

bueno, agradezco su ayuda,


  • 0

#2 seoane

seoane

    Advanced Member

  • Administrador
  • 1.246 mensajes
  • LocationEspaña

Escrito 12 septiembre 2019 - 04:26

Hola,

 

yo uso Redis habitualmente y me va perfecto. En mi caso la uso como cache compartida entre varios nodos.

 

Es fácil de instalar en linux (hay paquetes para la mayoría de distribuciones) aunque no tanto en windows, creo que hay un proyecto en github donde tienes los binarios para windows, aunque no son oficiales.

 

No se si hay una librería de Delphi para conectarse (creo que en github hay alguna). Yo ahora mismo programo en Scala, no en Delphi, así que ahí no te puedo aconsejar.

 

En cuanto a Redis tienes los comandos típicos de un almacenamiento clave/valor: GET, SET, DEL, etc ... entre otros muchos.

 

En cuanto a lo que preguntabas de coordinar procesos ya te aconsejaría que trabajaras con colas. Yo personalmente estoy muy contento con Kafka, aunque me han hablado tambien muy bien de RabbitMQ, y si quieres algo mas ligero MQTT. Al trabajar con colas unos procesos se "suscriben" a una cola y procesan la información que les llega, y otros son lo que publican en ellas.

 

Por ejemplo, mi aplicación tiene varios nodos trabajando a la vez y ademas varios "trabajadores" que trabajan en segundo plano. Todos estos nodos y procesos en segundo planos estan en diferentes maquinas y para coordinarse entre si utilizan kafka. Así cuando por ejemplo un usuario hace una petición, unos de los nodos la atiende, y si es necesario hacer alguna operación en segundo plano (enviar un correo, una notificación, un calculo costoso) publica el evento (junto con la información necesaria) en una cola de kafka. A su vez los "trabajadores" están consumiendo esa cola en segundo plano y ejecutando las acciones correspondientes, y si es necesaria una respuesta, esta se publica en otra cola de kafka, pero esta es consumida en este caso por los nodos.

 

Espero haberme explicado, es un poco rollo :D

 

En resumen, yo para comunicar procesos usaría colas y para cache Redis. Y si no quieres usar colas y te llega con guardar datos compartidos Redis es una buena opción (y)

 

Saludos


  • 1

#3 gatosoft

gatosoft

    Member

  • Miembros
  • PipPip
  • 21 mensajes
  • LocationColombia

Escrito 17 septiembre 2019 - 10:48

Hola,

 

yo uso Redis habitualmente y me va perfecto. En mi caso la uso como cache compartida entre varios nodos.

 

Es fácil de instalar en linux (hay paquetes para la mayoría de distribuciones) aunque no tanto en windows, creo que hay un proyecto en github donde tienes los binarios para windows, aunque no son oficiales.

 

No se si hay una librería de Delphi para conectarse (creo que en github hay alguna). Yo ahora mismo programo en Scala, no en Delphi, así que ahí no te puedo aconsejar.

 

En cuanto a Redis tienes los comandos típicos de un almacenamiento clave/valor: GET, SET, DEL, etc ... entre otros muchos.

 

En cuanto a lo que preguntabas de coordinar procesos ya te aconsejaría que trabajaras con colas. Yo personalmente estoy muy contento con Kafka, aunque me han hablado tambien muy bien de RabbitMQ, y si quieres algo mas ligero MQTT. Al trabajar con colas unos procesos se "suscriben" a una cola y procesan la información que les llega, y otros son lo que publican en ellas.

 

Por ejemplo, mi aplicación tiene varios nodos trabajando a la vez y ademas varios "trabajadores" que trabajan en segundo plano. Todos estos nodos y procesos en segundo planos estan en diferentes maquinas y para coordinarse entre si utilizan kafka. Así cuando por ejemplo un usuario hace una petición, unos de los nodos la atiende, y si es necesario hacer alguna operación en segundo plano (enviar un correo, una notificación, un calculo costoso) publica el evento (junto con la información necesaria) en una cola de kafka. A su vez los "trabajadores" están consumiendo esa cola en segundo plano y ejecutando las acciones correspondientes, y si es necesaria una respuesta, esta se publica en otra cola de kafka, pero esta es consumida en este caso por los nodos.

 

Espero haberme explicado, es un poco rollo :D

 

En resumen, yo para comunicar procesos usaría colas y para cache Redis. Y si no quieres usar colas y te llega con guardar datos compartidos Redis es una buena opción (y)

 

Saludos

 

Muchas gracias por la respuesta,

 

Estuve revisando las opciones y hay mucho de donde "echar mano"... pero me encontré que con REDIS puedo tambien manejar el tema de colas, con una implementación especial de Redis llamada RedisMQ,

 

En la Web, solo hay un cliente reconodio para trabajar Redis y es el de Daniele Teti delphiredisclient, , el cual de hecho tiene una unidad llamada RedisMQ.pas.

 

De paso, encontré que para su versión 5, Redis se divorcia de Windows y saca de su Web las referencias que habian al branch que soportaba extraoficialmente un equipo de Micrososft.. pero en la propia pagina de MicrosoftArchive en GitHub, se hace referencia a un nuevo producto llamado Memurai...el cual es una implementación nativa de REDIS para windows. De hecho, en la documentación de Memurai dicen, "para saber como hacer esto... vea la documentación de redis sobre el tema"

 

Hice la prueba con las librerias de Daniele Teti y funcionó perfecto trabajando con Memurai...

 

Creo que es lo que estoy buscando,

 

De nuevo muchas gracias,


  • 1

#4 seoane

seoane

    Advanced Member

  • Administrador
  • 1.246 mensajes
  • LocationEspaña

Escrito 17 septiembre 2019 - 11:27

Pues no conocía Memurai, gracias.


  • 0

#5 gatosoft

gatosoft

    Member

  • Miembros
  • PipPip
  • 21 mensajes
  • LocationColombia

Escrito 17 septiembre 2019 - 11:43

Pues no conocía Memurai, gracias.

 

Es que está recien salido del horno... pero tiene un pequeño gran problema... parece que van a cobrar por él....... con una versión free para desarrollo


  • 1

#6 seoane

seoane

    Advanced Member

  • Administrador
  • 1.246 mensajes
  • LocationEspaña

Escrito 17 septiembre 2019 - 12:01

😀 Las aplicaciones de Windows nunca decepcionan 💰
  • 1