
How to learn to pick a database software and design a DB for your application? - eren_jaeger
I am trying to create my own forum based application and trying to figure out how to build it&#x27;s backend by myself. I didnt have a software degree but I started out as a front end developer for the last 2 years. I was planning to build my backend with aws serverless stack, and wonder whether DynamoDB could be best for my usecase. However, I have done some reading and watched video like this https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=jzeKPKpucS0&amp;feature=youtu.be&amp;t=2559 for days and still clueless about the database selection and design for my use case. There are so many terms I dont understand. For those with software degrees, do you guys learn how to select and design a database during your college&#x2F;university? Any advise for me in starting out my application? What resource should I look into to build my knowledge?
======
davismwfl
University doesn't generally teach DB with any real vigor. I personally do not
have a CS degree but I have been in tech for a long time and I have a lot of
data side experience. When I hire new grads they commonly lack basic common DB
skills even when coming out of very high end CS programs. There are exceptions
of course, but as a general rule this isn't what a CS degree gets you. I find
people that come out of bootcamps (DBA and developer) know more relevant DB
skills than do new grads.

That said. Postgres, MySQL or any relational database is a good place to start
for forum software. There are valid arguments to be made why a document db
might be superior in some cases but honestly if I was writing a forum I'd
probably look towards Postgres and if search was going to be key, I'd also
likely have ElasticSearch as part of the solution. I would suggest whatever DB
you chose don't chose DynamoDB for your first real attempt. DynamoDB gives
experienced data engineers headaches. It isn't that Dynamo is bad, but there
are very distinct tradeoffs you need to make and weigh to setup it up for your
use cases. For the record I'd also avoid Cassandra for the same reason.
Something like Postgres or MySQL is more forgiving when you are learning IMO.
Other options could be MongoDB (people like to hate on it for issues long
resolved), SimpleDB, AWS DocumentDB etc. Amazon's document DB is Mongo
Compatible but uses their backend and is very easy to work with.

Just some ideas. Also you could look at some of the open source forum software
out there. Might help you get ideas.

------
viraptor
No, you don't learn that at uni, but you potentially gets exposed to one or
two databases (unfortunately often something proprietary that should be
classified as cruelty at that point, like Sybase).

You rarely learn to select the right database in general though your whole
career. Normally you're in one of two situations: you don't know of any
special requirements you have and go with an SQL database you like, or you
know your special requirement and know what to look for.

I wouldn't start with dynamodb, because it's rather specific and has some
limitations you may not expect. If it's your first backend project, use
something general-purpose and popular so you can find lots of resources around
it. Most likely postgres, MySQL, or sqlite (if you don't need a server).

------
quaquaqua1
Nah they usually deal mostly with theory.

Maybe one of the quickest "traditional" ways is to buy a namecheap hosting
plan with a domain. Then you'll be able to use PHP and MySQL and expose your
site to the internet for maybe $7 a month.

The other option for free practice is to download Apache2 onto a linux box and
connect to //localhost and start playing around like that.

Good luck!!

------
karmakaze
I would say choose your framework then use the db that's popular with it,
often PostgreSQL or MySQL. If it turns out to be a NoSQL like DynamoDB or
MongoDB try it out. They're different than SQL databases but good to see for
yourself.

------
jayceekay
how to build your knowledge? assuming this is a project for recreation, just
build it, it doesn't really matter what you use. both are viable for low
traffic sites. the valuable thing is that you're gonna learn the ins and outs
of one or the other, especially if/when it starts to get some decent traffic.
without knowing the specifics of the forum it's tough to recommend one vs the
other, but honestly you should optimize for just getting it done.

