google engine conectar compute app mysql database google-app-engine google-cloud-storage google-cloud-sql

engine - jdbc:google:mysql



Datastore vs Cloud SQL en Google App Engine (3)

Quiero crear una aplicación que sirva a mucha gente (más de 2 millones), así que creo que debería usar Google Cloud Datastore . Sin embargo, también sé que hay una opción para usar Google Cloud SQL y aún así servir a muchas personas que usan mySQL (como lo hacen Facebook y YouTube).

¿Se trata de una suposición correcta de usar el almacén de datos en lugar de la nube SQL relacional con tantos usuarios? Gracias de antemano


Depende de lo que quiere decir con ''mucha gente'', qué tipo de datos tiene y qué quiere hacer con ellos.

Cloud SQL está diseñado para aplicaciones que necesitan una base de datos SQL, que puede manejar cualquier consulta que pueda escribir en SQL, y asegura que sus datos estén siempre en un estado consistente.

Cloud SQL puede atender hasta 3200 consultas simultáneas, según el nivel. Si las consultas son simples y se pueden atender desde la RAM, deberían tomar solo unos pocos ms, y suponiendo que los usuarios emiten aproximadamente 1 solicitud por segundo, entonces podrían admitir decenas de miles de usuarios activos simultáneamente. Sin embargo, si están haciendo consultas más complejas como búsquedas o escribiendo muchos datos, entonces será menos.

Si tiene un conjunto simple de consultas, le preocupa menos la consistencia inmediata o espera mucho más tráfico, debe consultar el almacén de datos.


No es estrictamente cierto que Facebook y YouTube estén usando MySQL para servir la mayoría de su contenido a la mayoría de sus usuarios. Ambos utilizan principalmente almacenes NoSQL muy grandes (Cassandra y BigTable) para la escalabilidad, y probablemente usan MySQL para trabajos a menor escala que exigen un almacenamiento relacional más complejo. Trate de usar Datastore si puede, porque puede comenzar de forma gratuita y también ahorrará dinero al manejar grandes volúmenes de datos.


Para dar una respuesta inteligente, necesitaría saber mucho más sobre su aplicación. Pero ... voy a describir los mayores errores que he encontrado ...

Google Datastore es efectivamente un almacén de datos jerárquico distribuido. Para obtener la escalabilidad que querían, tenía que haber algunos compromisos. Como desarrollador, descubrirá que estos aspectos son fáciles de solucionar, difíciles de solucionar o imposibles de solucionar. Este último es mucho más probable de lo que nunca asumirías.

Si está acostumbrado a las bases de datos relacionales y la capacidad de manipular datos en varias tablas dentro de la misma transacción, es probable que se retire con el almacén de datos. El mayor (?) Captcha es que las transacciones solo se admiten en un número limitado de grupos de entidades (5 en el momento actual). Para dar un ejemplo simple, digamos que usted tuvo una relación simple entre padres e hijos y que necesitaba actualizar los registros secundarios de más de 5 padres al mismo tiempo dentro de una transacción ... no se puede hacer (sí, realmente). Si reorganiza sus estructuras de datos e intenta colocar todos los registros secundarios anteriores en una sola entidad para que puedan actualizarse en una sola transacción, se encontrará con otra limitación: el hecho de que no puede actualizar la misma de manera confiable. Grupo de entidades más de una vez por segundo (sí, realmente). Y si consulta un tipo de entidad a través de los padres sin especificar la entidad raíz de cada uno, obtendrá lo que se conoce de manera eufemística como "consistencia eventual" ... lo que significa que no lo es (sí, realmente).

Todo lo anterior está en la documentación de Google, pero es probable que lo omita si recién está comenzando (¡por supuesto que puede manejarlo!).