Looking for the best database for this simple Ionic 2 App


#1

Hello everyone,

I know asking for which database is better for this or that is not what you prefer but here I am !
I am new to Ionic, Angular, Cordova, but having had courses at school on HTML, CSS, PHP (not so much), MySQL and some others I feel I could pick it up quickly. And I need to !

I’m doing an internship for one company who wants me to develop an app for its clients all by myself. No one knows tech at this company that’s why I ask for help here.

So, the app needs to provide a list of doctors depending on the insurance provider of the client, easily searchable, click to call and geolocation.

My question is, as I don’t (I think…) have to write data but only fetch data from the database, which solution would be the best option.
Should I build a MySQL db, a xyz db ? How to connect it then to my app ?
How to make it easily maintenable (as we have various insurance providers and they will send updated lists of doctors every few months) ?

Authentification is not required yet but if needed I will go with Firebase for its simplicity.

Cheers,
Pierre


#2

If you don’t know much about how to build an API or Backend code, the database itself will not be your biggest challenge. So you should go something like Parse or Firebase to keep all the logic on the phone.

However, if you want more control over the backend, if you want to learn how it’s done or if you don’t want your business logic to be on your mobile device then you should build your API. If you want to learn about how to build an API, I like to build mine in ruby: example1 or example2 .


#3

mysql can be your choice… just need to learn how to create Rest API to communicate your app to the DB and just use http request for that…


#4

Thank you both for your replies and for the tuto and book links.

Also my main concern is really the future maintainability of the database as no one is tech savy here and I want them to be able to update it in the easiest way possible. Does it have an impact is the better choice to choose ?

Cheers.


#5

i think it’s not about the DB if your talking to users… it’s about User Friendly designs of your app… where it can be easy to understand how to manipulate your app with users using it… ask a user experience developer professional about it…


#6

What I meant is that when I leave the company, updating the database would be done by someone non tech-savy. It must be easy for that person to purge like the AXA doctors list or the Aetna one and from a csv file easily repopulate it.

And for the user friendly experience, the app would be really not that hard to understand : First screen with quick slideshow of app features then Home Page with 4 tabs (Search a Doctor, Hospital, Favorite, and Help).

We might see a UX professional later but we are at the very beginning so I’m not there yet.

If first need to get a little more at ease with Ionic, understand the database issue, and then we’ll wireframe, design, start real development.


#7

This looks like a trainwreck in the making, especially if you are dealing with sensitive information as is typical in the healthcare industry. If I were in your position, I would tell the management that while you would love to contribute in any way you can, this is a project that needs more attention and experience than an intern can provide.


#8

Yes, I am aware of that and had planned to talk about it with management tomorrow during a meeting.

I am not concerned with the facts we would deal with sensitive informations as I think we won’t by keeping the app really simple. I am concerned from a legal standpoint with giving the doctors information.

And before arriving here I did a previous internship within a big healthcare provider so I definitely know we should not mess with private health care data :slight_smile:


#9

I wholeheartedly agree with @rapropos. However, if you still want to build it, start reading & watching everything - absolutely everything - you can on these 2 sites:

  1. http://ionicframework.com/getting-started/
  2. www.joshmorony.com

To address your question:

What is the best DB? You may as well ask What’s the best car? Ask 10 people and you’ll get 10 answers. So read all you can; you’ll start seeing projects with MySQL, AWS, PouchDB, CouchDB, LokiJS, pure JS, LocalStorage, LocalForage, Native Ionic, maybe even a Mongo backend, and 100 more options. You’ll see the pros and cons of each. You’ll see how easy the setup and tear down of each are. This will help you with maintainability.

Is there generally a best option? No. Never. That’s why people keep reinventing the database wheel.

Just follow along with all of the examples. You’re correct in that you’ll be able to find all the resources you will need for every component you discussed.

Also note that if the company doesn’t bring in a technical expert when you leave, the project will not be maintained, and that means that every second you spend on it today will be for nothing. All time wasted. You seem to have the best of intentions, but your project is destined for failure.


#10

And I agree with you both. I would prefer to work not with no one understanding my problems or at least able to take charge of this or that. And the company don’t seem to understand that it shouldn’t be a one person project.

Thanks for the links, I’m already on it :wink:

For the question, I knew it would be taken a little that way. But it is not what is the best car? It is what is the best car to only put some seven small bags in the trunk. Occasionnaly take it one off and replace it, and no other special needs.

I’m just confused with all the different possibilities, and playing with a, b, c, … l, options to find I needed b seems like a big waste of time.

And for the last part of your message @ryanlogsdon, a Marketing person would maintain it, if it is easy and if I teach that person like a baby.

I think I just need more time for having a clear head with all these new things.

Thanks again

I’ll go the Rest API road for a moment and come back if need be :slight_smile:


#11

Think of your project like an arcade game or a pinball machine. The Marketing person isn’t truly maintaining it. They’re taking quarters out of the machine when the money trap fills up. They’re making sure it can keep going so long as nothing bad happens.

You need a programmer on call to maintain your app just like a pinball machine needs a mechanic when the components break.

Who will fix things when your database crashes? Not “if,” but “when.” And when the servers reboot? Servers do reboot and they don’t always come back up as planned. When one of your Node dependencies is pulled from public use without notice (you’ll learn about this issue when you address the geolocation question). I could go on and on with reasonable use cases that you need to test for. Normal humans don’t need to do that (I’m in this group!). Normal people can say “here’s the work I’ve done. you maintain it now that I’m leaving.” But your project is different. When you leave, that’s it. You can’t reasonably ask nor expect your project to live on without proper support.

Also, you’ll notice that no one has yet said “Use this database.” That’s because the requirement list you provided doesn’t translate into something actionable.

I’m truly not trying to be a pessimist. I’ve been in your shoes (or close to), and I charged forth. I’m spending all this time writing back to you to say I understand you’ve laid out one heck of a problem. Unfortunately, you’re only looking at the tip of that iceberg.


#12

Yes, that’s a lot of issues I had not think about yet, especially for the Marketing person’s maintaining part.

We’ll discuss about it tomorrow in meeting, and maybe it will just stop as I don’t think they will want to engage the resources needed to support it in the long run…

Hopefully they’ll understand it needs proper dedication and it is not about the marketing person only updating a database.

Thanks for your insights.

(And to give a little context about why they are so unaware of the implications that a project like that require is I’ve been staff by a company who thought it would be great if I did an app for one of its recently acquired subsidiary.)


#13

That’s a completely separate question from “what’s the best database?”. Generally speaking, humans don’t interact directly with databases. Marketing people definitely don’t. So what you are really asking is “what are some options for database administration tools that can be used by people who don’t really know what they’re doing as long as they don’t have to do very complicated tasks or somebody else can script some buttons for them to push?”, which is orthogonal to the actual underlying database. The database probably doesn’t need to know nor care how it is being managed.


#14

You’re right, this is what my question should have been.