The trend is to move all the tools that once dominated the desktop of our computers to the web and our mobile devices.
Today our web browser and smartphone has become an indispensable tool both in our leisure time and when doing our work, since the majority of desktop applications that used to communicate, store photographs, account for our time, Make presentations, and so on; Today they have their equivalent in app or web.
Apps, Software-as-a-Service (SaaS), and cloud services today dominate the marketplace and this has resulted in hundreds of successful startups that have created applications that serve millions of users. What was previously run in a closed server environment with 10-10,000 users, today runs on the web with several million users.
"What was previously executed in a closed environment of servers with 10-10,000 users, today runs on the web with several million users"
One of the key elements of these systems are the database management systems (DBMS) that we have squeezed to the maximum and have had to overcome the challenges of scalability and concurrency that these new business models entail.
The relational database model that Codd postulated in 1970 is still valid today and relational DBMSs such as MySQL or Oracle have been optimized to the maximum and still dominate the market today. Even Twitter with its millions of users continues to use MySQL, that is, with several layers of middlewares that have developed by hand and that allows them to model databases oriented to distributed graphs and saving part of the data in a non-SQL system, specifically in Cassandra.
When they have been pushed to the limit, just as it happened to the Twiter developers, engineers have been forced to use subterfuges as middlewares, intermediate caches, work outside of 3FN by duplicating some data and unintuitive solutions that complicate the maintenance of Software and contribute to its degradation.
When they have been pushed to the limit, just as it happened to the Twiter developers, engineers have been forced to use subterfuges as middlewares, intermediate caches, work outside of 3FN by duplicating some data and unintuitive solutions that complicate the maintenance of Software and contribute to its degradation.
So ... is there an alternative? How do we deal with this type of development?
Nowadays the vast majority of people who are dedicated to the web have heard of non-relational database systems, either by that name or Not Only SQL (noSQL) systems. If it does not sound to you maybe you've heard of MongoDB, one of the noSQL systems that has more impact.
However, given that during our university training we have been directed to use highly structured data, with normal forms and strict rules to ensure the consistency of data ... many developers have a hard time opting for these types of systems that can, however, Make a difference in certain projects. Non-SQL systems are easily scalable, much more versatile and of course fast. However, 'Magic always comes with a price', and not all are advantages. In return for this scalability and versatility we have to give up some features of relational systems.
In the following graph we can see how some systems are classified. On the one hand we have Memcached, which having virtually no functionalities can easily scale. To the right side of the graph we have the relational systems, which offer a great functionality at the cost of losing speed and scalability. Between half of both we would have nonSQL systems that giving up some functionalities of relational systems rapidly escalate placed on the ordinate axis.
Therefore , before starting a development the question is ...
... Can we give up these characteristics?
To which?
In the following graph we can see how some systems are classified. On the one hand we have Memcached, which having virtually no functionalities can easily scale. To the right side of the graph we have the relational systems, which offer a great functionality at the cost of losing speed and scalability. Between half of both we would have nonSQL systems that giving up some functionalities of relational systems rapidly escalate placed on the ordinate axis.
Therefore , before starting a development the question is ...
... Can we give up these characteristics?
To which?
Scalability? Yes please!
There are two ways to scale a system, what we call vertical scalability and horizontal scalability:
- Vertical scalability: It consists of improving the capabilities of the equipment for example by increasing the RAM, with faster data storage devices and with more and better processors. Obviously this has a limit and comes to a point where it is necessary to redesign the system.
- Horizontal scalability: It consists of adding nodes to the system so that the requests are distributed between the different nodes. Although the applications need to be prepared for this, this scaling is much more advantageous in terms of cost and future possibilities. In principle there is no limit since we can add as many nodes as we want and it allows us to start with a minimum hardware that we can improve progressively without having to make migrations of the system.
An example where the benefits of horizontal scalability are very clear would be in systems with seasonal traffic with important peaks such as the sale of tickets for a concert; This configuration would allow us the opening day of the sale, scale the system to withstand the initial avalanche of purchases and then reduce it progressively depending on the demand to reduce server costs.
If the system we are developing can be serviced by single database server and is not expected to grow massively in the future, my recommendation is clear: SQL systems have many more features and benefits than noSQL. In cases where it is expected that our system can grow exponentially, scalability plays a crucial role because it is necessary that our system can be dimensioned according to the demand and number of simultaneous users, ideally, without making modifications in the underlying software. In these cases it is worth studying non-relational systems before undertaking the project.
If the system we are developing can be serviced by single database server and is not expected to grow massively in the future, my recommendation is clear: SQL systems have many more features and benefits than noSQL
As already mentioned, to achieve this scalability, noSQL systems have to sacrifice some features. If we recall Brewer's theorem, he asserted that any distributed system could only fulfill 2 of the following 3 characteristics:
- Consistency: The information will always remain consistent and consistent when performing operations on the data and will be the same regardless of the node from which we receive the response.
- Availability: All the information stored in the system will always be available even if some of the nodes are not accessible.
- Partition tolerance: The system will continue to function even if part of it is no longer accessible and some nodes are out of the network.
Relational databases meet the consistency and availability characteristics. However, in order for non-relational systems to achieve the required scalability, they can not dispense with partition tolerance, which has resulted in two streams: Those who decide to give up consistency such as Cassandra or CouchDB and those who sacrifice Availability as MongoDB, Paxos or Redis. In the first case, it will be us as developers that we have to manage the possible inconsistencies that may occur in the data, which complicates the development in the second, in the case of failure of some node, some of the data may not be accessible And we must prepare our systems so that they can continue to function without such data.
It will be our responsibility as developers to study in each project the best solution, valuing the importance of each characteristic to study which we can sacrifice.
Consistency, JOIN queries and transactions
In ideal relationships systems the maximum is to store the data in a single place without duplication, for which we take the data schema to the third normal form. For example if we want to store a list of subscribers to our blog along with their interests, we will have a table of subscribers, another of interests and we will relate both through their unique identifiers. To obtain the complete information we will cross the information of both tables with a JOIN query that will return the information to us as if it were a single table.
This simple example does not have many problems, but some JOIN queries in complex databases can be too complicated and inefficient. This is where the flexibility of the NoSQL systems comes in. As the storage space is no longer a problem, why not have all the information about a record (or document) stored in a single table ( Or collection)? Thus, when we need the information, simply extract it without having to cross and mix different tables.
It makes sense, however, returning to the previous example, when we have to update the information of an interest, we will have to act on all the records that include that interest. What happens if an error occurs in the middle of the update query execution?NoSQL does not take very well with transactions , which is normal if we think that a query can be acting on several servers simultaneously and if it fails in one of them the others have no way of knowing which ones have been successfully completed and which ones have not. In these cases it will be our responsibility to restore the consistency of the data by implementing some rollback mechanism ... and at this point it is when little by little the efficiency and versatility that we have achieved thanks to the use of noSQL systems begins to lose bellows. Can we really write more efficient code for a project with a limited budget than that offered by relational systems that have been improving for more than 30 years?
This simple example does not have many problems, but some JOIN queries in complex databases can be too complicated and inefficient. This is where the flexibility of the NoSQL systems comes in. As the storage space is no longer a problem, why not have all the information about a record (or document) stored in a single table ( Or collection)? Thus, when we need the information, simply extract it without having to cross and mix different tables.
It makes sense, however, returning to the previous example, when we have to update the information of an interest, we will have to act on all the records that include that interest. What happens if an error occurs in the middle of the update query execution?NoSQL does not take very well with transactions , which is normal if we think that a query can be acting on several servers simultaneously and if it fails in one of them the others have no way of knowing which ones have been successfully completed and which ones have not. In these cases it will be our responsibility to restore the consistency of the data by implementing some rollback mechanism ... and at this point it is when little by little the efficiency and versatility that we have achieved thanks to the use of noSQL systems begins to lose bellows. Can we really write more efficient code for a project with a limited budget than that offered by relational systems that have been improving for more than 30 years?
Flexibility vs. Structured Information
Another characteristic of non-SQL systems is the absence of a data schema which can be considered an advantage or inconvenience according to the point of view. It is undoubtedly much more flexible, and makes sense if we think that information is usually never as structured as relationships systems impose. Imagine that we have developed a system that has been running for a few months and now we realize that we need to add an address field to a table. No problem, since there is no schema, simply the previous records will not include that information but we can add it to the new records.
However, such flexibility can turn into a time bomb in projects carried out by large or changing teams. For example, if returning to the example of the address some developers may decide to store it as a string of text and others as an object that separates the street, the city and the zip code. This, in the long run, can be a problem and require spending large amounts of time on code refactoring.
However, such flexibility can turn into a time bomb in projects carried out by large or changing teams. For example, if returning to the example of the address some developers may decide to store it as a string of text and others as an object that separates the street, the city and the zip code. This, in the long run, can be a problem and require spending large amounts of time on code refactoring.
Is it time for noSQL?
Many alternatives currently exist in the market with different levels of maturity, even companies like Oracle have launched their own NoSQL solution, but none can compete with the robustness and support that exists for relational systems. This may be decisive for some companies as the specifications of most non-available databases are currently changing by introducing significant changes from one version to another making it difficult to offer future compatibility for our developments.
As we have been exploring in this article, the noSQL systems are not the panacea, although it is true that they present some characteristics that can be very attractive for certain projects, but not for that reason we must throw ourselves to use them in massive form in all our developments. It is our responsibility as engineers to determine when they can be beneficial or when we can give up the extra functionalities offered by relational databases.
I finish the post opening the debate ...
What do you think about noSQL systems?
Have you ever used any of your projects?
Do you think the disadvantages they present with respect to relational systems are salvageable?
As we have been exploring in this article, the noSQL systems are not the panacea, although it is true that they present some characteristics that can be very attractive for certain projects, but not for that reason we must throw ourselves to use them in massive form in all our developments. It is our responsibility as engineers to determine when they can be beneficial or when we can give up the extra functionalities offered by relational databases.
I finish the post opening the debate ...
What do you think about noSQL systems?
Have you ever used any of your projects?
Do you think the disadvantages they present with respect to relational systems are salvageable?
ReplyDeleteSimply want to say your work is outstanding. The clarity in your post is simply excellent and i can assume you’re an expert on this subject.. Thanks a million and please carry on the rewarding work. I found some good websites to best essay writing service
Great post. I used to be checking constantly this weblog and I am inspired! Extremely useful information specially the ultimate part :) I maintain such info much. I used to be seeking this particular information for a very lengthy time.
ReplyDeleteThank yyou and good luck.
website design pakistan
responsive web design
website design services Pakistan
responsive web design services in Karachi
UI UX website design Pakistan
wireframe design in Karachi
Best website Design services in Pakistan
Pakistan Best web design service
I wanted to thank you for this great read!! I definitely enjoying every little bit of it I have you bookmarked to check out new stuff you post. trafficize bonus
ReplyDeleteI was reading some of your content on this website and I conceive this internet site is really informative ! Keep on putting up. agence de pub Strasbourg
ReplyDeleteI wanted to thank you for this excellent read!! I definitely loved every little bit of it. I have you bookmarked your site to check out the new stuff you post. To-do Task List Web App
ReplyDeleteDesigning websites today is relatively easy compared to 5 or 10 years ago, you have content managed websites such as WordPress these can be built by anyone with an intermediate knowledge of computers, you do not have to have any website design or html knowledge. Elementor Experts
ReplyDeleteI really appreciate this wonderful post that you have provided for us. I assure this would be beneficial for most of the people. Tire Repair Olathe
ReplyDeleteWow! Such an amazing and helpful post this is. I really really love it. It's so good and so awesome. I am just amazed. I hope that you continue to do your work like this in the future also WordPress Developer Brisbane
ReplyDeleteTo get a game translator you should visit iGlobe. They have the best team to translate your game's language. Now you can easily play local games and can beat your competitors. Mobile gaming translation
ReplyDeleteHello, this weekend is good for me, since this time i am reading this enormous informative article here at my home.
ReplyDeleteคลินิกเสริมความงาม
That is enterprise associated knowledge gaining article. This put up is truly the first-class on this valuable subject matter.
ReplyDeleteIdn Slot
ReplyDeleteSuperbly written article, if only all bloggers offered the same content as you, the internet would be a far better place..
먹튀검증사이트
Thank you for some other informative blog. Where else could I get that type of information written in such an ideal means? I have a mission that I’m just now working on, and I have been at the look out for such information.
ReplyDeleteSEO Company Australia
Thank you again for all the knowledge you distribute,Good post. I was very interested in the article, it's quite inspiring I should admit. I like visiting you site since I always come across interesting articles like this one.Great Job, I greatly appreciate that.Do Keep sharing! Regards,
ReplyDelete토토사이트
The content is utmost interesting! I have completely enjoyed reading your points and have come to the conclusion that you are right about many of them. You are great, and your efforts are outstanding! convert pdf to docx
ReplyDeleteThank you again for all the knowledge you distribute,Good post. I was very interested in the article, it's quite inspiring I should admit. I like visiting you site since I always come across interesting articles like this one.Great Job, I greatly appreciate that.Do Keep sharing! Regards,
ReplyDeleteuk spinning bike
This particular tools are extremely important to me whenever I require because they help me get the practical analysis of my project completed.
ReplyDeleteIndustrial Cleaning Companies Livonia MI
I would like to say that this blog really convinced me to do it! Thanks, very good post.
ReplyDeleteview it
Your blog is fabulous, superior give good results... Seen a large number of definitely will understand everybody even in the event they do not take the time to reveal.
ReplyDeleterefomas baños zaragoza
Excellent information on your blog, thank you for taking the time to share with us. Amazing insight you have on this, it's nice to find a website that details so much information about different artists.
ReplyDeleteresidence permit turkey
Just saying thanks will not just be sufficient, for the fantasti c lucidity in your writing. I will instantly grab your rss feed to stay 스포츠토토사이트
ReplyDeleteThis blog helps me a lot. Please make time to read, to read. I love to read such an excellent article. Thanks! It has made my 토토사이트검증
ReplyDeletebrowsed most of your posts. This post is probably where I got the most I am looking forward to checking out more 토토사이트검증
ReplyDeleteKeep up the good work , I read few posts on this web site and I conceive that your blog is very interesting and has sets of fantastic information. 먹튀사이트
ReplyDeletethis web site is genuinely nice and the people are It's cool every day 토토사이트
ReplyDeletemy own blog and would like to find out where u got this from. 토토사이트 I live in a different country than you
ReplyDeleteThis blog is a very informative place. I'll come by often my own blog and would like to find out where u got this from. 토토사이트
ReplyDeleteNice post. I was checking constantly this blog and I’m impressed! Extremely useful info specially the last part I care for such information a lot. I was seeking this certain info for a long time. Thank you and good luck. แทงบอล i99pro
ReplyDeleteI am unable to read articles online very often, but I’m glad I did today. This is very well written and your points are well-expressed. Please, don’t ever stop writing. 안전놀이터
ReplyDeleteThe article looks magnificent, but it would be beneficial if you can share more about the suchlike subjects in the future. Keep posting. halal bakery near me
ReplyDeleteThankyou for this wondrous post, I am glad I observed this website on yahoo. 안전놀이터
ReplyDeleteI am happy to find your distinguished way of writing the post. Now you make it easy for me to understand and implement the concept. Thank you for the post. 온라인릴게임
ReplyDeleteI know this is one of the most meaningful information for me. And I'm animated reading your article. But should remark on some general things, the website style is perfect; the articles are great. Thanks for the ton of tangible and attainable help. pii-email
ReplyDeletei am always looking for some free stuffs over the internet. there are also some companies which gives free samples. joker123
ReplyDeleteGreat articles and great layout. Your blog post deserves all of the positive feedback it’s been getting. website
ReplyDeleteWhen your website or blog goes live for the first time, it is exciting. That is until you realize no one but you and your.
ReplyDeletepresales
ReplyDeleteI get your meaning, saved in my bookmarks, a very decent website.. Indian visa for US citizens, US citizens are eligible to apply for the India eVisa. The process is completely online and there is no need to submit the paperwork in person to any Indian Embassy or Consulate.
Very nice post, I definitely love this website, keep up the good work.. Eligible citizens are able & apply Azerbaijan electronic visa online through the simple and straightforward Azerbaijan visum application form.
ReplyDeleteThis is a great inspiring article.I am pretty much pleased with your good work.You put very helpful information. Keep it up. Keep blogging. Looking to reading your next post.
ReplyDeletePrivate Blockchain Development
Thanks for the nice blog. It was very useful for me. I'm happy I found this blog. Thank you for sharing with us,I too always learn something new from your post.
ReplyDeleteNFT Marketplace Memes
This type of is outstanding. These kinds of tiny facts are made making use of a wide variety regarding certification know-how. My partner and I favor the theory much.
ReplyDeleteBlockchain IOT Software Solution
This is a great inspiring article. I am pretty much pleased with your good work. You put very helpful information. Keep it up. Keep blogging. Looking to reading your next post.
ReplyDeleteICO Launchpad Software Solution
This post is greatly simple to scrutinize and recognize without overlooking any unobtrusive components. Remarkable work! bitmain antminer L7
ReplyDeletei genuinely love your net website online.. Very brilliant sun shades & problem. Did you create this internet site your self? Please reply again as iím hoping to create my very private blog and would love to investigate in which you got this from or exactly what the topic is referred to as. Thanks! My partner and i genuinely love your blog and locate masses of your put up’s to be what exactly i’m looking for. Does one offer guest writers to put in writing content fabric for you in my opinion? I wouldn’t thoughts composing a post or elaborating on some of the topics you write related to here. Once more, super blog! You have got were given made some first rate factors there. I appeared on the net for delivered information approximately the issue and observed most individuals will go with your perspectives in this internet internet website. This weblog is absolutely rather to be had because i’m inside the imply time developing an internet floral internet website – despite the fact that i am first-rate starting out therefore it’s absolutely pretty small, no longer some thing like this website online. Can link to three of the posts right right here as they may be pretty. Thanks heaps. 바카라사이트추천
ReplyDeleteexcellent factors you wrote right here.. Extraordinary stuff…i anticipate you’ve made some definitely exciting elements. Preserve up the first-rate paintings. Attempting to say thank you gained’t absolutely be adequate, for the splendid lucidity to your article. I'm able to legitimately get your rss to stay informed concerning any updates. Tremendous paintings and lots accomplishment for your business enterprise endeavors. Thank you for the remarkable weblog. It was very useful for me. I’m glad i found this weblog. Thank you for sharing with us,i too continuously observe something new out of your submit. Thanks for each extraordinary informative web web page. The vicinity else might also moreover simply i am getting that type of facts written in this type of absolutely ideal technique? I've a venture that i’m actually now running on, and i've been at the look out for such facts 오래된토토사이트주소
ReplyDeleteA very awesome blog post. We are really grateful for your blog post. You will find a lot of approaches after visiting your post.
ReplyDeleteblockchain exchange consulting company
I just want to let you know that I am a beginner to blog and of course I have enjoyed your web page... Required documents for the Indian business e-Visa , You can check online Indian evisa portal and read all requirement & guidelines related to Indian business visa.
ReplyDeleteGood afternoon everyone. Great blog. Thanks for sharing. You know how many categories of India e-visa, you can get more info about electronic Indian Visa & India visa price via our India visa page.
ReplyDeleteThis is a really decent site post. Not very numerous individuals would really, the way you simply did. I am truly inspired that there is such a great amount of data about this subject write me an assignment has been revealed and you've put forth a valiant effort, with so much class here is my new blog if you want to see nintendo ds emulator pc
ReplyDeleteAre you looking for hanine pronunciation? There are many different ways to pronounce the Arabic word "hanine". In this blog post, we look at three different pronunciations of this word in American English. The first pronunciation is the most common and is pronounced "HAH-nee". The second pronunciation is a bit more regional and is pronounced "huh-NEEN". The third pronunciation is less common but is still heard in parts of the United States. Pronounced "ha-NINE". Whatever pronunciation of Hanine you choose, be sure to practice saying it out loud! This will help you improve your pronunciation and avoid confusion when speaking to native English speakers. Thanks for reading and Happy Hanukkah!
ReplyDeletewhat is sedordle
ReplyDeleteare you want to watch x-men movies in chronological order read this article
ReplyDeletekim kardashian american flag
ReplyDeleteInteresting and interesting information can be found on this topic here profile worth to see it. wind mitigation
ReplyDeleteI have been examinating out many of your stories and i must say pretty good stuff. keep posting Custom Tote Bags
ReplyDeleteConsider your website as the mechanical core of your company. Could you choose to recognize a particularly organised face to greet them and make them feel loved if someone walked through your actual neighborhood? A revived and modern site design is equivalent to a highly arranged face greeting your new visitors.
ReplyDeleteBest web design agency in vizag
The requirement for a responsive game plan is more now than it was in the past because to advancements in cells. A wide range of devices, such as PDAs, tablets, and laptops, will be used by your audience to access your website. You should make sure that everyone has a good experience if you believe that these leads should stay on your website.
hanks for sharing this amazing kind of work, keep posting, Pendants
ReplyDeleteTHE ONE CARGO บริการ สั่งของจากจีน นำเข้าสินค้าจากจีน สั่งซื้อสินค้าจากประเทศจีน ด้วยเว็บไซต์ E-Commerce ชั้นนำในจีน 1688, taobao และ tmall และเว็บไซต์อื่น รวมถึงบริการฝากชำระเงินหรือโอนเงินไปยังประเทศจีนและบริการฝากนำเข้าสินค้าจากประเทศจีน โดยทีมงานมืออาชีพ
ReplyDelete