Question

I'm developping an Android application for offering and claiming certain items (sort of a market) for a course that mainly focusses on user-centered design and the UIs (which mostly means we have to quickly implement all the logic and management underneath).

It's my first application that effectively needs to be shipped. So now I wonder what are the best strategies and best decisions regarding the R DBMS (because this area seems a very dense forest for some newbies) ?

  • The application will not target >1000 users in total
  • Remotely accessible
  • Transactions and ACID properties need to be supported
  • SQL queries must be possible

Secondly the DMBS must be contacted remotely. So I wonder if there's a sort of plug and play (blackbox) solution available for setting up the backend (free/cheap, few implementations, ...).

  • scalability, availability and security aren't really issues (at the moment)
Was it helpful?

Solution

First you need to decide how the android devices will talk to the central database. Options, from easiest to hardest:

  • Direct JDBC connection (over TCP). Some networks might block direct TCP connections. No offline capability.
  • Tunnel JDBC over HTTP(S). No offline capability.
  • Run a local database on Android (Sqlite) and synchronize to remote database when can (allows for offline). See SymmetricDS.
  • Put REST API in front of remote database and use android's built-in syncing capability.

Second you need to decide how to segregate remote database data between users:

  • No segregation, users can do what they want to others data.
  • Database segregation, aka Row-Level Security
  • Application segregation (no segregation in database, but control segregation in say your REST API)

You need database segregation if choosing options A, B or C from question 1.

How many concurrent writers for remote database?

PostgreSQL is a great choice these days, but MariaDB might be a better choice if you require row-level security as it supports the WITH CHECK OPTION clause, which isn't coming in PostgreSQL until the summer.

OTHER TIPS

Not entirely sure what you are specifically asking because you can get a lot of info just by googling a few things. But if you might want to look at couple of google options. I haven't tried all of these so grain of salt:

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top