3 ms·
How to learn to pick a database software and design a DB for your application?
I am trying to create my own forum based application and trying to figure out how to build it'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://www.youtube.com/watch?v=jzeKPKpucS0&feature=youtu.be&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/university? Any advise for me in starting out my application? What resource should I look into to build my knowledge?
- quaquaqua1 7y agoNah 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!!
- viraptor 7y agoNo, 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).
- davismwfl 7y agoUniversity 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.
- karmakaze 7y agoI 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 7y agohow 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.