standard pricing prices hours google flexible engine costs compute appengine app java google-app-engine google-cloud-datastore google-search-api

java - pricing - appengine standard



Appengine Search API vs Datastore (4)

Alguna otra información:

  1. El almacén de datos es un sistema transaccional, que es importante en muchos casos de uso. La API de búsqueda no lo es. Por ejemplo, no puede colocar, eliminar y documentar en un índice de búsqueda en una sola transacción.
  2. El almacén de datos tiene mucho en común con un DB NoSql como Cassandra, mientras que la API de búsqueda es realmente un motor de búsqueda textual, muy similar a algo como Lucene. Si entiende cómo funciona un índice inverso, obtendrá una mejor comprensión de cómo funciona la API de búsqueda.
  3. Una muy buena razón para combinar el uso de la API del almacén de datos y la API de búsqueda es que el almacén de datos hace que sea muy difícil hacer algunos tipos de consultas (por ejemplo, consultas de texto libre, consultas geoespaciales) que la API de búsqueda maneja muy fácilmente. Por lo tanto, puede almacenar sus entidades principales en el almacén de datos, pero luego usar la API de búsqueda si necesita buscar de maneras que el almacén de datos no permita. En el futuro, creo que sería fantástico si el almacén de datos y la API de búsqueda estuvieran mejor integrados, por ejemplo, permitiéndole realizar búsquedas de texto libre contra campos de texto indexados, donde el motor de la aplicación crearía automáticamente un índice de documentos de búsqueda entre bambalinas. .

Estoy tratando de decidir si debo usar la API de búsqueda del motor de aplicaciones o el almacén de datos para un proyecto de Android conectado a un motor de aplicaciones. La única distinción que hace la documentación de google es

... una búsqueda de índice no puede encontrar más de 10,000 documentos coincidentes. El almacén de datos de App Engine puede ser más apropiado para las aplicaciones que necesitan recuperar conjuntos de resultados muy grandes.

Dado que ya estoy muy familiarizado con el almacén de datos: ¿Alguien me ayudará, por favor, asumiendo que no necesito 10,000 resultados?

  • ¿Hay alguna ventaja en el uso de la Search API comparación con el uso del almacén de datos para mis consultas (según la cita anterior, parece sensato utilizar una u otra)? En mi caso, el usuario final debe poder buscar, actualizar entradas existentes y crear nuevas entidades. Por ejemplo, si mi aplicación es una librería, el usuario debe poder agregar nuevos libros, agregar reseñas a libros existentes, buscar un libro específico.
  • Mi estructura de datos es tal que el contenido será suministrado por el usuario final. Entidad documento vs almacén de datos: ¿cuál es más barato de actualizar? $$, etc.
  • ¿Pueden complementarse entre sí: Datastore y Search API? ¿Cuál es la ventaja? ¿Por qué alguien consideraría emparejar los dos? ¿Cuál es la captura / costo?

El almacén de datos solo proporciona unos pocos operadores de consulta (=,! =, <,>), Hacer filtros anidados y las múltiples desigualdades serían costosas o imposibles (tiempos de espera) y los resultados de búsqueda pueden dar una gran cantidad de falsos positivos . Puede realizar una búsqueda de cadena parcial mediante tokenización, pero esto aumentará su entidad. La mejor manera de superar estas limitaciones es utilizando propiedades estructuradas y / o consultas de antepasados .

La API de búsqueda, por otro lado, ejecuta una búsqueda de texto completo en los documentos de búsqueda, que es más rápida y precisa que las consultas de NDB sin depender de datos de token. El inconveniente es que se basa en que los datos estén actualizados.

Use Datastore para procesar sus datos (crear, actualizar, eliminar), luego ejecute una función para colocar estos datos como documentos y agrupar usando índices, luego ejecute las búsquedas usando la API de búsqueda.


La consecuencia más seria de la API de búsqueda es la consistencia eventual, como se indica aquí: https://developers.google.com/appengine/docs/java/search/#Java_Consistency

Esto significa que cuando agrega o actualiza un registro con la API de búsqueda, es posible que no refleje el cambio inmediatamente. Imagine un caso en el que un usuario cargue un libro o actualice la configuración de su cuenta y no cambie nada porque el cambio no ha llegado a todos los servidores todavía.

Creo que la API de búsqueda solo sirve para una cosa: la búsqueda. Básicamente actúa como un motor de búsqueda para sus datos en Datastore.

Por lo tanto, mi consejo es que mantenga los datos en el almacén de datos que el usuario espera obtener como resultado inmediato, y utilice la API de búsqueda para buscar los datos que el usuario no esperará.


La diferencia clave es que con el almacén de datos no puede buscar dentro de las entidades. Si tienes un libro llamado "Guerra y paz", no puedes encontrarlo si un usuario escribe "guerra de paz" en un cuadro de búsqueda. Lo mismo con las revisiones, etc. Por lo tanto, no es realmente una opción para ti.