google-app-engine


Google Cloud Datastore vs Cloud SQL


I am building a mobile app with Google Cloud as back-end. It stores information about restaurants including their menu. I would need to search based on the menu items and geo location.
I am fairly confused about which Google Cloud solutions to use. Initially I have planned to use Google App Engine with Cloud Datastore for storing data, but later found out, it doesn't support geolocation search, and even if I use the App Engine search api, I won't get 'like' text search. About using cloud SQL, I am worried about its price. I am also thinking about using Google Compute Engine and installing required MongoDB or SQL in it and use some custom search libraries.
So my question is which of the below should be an feasible and economical solution for storing large amount of data and searching using text and geo-location
GAE with Cloud Datastore
GAE with Cloud SQL
GCE with MongoDB or SQL installed
Any other feasible solutions are also welcome
Google has a page to give high-level guidance on what storage option to choose on GCP, called Choosing a storage option.
Specifically for Cloud Datastore:
Description: A scalable, fully-managed NoSQL document database for your web and mobile applications.
Good for:
Semi-structured application data
Hierarchical data
Durable key-value
Common Workloads:
User profiles
Product catalogs
Game state
Specifically for Cloud SQL:
Description: A fully-managed MySQL database service that is built on the strength and reliability of Google’s infrastructure.
Good for:
Web-frameworks
Structured data
OLTP workloads
Common Workloads:
Websites, blogs, and content management systems (CMS)
Business Intelligence (BI) applications
ERP, CRM, and eCommerce applications
As you can see, your use case could border either option. Restaurants + Menus is very similar to product catalogs.
Cloud Datastore would require less ops work/thoughts on your side. For example, you don't need to think about what type of VM instance and memory size it should use. However, to do analytics on data rather than just serving the menus, you'd probably want to do daily dumps into BigQuery.
Cloud SQL will require a little more thought at the beginning, and at small sizes will be a little more expensive than Cloud Datastore. It does give you more flexibility on the analytics side in that it doesn't really need you to dump into BigQuery.
Running a different database on GCE is certainly an option if you want more control. The trade-off here will be in requiring much more active ops work on your behalf, such as installing, patching, tuning, etc.

Related Links

Uploading multiple files to blobstore (redux)
App Engine: Can I upload my local dev_appserver.datastore to the live datastore?
App Engine URL mapping
Sitemaps structure for large App Engine site
cheetah in appengine
Help to Upload zip file containing CSV file in GAE
Google App Engine: Using datastore with users who are not logged in
Text to HTML converter for Google App Engine
Pagination and Multiple relational entity indexes with AppEngine
time taken to upload a picture of 1M ~ 5M from iPhone to either Google AE or Amazon S3
Sending email from dev server with --smtp_host=smtp.gmail.com
Google App Engine logout url
django-nonrel google app engine order_by('?')
Trouble while sending Email using Google App Engine to Verizon (vtext.com)
Keeping track of time with 1 second accuracy in Google App Engine
Developing for Google App Engine and using the datastore

Categories

HOME
go
eslint
webdriver
nunit
case
jelastic
grafana
scripting
nfs
endpoint
radgridview
feathersjs
xmonad
pagespeed
imageresizer
exit
jquery-callback
interbase
apktool
comparable
testcomplete
magento-1.8
constexpr
gitlab-api
jmockit
fossil
nested-lists
dm-script
node-mssql
numberpicker
install.packages
print-css
jide
sonarlint-eclipse
singleinstance
java-bytecode-asm
modelsim
avx
type-theory
offline.js
baidu
rmongo
redistributable
google-cloud-console
macaulay2
model-associations
jquery-jscrollpane
shopping
google-query-language
freepbx
cassia
data-protection
gcloud-ruby
fink
findfirst
qbxml
vhosts
assertion
java-money
rate-limiting
cgi-bin
sony-lifelog-api
skspritenode
linked-tables
cakephp-2.7
document-repository
webmatrix-3
filesplitting
sip-server
raygun
create.js
parallel-testing
scriptaculous
light
jquery-1.9
cardreader
argouml
joomla3.1
tree-balancing
kqueue
virtualpathprovider
apache-commons-dbutils
workflow-services
catransform3d
resharper-6.0
facebook-iframe
feasibility
google-wave
perl5.12
dsoframer
xslcompiledtransform

Resources

Encrypt Message