NoSQL, jquery, scalable database cloud service for HTML/CSS/JS phonegap web app - database

I am developing a web app (HTML/CSS/JS) destined to be used as is and also compiled with phonegap for iOS/Android/and others. I am loging my users using OpenId Connect.
I am looking for a database hosting service. It should be NoSQL, readable/writable by jquery and scalable.
I need to store the user's contact info and other user choices from my app.
I am thinking about using Cloudant with a CouchDb database, but I am really new to this.
Can you help me ?
Thanks

If you would like to use Amazon Web Services, take a look at Dynamo DB. It is infinitely scalable. You can start for almost free and pay more as and when your data-size and request load increases. It can guarantee you the same low response time even with huge data.
You can use this from JS as well
I have discussed some other options in this other SO thread - Parse, Firebase, Dropbox DataStore etc. Have a look: Storing and retrieving data in the cloud and retrieving via webservices:

Related

Is Google Firebase a good alternative for my back-end development?

I recently found out about Google Firebase and how it can be used to help streamline back-end development. I would normally use PHP and MySQL for my back-end development. I have a few different apps that I'll be starting within the next few months, but I would like to develop my back-end a little faster and be able to manage it a little easier. Is Firebase a good alternative if I don't have super complex back-end needs?
Yes
because it's a cloud-hosted database.
Usually, the Data is stored as JSON and synchronized in realtime to every connected client which is good for your back-end development . Imagine you are building a cross-platform apps for Android, and JavaScript SDKs, all of your clients share one Realtime Database instance and automatically receive updates with the newest data.
You have everything explained here
Cloud Functions for Firebase

Angular js web application- offline authentication and persistence

We have an angular js application application developed on Sails framework and uses mysql for persistence. The website is authenticated using Active Directory credentials.
Now we would like to enhance the app to work offline as well. So the following questions arise.
How should we accomplish Active Directory authentication while accessing the app offline?
As I can understand that Indexeddb or Pouchdb can be considered for offline persistence, which one between the two would be better or is there any other better alternative and how can we sync data from offline storage to online persistence which is on mysql?
Any thoughts are appreciated.
offline web application may not contain all online applicability.
for example; authenticating a user in a large system, need an online connection to server and its not possible and very stupidly idea to save hash of all password in client offline storage.
so you can show a message in offline stat to unknown user that say: you must Login in online stat first!
for making better angularjs offline web application, i recommend to you this article: Offline apps using Ionic Framework, PouchDB and AngularJS

What are the advantages of using Google Cloud Endpoints, explained in non-technical terms with examples?

I have previously used
#app.route('/mypage/<int:myvariable>/')
to create rules for what should happen when users land on different urls on my website. I have done this on local machines that have been running on my own virtual servers.
Now I am learning to publish my first web app to Google App Engine. I have heard that I should be using Google Cloud Endpoints instead of the route decorator.
#endpoints...
I've read a few articles about endpoints and some of the benefits of endpoints that they list are:
Endpoints makes it easier to create a web backend for web clients and mobile clients
Endpoints free you from having to write wrappers to handle communication with App Engine
Even if I have read this I can't wrap my head around what this means. I don't understand it. Can you explain in non-technical terms with examples what the advantages of using #endpoints is compared to alternatives? The alternative that I am familiar with is #app.route.
Google Cloud Endpoints can be thought of as a subset of #app.route. They are intended to solve the API backend problem for mobile and javascript clients. They are not intended to serve web pages and other hypermedia. You can use the normal routing methods of your framework of choice to create a web service for your application but Google Cloud Endpoints takes care of a lot of boilerplate for you.
There are a lot of limitations with Google Cloud Endpointsso be sure to familiarize yourself with them before committing. For one, you cannot host Google Cloud Endpoints on a custom domain name. They are only accessible via <app_id>.appspot.com/_ah/api/*
Endpoints makes it easier to create a web backend for web clients and
mobile clients
What this means is that you can create one backend and then iOS, Android and Web-apps (via Javascript for example), can execute your API methods with specific client generated libraries.
This is convenient if you are building a backend that you want to be easily accessed via smartphones or through a web browser.
Endpoints free you from having to write wrappers to handle
communication with App Engine
With Endpoints you can generate client libraries (e.g. Android, iOS, Javascript) that you can then execute your API methods. You don't have to worry about writing a bunch of additional code to do that.
My Opinion:
I have never used Cloud Endpoints to make a web-app but it is very convenient if you are making a mobile app for iOS and Android because you can access your backend with both platforms.
One reason you might want to use Cloud Endpoints for a web-app instead of something else is because of Datastore. Datastore is the way Cloud Endpoints stores data. It is a NoSQL storage method which is kinda tricky to wrap your head around at first if you come from a relational database background, but once you get it, it makes a lot of sense.

Google App Engine online datastore

I have made a few stand alone apps that don't pull too much information from the internet. However, I want to make an app that allows users to post data which is then used by every user who has the app installed, like an online communal DB/datastore.
From what I've read it looks like Google App Engine is the solution and can be used in this sort of manner (looking at the "guestbook" demo app").
Can I use the Google app engine to provide data for an app?
If you're talking about an Android application, I think you can.
Depending on what kind of data you wish to store on your GAE datastore,
you can make a RESTful way of retreiving data from your GAE datastore.
For one example, you may be able to retrieve that data as a JSON object
Application sends GET request to the server, and the server responds with a JSON object.

Hosting/transferring a web site on Google App Engine

I have my website currently hosted on paid server, but i want to transfer it on GAE.
How can i do it? Can anyone please help me in this case.I'd appreciate your help.
Thanks:)
1) First you will have to adapt your website to the GAE framework (python with django or the new Java environment). You can test your work by downloading the SDK of GAE which offer a local server.
2) Then create an account on appengine.google.com and upload your application on something.appspot.com, test it.
3) If you have a domain name, create a google apps account on this domain, and finally bind this domain with your GAE website. Here is the Google doc.
If it is just a static website which does not need server side scripts or a database, then you might want to look into Google Sites instead of Appengine. You can find out more about Sites here: http://www.google.com/sites/help/intl/en/overview.html
If you do have some server side logic going on, you will need to convert it to either python or java and convert your relational database to Google's Data API which does not support the SQL your current database uses. You can read more about the APIs and what is supported with the Data API and tutorials at: http://code.google.com/appengine/
In response to sanorita's comment "Actually, it's generated html and not plain html. and google appengine is for static data... right?":
AppEngine can host static data, but that is far from its intent.
The purpose of AppEngine is to allow developers to easily deploy their dynamic applications on Google's infrastructure. In the end, assuming you have programmed your app in effective ways to handle scaling (basically just noting that writes to the database are expensive, and contention is the root of all evil) you can handle nearly any amount of traffic.

Resources