DEV Community

Databases in Coding Schools, Yay or Nay?

Margo McCabe on October 05, 2020

Over the last several months, I’ve been doing qualitative research into the coding school / developer education space. Specifically investigating i...
Collapse
 
joelbonetr profile image
JoelBonetR 🥇 • Edited

It's necessary to learn database types and try at least one of each.
Back those days I learned MySQL and SQL Server, on an era where you could connect a Microsoft Access DB to a web monolith to sync local changes with remote changes because it was a trend and an easy way to go to deal local software (DB Forms and views) plus online tools such e-commerce and so.

Nowadays that workaround is forbidden for obvious reasons and you need to know at least a relational database such MySQL/MariaDB and maybe some about mongo and Postgre, knowing a bit that three options while deep learning one of them lets you work with any of the existing on the market.
Neither it's necessary to be those three exactly, you can pick up another one of each type of course.

BTW and answering the title you need to know about databases for many reasons, one of them being the need of having one on the 99,99% of the projects and the second one being the knowing about data storage and implications it has when developing software. When you learn about your language and the database it's used on your project you can code things efficiently.

Also the major part of us are full stack but specialized on either back or front end (I think there are no senior devs uncapable to code a web app using back and front + DB + server config combined) so sometimes you'll need to throw a query directly into production DB to fix something, or perform queries to get data or aggregated data to get some BI related stuff at business level on a manner or another.

I'm supposed to be in front end but I solve database related tasks almost every day and I put my hands on back end development several times a year, and it's like this since I started coding professionally so I would say it's a must

Collapse
 
margo_hdb profile image
Margo McCabe

Thanks for sharing Joel, this is very insightful. I like your point about knowing just a couple of the database options out there, while having a deeper understanding of at least one, will set you up to work with any of the existing DB's on the market. If you ever end up checking out HarperDB, we'd love to hear your thoughts! :)

Collapse
 
joelbonetr profile image
JoelBonetR 🥇

Is it something new? Didn't heard about it till now

Thread Thread
 
margo_hdb profile image
Margo McCabe

HarperDB has been around since 2017, and we released HarperDB Cloud (our DBaaS) about 6 months ago.

Thread Thread
 
joelbonetr profile image
JoelBonetR 🥇

Oh I understand. Do you have driver and API for any language or it works as a service only?

Thread Thread
 
margo_hdb profile image
Margo McCabe

Yes we have a REST API so we are language agnostic, and we have traditional drivers and interfaces. We have example code in the Management Studio available in most languages.

Thread Thread
 
joelbonetr profile image
JoelBonetR 🥇

Nice I'll take a look :)
I saw pricing depending on RAM, does CPU also scale proportionally? Can you set up auto-scale to avoid service saturation when some campaign is set up or do you have to control it manually?
Also if I need 32 or 64Gb for 2 days or a week do you charge me with monthly cost of 64 Gb even when usually running ok with 8Gb?

Thread Thread
 
margo_hdb profile image
Margo McCabe

HarperDB Cloud managed instances run on provisioned Amazon EC2 instances. The CPUs scale proportionally as well, you can read more about the instance hardware specs here. HarperDB Cloud does not currently offer autoscaling, but you can manually scale instances. Because instances are single tenant, you always have reserved capacity and will be billed for the monthly cost of your instance.

Thread Thread
 
joelbonetr profile image
JoelBonetR 🥇 • Edited

So what is the benefit against GCP or AWS?
I understood the API thing but nothing that can't be provided easily by my own (speaking from the business point of view)

Thread Thread
 
margo_hdb profile image
Margo McCabe

I'm not sure I fully understand your question here, maybe that you don't need an SDK? If you'd like, it might be easier if we start a direct chat here on Dev so we can have quicker back and forth. Or feel free to shoot me an email margo@harperdb.io

Thanks Joel!

Thread Thread
 
joelbonetr profile image
JoelBonetR 🥇

well the purpose of keeping it as thread is to answer possible questions others could have too.

I mean that If I set up an API let's say using PHP + MySQL I can use Laravel and benefit from the ORM plus isolating on that instance the microservice/service related code and DB.
I can set it up on an Amazon EC2 which will be cheaper than relegating the DB stuff to harperDB, isn't it?

Also the ORMs usually don't work through REST calls but connecting itself into a DB instance.

I'm trying to balance costs of development with costs of architecture comparing that to what it could be using it. Also I'm trying to understand what can HarperDB offers me that I can't get with Google Cloud Platform or Amazon Web Services "as is" or at low cost (few hours of a programmer)

Thread Thread
 
margo_hdb profile image
Margo McCabe

An ORM is not necessary with HarperDB, as the primary method of interaction is through the API. This does not add any overhead to the application, in fact, it removes a layer from your application stack because HarperDB natively returns JSON objects.

Additionally, HarperDB can be installed wherever you'd like. We offer a DBaaS product, HarperDB Cloud, but you can also find HarperDB on npm.

Thread Thread
 
joelbonetr profile image
JoelBonetR 🥇

I think you've not internalized what an ORM is but anyway I'll take a look for another stuff i've in mind it can work well with some controller or gateway or without that depending on the possibilities of Harper :D

Thanks for answering

Thread Thread
 
margo_hdb profile image
Margo McCabe

Sounds good Joel, please let me know if any additional questions come up or you can always connect with our team on the Community Slack! :)

Collapse
 
davidcockerill profile image
DavidCockerill

Databases are an essential layer of the stack and thus should not be forgotten!

Collapse
 
margo_hdb profile image
Margo McCabe

true

Collapse
 
andrewbaisden profile image
Andrew Baisden • Edited

I think databases should be taught because when you start to learn them you will realise that they are not that hard to learn. When people keep them outside of a curriculum they give off the impression that it's a technical subject to understand.

I used HarperDB and PostgreSQL to create an app recently posting the tutorial later.

Collapse
 
margo_hdb profile image
Margo McCabe

Agreed - great insight Andrew! Really looking forward to seeing what you built with HarperDB and PostgreSQL.

Collapse
 
richardsprins profile image
Richard S Prins Jr.

At Lambda I truly learned the full stack, not necessarily just in the curriculum, but we got a thorough breakdown of the fundamentals and then had a chance to out that to the test with sprint challenges qeekly as well as build weeks at the end of each unit that a team worked on, that team consisted of one student from each unit together to use their skills they've learned to that point to build a full stack app, and that in itself is truly rewarding. I learned both PostgreSQL/SQLite and MongoDB/mongoose for various projects depending on its needs.

Collapse
 
patarapolw profile image
Pacharapol Withayasakpunt • Edited

The only thing that keep me using SQLite, is that it is the only decent embedded database with bindings in most languages.

It seems that embedded database development isn't really cared about, compared to an explicit web server.

Also, I am worried that HarperDB still couldn't provide the security of prepared statement... (Actually, MongoDB also has this problem as well, when strings start with $.)