¿La mejor opción para Google App Engine Datastore y base de datos externa?

Necesito obtener una aplicación de App Engine para hablar y compartir datos con una base de datos externa.

La mejor opción que se me ocurre es enviar los datos de la base de datos externa a un archivo xml y luego procesarlos en la aplicación del motor de mi aplicación y almacenarlos en el almacén de datos.

aunque los datos que se comparten son datos confidenciales, como los datos de inicio de sesión, por lo que enviar esto a un archivo xml no es exactamente una gran idea, ¿es posible que la aplicación del motor de la aplicación consulte directamente la base de datos? ¿O hay una opción segura para usar archivos xml?

oh y estoy usando python / django y la base de datos externa se alojará en otro dominio

El conector de datos seguros (SDC) de Google Apps está diseñado para este tipo de tareas, de hecho, incluso funciona cuando la “otra base de datos” se encuentra detrás de un firewall (un caso común para datos empresariales) y para otras aplicaciones de Google (Docs, Hojas de cálculo, …), así como App Engine.

Como los documentos resumen las cosas, el flujo es:

  1. Google Apps reenvía las solicitudes de datos autorizadas de los usuarios que se encuentran dentro del dominio de Google Apps a los servidores de protocolo de túnel de Google.

  2. Los servidores de túnel validan que un usuario está autorizado para realizar la solicitud al recurso especificado. Los servidores de túnel de Google están conectados mediante un túnel cifrado a SDC, que se ejecuta dentro de la red interna de la empresa.

  3. El protocolo de túnel permite a SDC conectarse a un servidor de túnel de Google, autenticar y cifrar los datos que fluyen a través de Internet.

  4. SDC usa reglas de recursos para validar si un usuario está autorizado para realizar una solicitud a un recurso específico.

  5. Se puede usar un firewall de intranet opcional para proporcionar seguridad adicional a la red.

  6. SDC realiza una solicitud de red al recurso o servicios especificados.

  7. El servicio valida la solicitud firmada, verifica las credenciales y, si el usuario está autorizado, devuelve los datos.

Si no tiene que preocuparse por los firewalls y no tiene ninguna preocupación de seguridad, puede simplificar las cosas (como sugiere la respuesta de Daniel) simplemente usando urlfetch directamente (sin túneles, sin validación, sin cifrado, sin filtrado, …) – pero su preocupación por “los datos que se comparten son datos confidenciales, como los datos de inicio de sesión” sugiere que este no es el caso.

No es un problema de XML en comparación con otros formatos; el problema es que los datos confidenciales no deben viajar “en claro” a través de canales desprotegidos, ni deben estar disponibles para todos y cada uno, y a menudo es mejor tener una infraestructura especializada que se ocupe del cifrado y el filtrado. y problemas de autorización, como lo hace la SDC, en lugar de tener que codificar todo esto (y hacerlo totalmente seguro y bloqueado) en su propia aplicación o middleware de infraestructura especializada. Para estos fines, el SDC puede ser muy útil, incluso si solo necesita una fracción de su funcionalidad.

Es posible que desee considerar la posibilidad de exponer un conjunto de servicios web en el dominio externo donde se aloja su base de datos, y luego usar la API de obtención de URL de App Engine para comunicarse con su dominio externo a través de HTTPS .