Hi, I am just starting out my software engineering journey, I wanted to know which is the most i demand Database that I should learn. Any insights are appriciated.
Reality check. Are you trying to be an old school DBA?
This is the way. Learn SQL, Oracle, mysql, SqlSever, and PostGress.
PostGress.
As a side note: It's either Postgres or PostgreSQL
Start with relational. Probably postgres.
PostgreSQL is good for almost everything, start here
Learn standard SQL, then learn the changes MariaDB and Postgres make to it.
You should learn Redis because it’s deeply embedded everywhere and the default cache for some reason, even though it’s both slow and resource inefficient, and I will provide a pile of papers and benchmarks to anyone who wants to fight me on that.
MongoDB is popular because it interops with JS easily so JS devs love just shoving JS objects in it.
You probably will want to learn zookeeper, since knowing it will solve at least one problem at some point in the future.
What would be your preferred caching solution?
I’m if I can use it, I have an FPGA design that I’ve been carrying around for years. If not, then I have a private DPDK-based one. If you want one, MICA is slightly bitrotted but outperforms redis by 9x per core.
Microsoft’s Garnet is Redis compatible and can be about ~2x faster per core, and is easier to deploy.
the default cache for some reason,
Simple to use. Comprehensive commands. Versatile. Performant. Can be set up as a cluster.
Not just 'some reason'.
This is very interesting, I have never actually had any performance related issues with redis over the last five years of using it. The issues always come from poor cacheing strategies.
My point is that a “very good” 2012 server config is almost 10x the performance of redis per core on modern hardware. That’s pretty abysmal.
A normal server with 10G networking (note that the 2012 one had 4 dual-port 10G NICs in it to feed the thing) should run out of network before it runs out of CPU or memory bandwidth if it’s acting as a key/value cache, and if you need a scan function then it should still be pretty close. A good cache should last you from startup size until you can hire a PhD to build you a custom one on one server, only being replicated for latency or redundancy.
as many stated, learn SQL.. as far as databases go, its really situational on what you need. a redis database might suite your needs, or a flat file, or something you can host separately or cluster like mysql, postgre, oracle or other.
Generic SQL. Look up quirks for specific implementations.
MySQL, Postgres, sqilte. Take your pick
Everyone here is correct, you would probably play around with something like elasticsearch as well as sometime similar is being used almost everywhere now
While everyone is correct, I would add my out of the box opinion: Learn Entity Framework. It reduces relational database differences to a common set of fundamental operations which you can learn first. After having this ground knowledge you can go ahead and learn more in-depth about specific databases.
SQL is a half-century old. Most of the world’s long-lived table oriented data lives in long-lived SQL systems.
Many large orgs use Oracle. Other orgs who have money to pay license fees use Microsoft SQL Server either on their own machines or via a cloud offering like Azure SQL. PostgreSQL, the open-source offering by database theory superstar Michael Stonebraker and his team, is popular both on private machines and in the cloud (AWS Redshift, https://neon.tech/ and many more). MariaDB / MySQL is very broadly adopted via CMS packages like WordPress and Drupal. IBM DB2 has a loyal following in orgs that have been around since mainframe days. All those packages are mature software, even as they are vast and complex.
Which one should you learn? They share the fundamental structural syntax. Sadly, they’re all a bit different from each other in details, especially in the way they handle datestamps and text strings. So the concepts are portable but the precise syntax isn’t.
The one you need to use for work is the best choice to learn. If you’re learning on your own, I suggest you choose a stack. Stacks consist of a DBMS, a programming language, and a web server or desktop app framework.
Some generalizations about types of stack( many many exceptions to these)
MariaDb( or MySql) / php / Apache is a popular stack, widely available on budget hosting companies.
Microsoft SQL server / C# / IIS is very popular for line-of-business apps in Microsoft shops.
Oracle / Java / Tomcat is big for enterprises
PostgreSQL / node.js Javascript / nginx fuels lots of more recently deployed applications.
PostgresSQL / python is also widely used, in ML and analytic work.
SQLite gets embedded in many locally running apps in many different languages.
Pick a stack and do something interesting with it if you want to learn. You can get any of these to run on your laptop for no money, either natively or on a virtual machine. (I’ve personally done that with all except DB2).
Notice, there are also document-oriented databases like MongoDb, as well as the table- oriented databases mentioned here.