source - Cuándo usar Haystack/ElasticSearch versus Django''s ORM
kibana open source (1)
Para aclarar las cosas, supongo que está hablando de consultar Elasticsearch a través de Haystack sin instanciar más tarde ningún objeto para los resultados de búsqueda con datos de su base de datos.
Algunos puntos a considerar además de los puntos mencionados en la otra publicación:
Un motor de búsqueda como Elasticsearch está altamente optimizado cuando se trata de búsquedas de texto completo (cuando se hace algo con SQL, depende en gran medida de la base de datos / motor que se esté usando)
Las consultas que implican muchas relaciones / uniones serán más fáciles de manejar con el ORM, pero por otro lado usted puede, por ejemplo, guardar datos de relaciones de clave externa de forma desnormalizada cuando usa ES que podría darle un aumento de rendimiento . Por supuesto, también puede desnormalizar las tablas de la base de datos, pero a menudo se considera una mala práctica siempre que sepa lo que está haciendo, por ejemplo, al resolver un cuello de botella de rendimiento.
ES es de alguna manera bastante fácil de escalar, mientras que escalar su base de datos SQL puede ser más complicado.
Es muy probable que esta sea una decisión que depende en gran medida de su caso de uso, la cantidad de datos a procesar y las consultas que tiene la intención de ejecutar. Por lo tanto, lo mejor es, como siempre, hacer una evaluación comparativa y comparar estas dos soluciones. Pero no realice optimizaciones prematuras, ya que una gran ventaja del ORM es simplificar las cosas: no tiene que preocuparse demasiado por la integridad de sus datos y mantener un sistema adicional.
Así que implementé Haystack con ElasticSearch hace una semana dentro de nuestra aplicación BETA. Una cosa que puedo notar es que devolverle algunos datos (gran cantidad) a nuestros usuarios (por ejemplo, enumerar a todos los usuarios dentro de la aplicación) es mucho más rápido yendo a través de Haystack que a Django''s ORM. Ahora, lanzaré un servicio REST (con TastyPie) para servir las posibles tabletas en las próximas semanas, ya que deseo poder acceder a la información de iPads, tabletas Nexus, etc.
Una cosa que me preguntaba, ¿cuándo debería consultar el ORM vs Haystack / ElasticSearch? Por ejemplo, si el usuario de la tableta está solicitando un conjunto específico de usuarios, ¿deberíamos dejar que TastyPie consulte el ORM o ir a ElasticSearch?
Si miramos esta respuesta a Django: Haystack o ORM , todos podemos estar de acuerdo en que se hace una base de datos para recuperar y escribir datos. Sin embargo, ¿podríamos decir que recuperar más rápido puede ser más rápido con Haystack / ElasticSearch una vez que se actualizó el motor de búsqueda?
Estoy un poco confundido en cuanto a cuándo, ¿ no deberíamos estar preguntando a Haystack si es mucho más rápido?