Skip to content
Masud Khan edited this page Jun 21, 2015 · 12 revisions

June 21

K-V Stores : e.g. Redis Document databases: e.g. MongoDB Columnar stores: e.g. Cassandra Graph databases: e.g. Neo4j

June 10

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.

June 4

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.

answer: http://stackoverflow.com/questions/11891848/install-failed-update-incompatible-when-i-try-to-install-compiled-trebuchet-apk

Clone this wiki locally