I've seen NoSQL pop up quite a bit on SO and I have a solid understanding of why you would use it (from here, Wikipedia, etc). This could be due to the lack of concrete and uniform definition of what it is (more of a paradigm than concrete implementation), but I'm struggling to wrap my head around how I would go about designing a system that would use it or how I would implement it in my system. I'm really stuck in a relational-db mindset thinking of things in terms of tables and joins...
At any rate, does anybody know of a crash course/tutorial on a system that would use it (kind of a "hello world" for a NoSQL-based system) or a tutorial that takes an existing "Hello World" app based on SQL and converts it to NoSQL (not necessarily in code, but just a high-level explanation).
In short, using NoSQL databases is not difficult. The difficulty comes in using it for the right places in the right way. First of all, it is important to understand that NoSQL doesn't follow the same principles as Relational Databases such as fixed schemas, normalization, support for expressive queries like SQL.
edX offers courses covering the fundamentals of NoSQL databases offered in partnership with leaders in the field of data science and technology. You can learn from AWS, understanding not only SQL but building NoSQL using DynamoDB for scalable applications.
Of the top 10 results on DB-Engines' list of most popular database management systems in September 2021, six were relational, or SQL-based. NoSQL databases, or non-relational databases, have gained popularity and widespread adoption in the past decade.
It is clear that there is something happening in the database market and is hugely driven by the Big Data adoption. While other databases are not going to business anytime soon, there is a very bright future for NoSQL.
At its most basic form NoSQL is really no more than a way of storing objects using some sort of key/value pairing system. You use this all the time already I assume. For instance. in javascript you can create an object named foo and then do foo['myobj'] = myobj;
to store stuff in the object.
All NoSQL servers really do is give you a way to add/delete/query massive arrays and still allow for persistence and fault tolerance. You can create a NoSQL in memory server in about 100 lines of code.
So let's do it this way...in CouchDB you use map/reduce...so let's create a map function do to the same as a bit of SQL code:
SELECT * FROM users WHERE age > 10
In CouchDB you provide the server with a JavaScript function that gets run against every item in the database...
function (doc) { if (doc.objType == "users") { if (doc.age > 10) { emit(doc._id, null) } } }
That's all there really is to it.....it gets way more complex from there on the server end, as the server has to handle crashes, and multiple revisions of the same object, but this is just an example.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With