-
Notifications
You must be signed in to change notification settings - Fork 1
masudio
K-V Stores : e.g. Redis Document databases: e.g. MongoDB Columnar stores: e.g. Cassandra Graph databases: e.g. Neo4j
https://sites.google.com/site/dev4xmoonshoteducationproject/home-page/how---technology/platform-architecture
dev4x events: https://groups.google.com/forum/#!topic/dev4x---moonshot-education-project/jAzXWTHAbdU
dev4x forum: https://groups.google.com/forum/?utm_medium=email&utm_source=footer#!forum/dev4x---moonshot-education-project
###Content storage
relational vs document : http://docs.couchbase.com/developer/dev-guide-3.0/compare-docs-vs-relational.html
relational vs graph (3 great answers) : http://stackoverflow.com/questions/13046442/comparision-of-relational-databases-and-graph-databases
Summary:
relational:
pros:
1.) memory efficient
2.) fast lookup (indexed) - apparently this changes when the db gets too large
cons:
1.) adding new fields requires db schema change which means a system outage
2.) query latency goes up along with the size of the database as a whole
document:
pros:
1.) useful when the data being stored is not static - no schema changes, no outages
cons:
1.) more data replication than relational - not memory efficient
graph:
pros:
1.) useful when relationships are first-class - query latency is proportional to how much of the graph you want to search, not the size of the whole database
cons:
1.) very slow when needing to query deep portions of a graph
2.) not as memory efficient - the relationships between individual nodes must be stored
key-value stores:
TBD
Wide-column stores:
TBD
Summary
It seems like relational storage would be useful for something like storing profile data - it's structured. Name, age, birthdate, etc. Also, because we're dealing with limited storage space and no servers ever (GLEXP requirement), we need to be memory efficient, which is another reason to use relational. I do think that document-based DBs will come in handy here for data where we don't know what we'll want to store - e.g. I could see an app built by a 3rd party wanting to send us (the platform) data about the users interactions that we didn't know we wanted, like how long it took them to do a set of math problems. However, because we don't care so much about downtime (it's not a live website) and for the above reasons, we should stick with relational for most cases. As for graph storage, I can see it being used for friend-storage ala facebook, to store the relationships between different apps/games and which one the user has 'earned' the right to play. I don't imagine this being a lot of data at first, but it could scale if we really want to do K-12,college and beyond, so it may be the right way to go.
Getting "cannot find symbol class ClientCertRequest"? Build by using API level to 21, but when you 'run' (from Android Studio), change to API level 19 so that it doesn't error out when trying to run on the DragonTouch, which is API level 19. (That's kinda weird).
Change API level in these 3 files:
1.) platforms/android/AndroidManifest.xml
2.) platforms/android/CordovaLib/AndroidManifest.xml
3.) platforms/android/project.properties
answer: http://stackoverflow.com/a/29728706
fix - https://github.com/Dev4X/MVP-Prototype/blob/master/platforms/android/CordovaLib/project.properties#L13 (should say 22)
getting "Failure [INSTALL_FAILED_UPDATE_INCOMPATIBLE]"? Uninstall the app from the device - it's because it's already installed.