{"id":53993,"date":"2024-08-29T11:28:06","date_gmt":"2024-08-29T11:28:06","guid":{"rendered":"https:\/\/www.bridge-global.com\/blog\/blog\/?p=53993"},"modified":"2024-08-29T11:58:25","modified_gmt":"2024-08-29T11:58:25","slug":"database-for-optimal-performance-part-1","status":"publish","type":"post","link":"https:\/\/www.bridge-global.com\/blog\/database-for-optimal-performance-part-1\/","title":{"rendered":"Choosing the Best Database for Optimal Performance &#8211; Part 1"},"content":{"rendered":"<div class=\"vce-row-container\" data-vce-boxed-width=\"true\"><div class=\"vce-row vce-row--col-gap-30 vce-row-equal-height vce-row-content--top\" id=\"el-f061498b\" data-vce-do-apply=\"all el-f061498b\"><div class=\"vce-row-content\" data-vce-element-content=\"true\"><div class=\"vce-col vce-col--md-auto vce-col--xs-1 vce-col--xs-last vce-col--xs-first vce-col--sm-last vce-col--sm-first vce-col--md-last vce-col--lg-last vce-col--xl-last vce-col--md-first vce-col--lg-first vce-col--xl-first\" id=\"el-6cad89ea\"><div class=\"vce-col-inner\" data-vce-do-apply=\"border margin background  el-6cad89ea\"><div class=\"vce-col-content\" data-vce-element-content=\"true\" data-vce-do-apply=\"padding el-6cad89ea\"><div class=\"vce-text-block\"><div class=\"vce-text-block-wrapper vce\" id=\"el-a4208983\" data-vce-do-apply=\"all el-a4208983\"><p>Choosing a database is a simple thing when we are looking for a product that does not need large scaling. It could be an internal management system, a hyperlocal ecommerce model in a few kilometer areas, or an application with high per-customer returns. But, when planning to serve it across borders, we may need to think about how efficiently we can deliver our applications with the best user experience. Let\u2019s discuss some prominent databases around us in this first part of the blog by calling it a \u2018super introduction.\u2019<\/p><p>So, this discussion is divided into two sections:<\/p><ul><li>Different Databases around us<\/li><li>Things to know before we choose one<\/li><\/ul><p>Before that, let\u2019s put a question for the enthusiasts here:<\/p><p><em>Assume you are a developer at LinkedIn, (for the sake of understanding) and you are assigned to share a Tim Cook post with all his 3rd and 4th-degree connections.<br><br><\/em><em>What will be your \u201cdatabase\u201d, \u201cdata structure\u201d and \u201cquery\u201d to find those users? - This is the problem we are trying to tackle here.<\/em><\/p><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><div class=\"vce-row-container\" data-vce-boxed-width=\"true\"><div class=\"vce-row vce-row--col-gap-30 vce-row-equal-height vce-row-content--top\" id=\"el-8a97623d\" data-vce-do-apply=\"all el-8a97623d\"><div class=\"vce-row-content\" data-vce-element-content=\"true\"><div class=\"vce-col vce-col--md-auto vce-col--xs-1 vce-col--xs-last vce-col--xs-first vce-col--sm-last vce-col--sm-first vce-col--md-last vce-col--lg-last vce-col--xl-last vce-col--md-first vce-col--lg-first vce-col--xl-first\" id=\"el-0ea7c07e\"><div class=\"vce-col-inner\" data-vce-do-apply=\"border margin background  el-0ea7c07e\"><div class=\"vce-col-content\" data-vce-element-content=\"true\" data-vce-do-apply=\"padding el-0ea7c07e\"><div class=\"vce-text-block\"><div class=\"vce-text-block-wrapper vce\" id=\"el-16a14909\" data-vce-do-apply=\"all el-16a14909\"><h2>How It Is About\u2026<\/h2><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><div class=\"vce-row-container\" data-vce-boxed-width=\"true\"><div class=\"vce-row vce-row--col-gap-30 vce-row-equal-height vce-row-content--top\" id=\"el-b67ab874\" data-vce-do-apply=\"all el-b67ab874\"><div class=\"vce-row-content\" data-vce-element-content=\"true\"><div class=\"vce-col vce-col--md-auto vce-col--xs-1 vce-col--xs-last vce-col--xs-first vce-col--sm-last vce-col--sm-first vce-col--md-last vce-col--lg-last vce-col--xl-last vce-col--md-first vce-col--lg-first vce-col--xl-first\" id=\"el-627f8dd7\"><div class=\"vce-col-inner\" data-vce-do-apply=\"border margin background  el-627f8dd7\"><div class=\"vce-col-content\" data-vce-element-content=\"true\" data-vce-do-apply=\"padding el-627f8dd7\"><div class=\"vce-text-block\"><div class=\"vce-text-block-wrapper vce\" id=\"el-dfcc9edb\" data-vce-do-apply=\"all el-dfcc9edb\"><p>As developers, what is our core responsibility?<br>To manage the soft copy of data, right? Does someone have any other opinion (I respect that as well)? Automating your business, creating tech solutions for your problem, etc. provides a potential growth of handling 50 users per month using Excel sheets by you to 500K per day or more with your staff. So, basically, we automate the point of entry of raw data with <a href=\"https:\/\/www.bridge-global.com\/services\/ui-ux-services\" target=\"_blank\" rel=\"noopener\">engaging UI &amp; UX<\/a> and forms, store them in the database, calculate what we want, and present what we need. What do developers manage here? It\u2019s the raw form of data. You may recall a person's photo or name by looking at the Uber driver's location from where the customer stands. Or even more complex, we can see the street view and go to the business just by looking at Google Maps.<\/p><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><div class=\"vce-row-container\" data-vce-boxed-width=\"true\"><div class=\"vce-row vce-row--col-gap-30 vce-row-equal-height vce-row-content--top\" id=\"el-661d12fc\" data-vce-do-apply=\"all el-661d12fc\"><div class=\"vce-row-content\" data-vce-element-content=\"true\"><div class=\"vce-col vce-col--md-auto vce-col--xs-1 vce-col--xs-last vce-col--xs-first vce-col--sm-last vce-col--sm-first vce-col--md-last vce-col--lg-last vce-col--xl-last vce-col--md-first vce-col--lg-first vce-col--xl-first\" id=\"el-06a7bec0\"><div class=\"vce-col-inner\" data-vce-do-apply=\"border margin background  el-06a7bec0\"><div class=\"vce-col-content\" data-vce-element-content=\"true\" data-vce-do-apply=\"padding el-06a7bec0\"><div class=\"vce-text-block\"><div class=\"vce-text-block-wrapper vce\" id=\"el-58f60f8b\" data-vce-do-apply=\"all el-58f60f8b\"><h2>Understanding Data Types<\/h2><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><div class=\"vce-row-container\" data-vce-boxed-width=\"true\"><div class=\"vce-row vce-row--col-gap-30 vce-row-equal-height vce-row-content--top\" id=\"el-cea8cb1f\" data-vce-do-apply=\"all el-cea8cb1f\"><div class=\"vce-row-content\" data-vce-element-content=\"true\"><div class=\"vce-col vce-col--md-auto vce-col--xs-1 vce-col--xs-last vce-col--xs-first vce-col--sm-last vce-col--sm-first vce-col--md-last vce-col--lg-last vce-col--xl-last vce-col--md-first vce-col--lg-first vce-col--xl-first\" id=\"el-3e373ad6\"><div class=\"vce-col-inner\" data-vce-do-apply=\"border margin background  el-3e373ad6\"><div class=\"vce-col-content\" data-vce-element-content=\"true\" data-vce-do-apply=\"padding el-3e373ad6\"><div class=\"vce-text-block\"><div class=\"vce-text-block-wrapper vce\" id=\"el-b6ca0d2b\" data-vce-do-apply=\"all el-b6ca0d2b\"><p>When the world is running, our big three headaches start with v's. They are <code>volume<\/code>, <code>velocity<\/code>, and <code>variety<\/code> of data. So to control them, we don\u2019t have a magic spell like Harry Potter uses.<\/p><p>So we need engineering and better storage for easy data retrieval using <a href=\"https:\/\/www.bridge-global.com\/services\/cloud-services\" target=\"_blank\" rel=\"noopener\">expert cloud services<\/a>. The primary step will be classifying and storing different data types into various formats, where we can perform operations on them. When we need to operate it efficiently, we need them to be in an optimal structure where we can use it, like just storing a yes or no, for the question, \u201cDoes this user have admin access?\u201d, or a date with which I can bring, \u201cGet me all users who have a purchase this month.\u201d<\/p><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><div class=\"vce-row-container\" data-vce-boxed-width=\"true\"><div class=\"vce-row vce-row--col-gap-30 vce-row-equal-height vce-row-content--top\" id=\"el-8f1a34f8\" data-vce-do-apply=\"all el-8f1a34f8\"><div class=\"vce-row-content\" data-vce-element-content=\"true\"><div class=\"vce-col vce-col--md-auto vce-col--xs-1 vce-col--xs-last vce-col--xs-first vce-col--sm-last vce-col--sm-first vce-col--md-last vce-col--lg-last vce-col--xl-last vce-col--md-first vce-col--lg-first vce-col--xl-first\" id=\"el-886c6d32\"><div class=\"vce-col-inner\" data-vce-do-apply=\"border margin background  el-886c6d32\"><div class=\"vce-col-content\" data-vce-element-content=\"true\" data-vce-do-apply=\"padding el-886c6d32\"><div class=\"vce-single-image-container vce-single-image--align-center\"><div class=\"vce vce-single-image-wrapper\" id=\"el-2a7c6735\" data-vce-do-apply=\"all el-2a7c6735\"><figure><div class=\"vce-single-image-inner vce-single-image--absolute vce-single-image--border-rounded\" style=\"padding-bottom: 44.0613%; width: 783px;\"><img loading=\"lazy\" decoding=\"async\" class=\"vce-single-image vcv-lozad\" data-src=\"https:\/\/www.bridge-global.com\/blog\/wp-content\/uploads\/2024\/08\/Understanding-Data-Types.png\" width=\"783\" height=\"345\" src=\"\" data-img-src=\"https:\/\/www.bridge-global.com\/blog\/wp-content\/uploads\/2024\/08\/Understanding-Data-Types.png\" alt=\"Understanding Data Types\" title=\"Understanding Data Types\" \/><noscript>\n        <img loading=\"lazy\" decoding=\"async\" class=\"vce-single-image\" src=\"https:\/\/www.bridge-global.com\/blog\/wp-content\/uploads\/2024\/08\/Understanding-Data-Types.png\" width=\"783\" height=\"345\" alt=\"Understanding Data Types\" title=\"Understanding Data Types\" \/>\n      <\/noscript><\/div><figcaption hidden=\"\"><\/figcaption><\/figure><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><div class=\"vce-row-container\" data-vce-boxed-width=\"true\"><div class=\"vce-row vce-row--col-gap-30 vce-row-equal-height vce-row-content--top\" id=\"el-ce707929\" data-vce-do-apply=\"all el-ce707929\"><div class=\"vce-row-content\" data-vce-element-content=\"true\"><div class=\"vce-col vce-col--md-auto vce-col--xs-1 vce-col--xs-last vce-col--xs-first vce-col--sm-last vce-col--sm-first vce-col--md-last vce-col--lg-last vce-col--xl-last vce-col--md-first vce-col--lg-first vce-col--xl-first\" id=\"el-36407f80\"><div class=\"vce-col-inner\" data-vce-do-apply=\"border margin background  el-36407f80\"><div class=\"vce-col-content\" data-vce-element-content=\"true\" data-vce-do-apply=\"padding el-36407f80\"><div class=\"vce-text-block\"><div class=\"vce-text-block-wrapper vce\" id=\"el-80961b8d\" data-vce-do-apply=\"all el-80961b8d\"><p>Just go through these terms, in case anything is confusing, just Google it as \u201cExplain Data Type: UUID\u201d. Yet these are just some of the underrated data types. You can explore more using ChatGPT, Copilot, or Claude.<br><br>When planning to store data as tables, such as an Excel sheet, we call it a relational database.<br><br>Everyone might be aware of the term \u201cRelational Database\u201d. For those unfamiliar, here is a simplified definition:<\/p><ul><li>This is an application, something like Photoshop or Google Chrome, but its primary purpose is to get connected to other programs, to store, modify, and retrieve data efficiently.<\/li><\/ul><p>You can see a sample table above and a CSV on the right. We can imagine the data we insert into the database to be stored in such a manner.<\/p><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><div class=\"vce-row-container\" data-vce-boxed-width=\"true\"><div class=\"vce-row vce-row--col-gap-30 vce-row-equal-height vce-row-content--top\" id=\"el-f2d1c56d\" data-vce-do-apply=\"all el-f2d1c56d\"><div class=\"vce-row-content\" data-vce-element-content=\"true\"><div class=\"vce-col vce-col--md-auto vce-col--xs-1 vce-col--xs-last vce-col--xs-first vce-col--sm-last vce-col--sm-first vce-col--md-last vce-col--lg-last vce-col--xl-last vce-col--md-first vce-col--lg-first vce-col--xl-first\" id=\"el-29f6565e\"><div class=\"vce-col-inner\" data-vce-do-apply=\"border margin background  el-29f6565e\"><div class=\"vce-col-content\" data-vce-element-content=\"true\" data-vce-do-apply=\"padding el-29f6565e\"><div class=\"vce-text-block\"><div class=\"vce-text-block-wrapper vce\" id=\"el-da47d8e7\" data-vce-do-apply=\"all el-da47d8e7\"><h2>First Imagination<\/h2><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><div class=\"vce-row-container\" data-vce-boxed-width=\"true\"><div class=\"vce-row vce-row--col-gap-30 vce-row-equal-height vce-row-content--top\" id=\"el-abc6563d\" data-vce-do-apply=\"all el-abc6563d\"><div class=\"vce-row-content\" data-vce-element-content=\"true\"><div class=\"vce-col vce-col--md-auto vce-col--xs-1 vce-col--xs-last vce-col--xs-first vce-col--sm-last vce-col--sm-first vce-col--md-last vce-col--lg-last vce-col--xl-last vce-col--md-first vce-col--lg-first vce-col--xl-first\" id=\"el-86951043\"><div class=\"vce-col-inner\" data-vce-do-apply=\"border margin background  el-86951043\"><div class=\"vce-col-content\" data-vce-element-content=\"true\" data-vce-do-apply=\"padding el-86951043\"><div class=\"vce-text-block\"><div class=\"vce-text-block-wrapper vce\" id=\"el-a90f5bef\" data-vce-do-apply=\"all el-a90f5bef\"><p>So, for those who already have an idea, have you ever wondered, how these datasets have been stored in db? This is beyond our scope, however, imagine on one line for the left dataset, we have a table like this:<\/p><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><div class=\"vce-row-container\" data-vce-boxed-width=\"true\"><div class=\"vce-row vce-row--col-gap-30 vce-row-equal-height vce-row-content--top\" id=\"el-11c80cdb\" data-vce-do-apply=\"all el-11c80cdb\"><div class=\"vce-row-content\" data-vce-element-content=\"true\"><div class=\"vce-col vce-col--md-auto vce-col--xs-1 vce-col--xs-last vce-col--xs-first vce-col--sm-last vce-col--sm-first vce-col--md-last vce-col--lg-last vce-col--xl-last vce-col--md-first vce-col--lg-first vce-col--xl-first\" id=\"el-30cf6975\"><div class=\"vce-col-inner\" data-vce-do-apply=\"border margin background  el-30cf6975\"><div class=\"vce-col-content\" data-vce-element-content=\"true\" data-vce-do-apply=\"padding el-30cf6975\"><div class=\"vce-single-image-container vce-single-image--align-center\"><div class=\"vce vce-single-image-wrapper\" id=\"el-0069398c\" data-vce-do-apply=\"all el-0069398c\"><figure><div class=\"vce-single-image-inner vce-single-image--absolute vce-single-image--border-rounded\" style=\"padding-bottom: 51.8555%; width: 1024px;\"><img loading=\"lazy\" decoding=\"async\" class=\"vce-single-image vcv-lozad\" data-src=\"https:\/\/www.bridge-global.com\/blog\/wp-content\/uploads\/2024\/08\/First-Imagination-scaled.jpg\" width=\"1024\" height=\"531\" src=\"\" data-img-src=\"https:\/\/www.bridge-global.com\/blog\/wp-content\/uploads\/2024\/08\/First-Imagination-scaled.jpg\" alt=\"First Imagination\" title=\"First Imagination\" \/><noscript>\n        <img loading=\"lazy\" decoding=\"async\" class=\"vce-single-image\" src=\"https:\/\/www.bridge-global.com\/blog\/wp-content\/uploads\/2024\/08\/First-Imagination-scaled.jpg\" width=\"1024\" height=\"531\" alt=\"First Imagination\" title=\"First Imagination\" \/>\n      <\/noscript><\/div><figcaption hidden=\"\"><\/figcaption><\/figure><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><div class=\"vce-row-container\" data-vce-boxed-width=\"true\"><div class=\"vce-row vce-row--col-gap-30 vce-row-equal-height vce-row-content--top\" id=\"el-f16ec8ff\" data-vce-do-apply=\"all el-f16ec8ff\"><div class=\"vce-row-content\" data-vce-element-content=\"true\"><div class=\"vce-col vce-col--md-auto vce-col--xs-1 vce-col--xs-last vce-col--xs-first vce-col--sm-last vce-col--sm-first vce-col--md-last vce-col--lg-last vce-col--xl-last vce-col--md-first vce-col--lg-first vce-col--xl-first\" id=\"el-91af1e65\"><div class=\"vce-col-inner\" data-vce-do-apply=\"border margin background  el-91af1e65\"><div class=\"vce-col-content\" data-vce-element-content=\"true\" data-vce-do-apply=\"padding el-91af1e65\"><div class=\"vce-text-block\"><div class=\"vce-text-block-wrapper vce\" id=\"el-3f3230da\" data-vce-do-apply=\"all el-3f3230da\"><p>Net it will take around 100 chars of space for each row. This leads to storing data like:<br><br>The first row starts at, say, 2000, then the next record will be at 2100, and the next at 2200.<br><br>Using this structure, we can assure, at any row, the area name starts at the location will be = (row starting + 74) and the ending location will be (row starting + 94)<br><br><em>This is not how it works, but it is a great place to start for an in-depth and simple breakdown.<\/em><br><br>So, regardless of whether data is there or not, the space is kept reserved to access data with some simple calculations; if we know the starting address of the table, and size of any row, and the delta of space for each column. From the row:<\/p><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><div class=\"vce-row-container\" data-vce-boxed-width=\"true\"><div class=\"vce-row vce-row--col-gap-30 vce-row-equal-height vce-row-content--top\" id=\"el-e6939ee1\" data-vce-do-apply=\"all el-e6939ee1\"><div class=\"vce-row-content\" data-vce-element-content=\"true\"><div class=\"vce-col vce-col--md-auto vce-col--xs-1 vce-col--xs-last vce-col--xs-first vce-col--sm-last vce-col--sm-first vce-col--md-last vce-col--lg-last vce-col--xl-last vce-col--md-first vce-col--lg-first vce-col--xl-first\" id=\"el-d9881994\"><div class=\"vce-col-inner\" data-vce-do-apply=\"border margin background  el-d9881994\"><div class=\"vce-col-content\" data-vce-element-content=\"true\" data-vce-do-apply=\"padding el-d9881994\"><div class=\"vce-single-image-container vce-single-image--align-center\"><div class=\"vce vce-single-image-wrapper\" id=\"el-13ad2666\" data-vce-do-apply=\"all el-13ad2666\"><figure><div class=\"vce-single-image-inner vce-single-image--absolute vce-single-image--border-rounded\" style=\"padding-bottom: 72.2749%; width: 422px;\"><img loading=\"lazy\" decoding=\"async\" class=\"vce-single-image vcv-lozad\" data-src=\"https:\/\/www.bridge-global.com\/blog\/wp-content\/uploads\/2024\/08\/An-Ultimate-Solution-for-All-Your-Problems.png\" width=\"422\" height=\"305\" src=\"\" data-img-src=\"https:\/\/www.bridge-global.com\/blog\/wp-content\/uploads\/2024\/08\/An-Ultimate-Solution-for-All-Your-Problems.png\" alt=\"An Ultimate Solution for All Your Problems\" title=\"An Ultimate Solution for All Your Problems\" \/><noscript>\n        <img loading=\"lazy\" decoding=\"async\" class=\"vce-single-image\" src=\"https:\/\/www.bridge-global.com\/blog\/wp-content\/uploads\/2024\/08\/An-Ultimate-Solution-for-All-Your-Problems.png\" width=\"422\" height=\"305\" alt=\"An Ultimate Solution for All Your Problems\" title=\"An Ultimate Solution for All Your Problems\" \/>\n      <\/noscript><\/div><figcaption hidden=\"\"><\/figcaption><\/figure><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><div class=\"vce-row-container\" data-vce-boxed-width=\"true\"><div class=\"vce-row vce-row--col-gap-30 vce-row-equal-height vce-row-content--top\" id=\"el-d2c008a2\" data-vce-do-apply=\"all el-d2c008a2\"><div class=\"vce-row-content\" data-vce-element-content=\"true\"><div class=\"vce-col vce-col--md-auto vce-col--xs-1 vce-col--xs-last vce-col--xs-first vce-col--sm-last vce-col--sm-first vce-col--md-last vce-col--lg-last vce-col--xl-last vce-col--md-first vce-col--lg-first vce-col--xl-first\" id=\"el-be3ab28e\"><div class=\"vce-col-inner\" data-vce-do-apply=\"border margin background  el-be3ab28e\"><div class=\"vce-col-content\" data-vce-element-content=\"true\" data-vce-do-apply=\"padding el-be3ab28e\"><div class=\"vce-text-block\"><div class=\"vce-text-block-wrapper vce\" id=\"el-9c90867a\" data-vce-do-apply=\"all el-9c90867a\"><p>Now you can think of <code>SELECT * FROM table WHERE areaname=\"Warehouse\";<\/code> to be executed over your custom script.<\/p><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><div class=\"vce-row-container\" data-vce-boxed-width=\"true\"><div class=\"vce-row vce-row--col-gap-30 vce-row-equal-height vce-row-content--top\" id=\"el-1a10d9cf\" data-vce-do-apply=\"all el-1a10d9cf\"><div class=\"vce-row-content\" data-vce-element-content=\"true\"><div class=\"vce-col vce-col--md-auto vce-col--xs-1 vce-col--xs-last vce-col--xs-first vce-col--sm-last vce-col--sm-first vce-col--md-last vce-col--lg-last vce-col--xl-last vce-col--md-first vce-col--lg-first vce-col--xl-first\" id=\"el-bf433d6a\"><div class=\"vce-col-inner\" data-vce-do-apply=\"border margin background  el-bf433d6a\"><div class=\"vce-col-content\" data-vce-element-content=\"true\" data-vce-do-apply=\"padding el-bf433d6a\"><div class=\"vce-text-block\"><div class=\"vce-text-block-wrapper vce\" id=\"el-778887f5\" data-vce-do-apply=\"all el-778887f5\"><h2>An Ultimate Solution for All Your Problems?<\/h2><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><div class=\"vce-row-container\" data-vce-boxed-width=\"true\"><div class=\"vce-row vce-row--col-gap-30 vce-row-equal-height vce-row-content--top\" id=\"el-850c8f86\" data-vce-do-apply=\"all el-850c8f86\"><div class=\"vce-row-content\" data-vce-element-content=\"true\"><div class=\"vce-col vce-col--md-auto vce-col--xs-1 vce-col--xs-last vce-col--xs-first vce-col--sm-last vce-col--sm-first vce-col--md-last vce-col--lg-last vce-col--xl-last vce-col--md-first vce-col--lg-first vce-col--xl-first\" id=\"el-f79e9caf\"><div class=\"vce-col-inner\" data-vce-do-apply=\"border margin background  el-f79e9caf\"><div class=\"vce-col-content\" data-vce-element-content=\"true\" data-vce-do-apply=\"padding el-f79e9caf\"><div class=\"vce-text-block\"><div class=\"vce-text-block-wrapper vce\" id=\"el-3f8b42b5\" data-vce-do-apply=\"all el-3f8b42b5\"><p>Regarding most common databases, relational databases are the most popular and widely used due to their community support and available tutorials. This is the most common one beginners prefer. Most likely you will hear MySQL, PostgreSQL, MariaDB, Microsoft SQL Server, and Oracle Database.<br><br>While starting to implement our concept, the first thing to analyze will be: what data do we want to operate? followed by entry points, and display points of these data.<\/p><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><div class=\"vce-row-container\" data-vce-boxed-width=\"true\"><div class=\"vce-row vce-row--col-gap-30 vce-row-equal-height vce-row-content--top\" id=\"el-954b8479\" data-vce-do-apply=\"all el-954b8479\"><div class=\"vce-row-content\" data-vce-element-content=\"true\"><div class=\"vce-col vce-col--md-auto vce-col--xs-1 vce-col--xs-last vce-col--xs-first vce-col--sm-last vce-col--sm-first vce-col--md-last vce-col--lg-last vce-col--xl-last vce-col--md-first vce-col--lg-first vce-col--xl-first\" id=\"el-074edb86\"><div class=\"vce-col-inner\" data-vce-do-apply=\"border margin background  el-074edb86\"><div class=\"vce-col-content\" data-vce-element-content=\"true\" data-vce-do-apply=\"padding el-074edb86\"><div class=\"vce-text-block\"><div class=\"vce-text-block-wrapper vce\" id=\"el-bb9056c9\" data-vce-do-apply=\"all el-bb9056c9\"><h2>Problem 1 - Implementation of Google Map Live Tracking<\/h2><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><div class=\"vce-row-container\" data-vce-boxed-width=\"true\"><div class=\"vce-row vce-row--col-gap-30 vce-row-equal-height vce-row-content--top\" id=\"el-cf524995\" data-vce-do-apply=\"all el-cf524995\"><div class=\"vce-row-content\" data-vce-element-content=\"true\"><div class=\"vce-col vce-col--md-auto vce-col--xs-1 vce-col--xs-last vce-col--xs-first vce-col--sm-last vce-col--sm-first vce-col--md-last vce-col--lg-last vce-col--xl-last vce-col--md-first vce-col--lg-first vce-col--xl-first\" id=\"el-8fd52d3d\"><div class=\"vce-col-inner\" data-vce-do-apply=\"border margin background  el-8fd52d3d\"><div class=\"vce-col-content\" data-vce-element-content=\"true\" data-vce-do-apply=\"padding el-8fd52d3d\"><div class=\"vce-text-block\"><div class=\"vce-text-block-wrapper vce\" id=\"el-8e80610c\" data-vce-do-apply=\"all el-8e80610c\"><p>Being a bit odd, let\u2019s take a complex example of Google Maps\u2019s Live Traffic information. The ultimate agenda is to display or (share as API) the live information of a road user intended to travel. The planned output shows the road as <code>Blue<\/code>, <code>Yellow<\/code>, or <code>Red<\/code>, from <code>Location A<\/code> to <code>Location B<\/code>. How are these data collected?<\/p><p>They know there is no one to monitor all these details, summarize, and upload. They need to determine the number of vehicles present and want to use the presence of mobile phones rather than vehicles. They could successfully send the location of each mobile phone to one of their servers. From there, they run another service to group information mobiles with similar movement behavior that can be clustered into single vehicles, say, 50 mobiles can be classified as a bus, 5-7 as a van or car, 1, 2 or 3 mobiles can be a bike or rickshaw (maybe a classifier ML model made with seasoned <a href=\"https:\/\/www.bridge-global.com\/services\/artificial-intelligence-development\" target=\"_blank\" rel=\"noopener\">AI development services<\/a> will help to identify that). This service can act as the above-discussed \u201csummarizer\u201d. This can be stored in a temporary but highly available data storage. A provisioner can manage the publishing of sudden traffic surges to all listening maps that are already in motion.<\/p><p>Do we need a highly persistent, low-write-capable database here? Since we are only storing them temporarily, but with high write volume, missing some data will not affect it much. This can be leveraged for performance or cost optimization. What if we had a key value in the memory application that could be stored in RAM, maintaining excellent performance? Someone struck by Redis at this point, another with Memcached, or another with something else.<\/p><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><div class=\"vce-row-container\" data-vce-boxed-width=\"true\"><div class=\"vce-row vce-row--col-gap-30 vce-row-equal-height vce-row-content--top\" id=\"el-12968d57\" data-vce-do-apply=\"all el-12968d57\"><div class=\"vce-row-content\" data-vce-element-content=\"true\"><div class=\"vce-col vce-col--md-auto vce-col--xs-1 vce-col--xs-last vce-col--xs-first vce-col--sm-last vce-col--sm-first vce-col--md-last vce-col--lg-last vce-col--xl-last vce-col--md-first vce-col--lg-first vce-col--xl-first\" id=\"el-e5fd84fe\"><div class=\"vce-col-inner\" data-vce-do-apply=\"border margin background  el-e5fd84fe\"><div class=\"vce-col-content\" data-vce-element-content=\"true\" data-vce-do-apply=\"padding el-e5fd84fe\"><div class=\"vce-text-block\"><div class=\"vce-text-block-wrapper vce\" id=\"el-a7cf6489\" data-vce-do-apply=\"all el-a7cf6489\"><h2>Problem 2 - Stateful Services like Uber, Swiggy<\/h2><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><div class=\"vce-row-container\" data-vce-boxed-width=\"true\"><div class=\"vce-row vce-row--col-gap-30 vce-row-equal-height vce-row-content--top\" id=\"el-d64a45ee\" data-vce-do-apply=\"all el-d64a45ee\"><div class=\"vce-row-content\" data-vce-element-content=\"true\"><div class=\"vce-col vce-col--md-auto vce-col--xs-1 vce-col--xs-last vce-col--xs-first vce-col--sm-last vce-col--sm-first vce-col--md-last vce-col--lg-last vce-col--xl-last vce-col--md-first vce-col--lg-first vce-col--xl-first\" id=\"el-1be26566\"><div class=\"vce-col-inner\" data-vce-do-apply=\"border margin background  el-1be26566\"><div class=\"vce-col-content\" data-vce-element-content=\"true\" data-vce-do-apply=\"padding el-1be26566\"><div class=\"vce-text-block\"><div class=\"vce-text-block-wrapper vce\" id=\"el-fdf48c89\" data-vce-do-apply=\"all el-fdf48c89\"><p>A similar situation can be Uber or Swiggy tracking the location of the driver and serving this information to nearby customers. Here gig workers willingly share their location on a public platform so that customers can track their order almost in real-time. We don\u2019t want to store where Driver X was in 2021, Jan 25th at 3:00 PM. We need to track this only live, the very next second or the next hour. The validity of data is expired or becomes useless. So, is the above explanation valid here?<\/p><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><div class=\"vce-row-container\" data-vce-boxed-width=\"true\"><div class=\"vce-row vce-row--col-gap-30 vce-row-equal-height vce-row-content--top\" id=\"el-6a6d668a\" data-vce-do-apply=\"all el-6a6d668a\"><div class=\"vce-row-content\" data-vce-element-content=\"true\"><div class=\"vce-col vce-col--md-auto vce-col--xs-1 vce-col--xs-last vce-col--xs-first vce-col--sm-last vce-col--sm-first vce-col--md-last vce-col--lg-last vce-col--xl-last vce-col--md-first vce-col--lg-first vce-col--xl-first\" id=\"el-dc553fea\"><div class=\"vce-col-inner\" data-vce-do-apply=\"border margin background  el-dc553fea\"><div class=\"vce-col-content\" data-vce-element-content=\"true\" data-vce-do-apply=\"padding el-dc553fea\"><div class=\"vce-text-block\"><div class=\"vce-text-block-wrapper vce\" id=\"el-3ee0b2f8\" data-vce-do-apply=\"all el-3ee0b2f8\"><h2>Problem 3 - Timeline Creation in X (formerly \u201cTwitter\u201d)<\/h2><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><div class=\"vce-row-container\" data-vce-boxed-width=\"true\"><div class=\"vce-row vce-row--col-gap-30 vce-row-equal-height vce-row-content--top\" id=\"el-37f4897b\" data-vce-do-apply=\"all el-37f4897b\"><div class=\"vce-row-content\" data-vce-element-content=\"true\"><div class=\"vce-col vce-col--md-auto vce-col--xs-1 vce-col--xs-last vce-col--xs-first vce-col--sm-last vce-col--sm-first vce-col--md-last vce-col--lg-last vce-col--xl-last vce-col--md-first vce-col--lg-first vce-col--xl-first\" id=\"el-a37f30b0\"><div class=\"vce-col-inner\" data-vce-do-apply=\"border margin background  el-a37f30b0\"><div class=\"vce-col-content\" data-vce-element-content=\"true\" data-vce-do-apply=\"padding el-a37f30b0\"><div class=\"vce-text-block\"><div class=\"vce-text-block-wrapper vce\" id=\"el-5f56c4ca\" data-vce-do-apply=\"all el-5f56c4ca\"><p>Thinking of an entirely different problem, in your X account, you may be following 1000 people, or someone may be following 8K \u201cactive\u201d people. How will you build your relational database query to construct your timeline?<\/p><p>Assume relational tables like this:<\/p><pre>--- user table ---<br>TABLE USER (<br>    id INTEGER AUTOINCREMENT PRIMARY KEY,<br>    username VARCHAR(100),<br>);<br><br>--- followers table ---<br>TABLE FOLLOWERS (<br>    user FOREIGN KEY(USER),<br>    friend FOREIGN KEY(USER),<br>)<br><br>--- tweet table ---<br>TABLE TWEET (<br>    author FOREIGN KEY(USER),<br>    content TEXT,<br>    posted_at DATETIME,<br>)<\/pre><p>Just \u201cassume\u201d some of the stats of X, to have a read of 300K TPS (Tweets per second) and a write of 6K TPS. From this, it is clear that it will not be an intelligent design to perform a 300K query to construct a timeline each time the user asks for his timeline.<\/p><p>&nbsp;<\/p><p>Let me try a basic query.<\/p><pre>-- assuming:current_user_id as logged-in user's id<br><br>SELECT t.id, t.author, u.username, t.content, t.posted_at<br>FROM TWEET t<br>JOIN USER u ON t.author = u.id<br>WHERE t.author IN (<br>    SELECT friend<br>    FROM FOLLOWERS<br>    WHERE user = :current_user_id<br>    UNION<br>    SELECT:current_user_id<br>)<br>ORDER BY t.posted_at DESC<br>LIMIT 20 OFFSET 0;<\/pre><p>Let me try a different approach,<\/p><p>What if I can construct the user timeline at the time of post creation by a friend?<\/p><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><div class=\"vce-row-container\" data-vce-boxed-width=\"true\"><div class=\"vce-row vce-row--col-gap-30 vce-row-equal-height vce-row-content--top\" id=\"el-71218dd2\" data-vce-do-apply=\"all el-71218dd2\"><div class=\"vce-row-content\" data-vce-element-content=\"true\"><div class=\"vce-col vce-col--md-auto vce-col--xs-1 vce-col--xs-last vce-col--xs-first vce-col--sm-last vce-col--sm-first vce-col--md-last vce-col--lg-last vce-col--xl-last vce-col--md-first vce-col--lg-first vce-col--xl-first\" id=\"el-ceeef3d8\"><div class=\"vce-col-inner\" data-vce-do-apply=\"border margin background  el-ceeef3d8\"><div class=\"vce-col-content\" data-vce-element-content=\"true\" data-vce-do-apply=\"padding el-ceeef3d8\"><div class=\"vce-single-image-container vce-single-image--align-center\"><div class=\"vce vce-single-image-wrapper\" id=\"el-757652d3\" data-vce-do-apply=\"all el-757652d3\"><figure><div class=\"vce-single-image-inner vce-single-image--absolute vce-single-image--border-rounded\" style=\"padding-bottom: 35.1562%; width: 1024px;\"><img loading=\"lazy\" decoding=\"async\" class=\"vce-single-image vcv-lozad\" data-src=\"https:\/\/www.bridge-global.com\/blog\/wp-content\/uploads\/2024\/08\/Problem-3-Timeline-Creation-in-X-formerly-Twitter-02-01-scaled.jpg\" width=\"1024\" height=\"360\" src=\"\" data-img-src=\"https:\/\/www.bridge-global.com\/blog\/wp-content\/uploads\/2024\/08\/Problem-3-Timeline-Creation-in-X-formerly-Twitter-02-01-scaled.jpg\" alt=\"Problem 3 - Timeline Creation in X (formerly \u201cTwitter\u201d)-02-01\" title=\"Problem 3 - Timeline Creation in X (formerly \u201cTwitter\u201d)-02-01\" \/><noscript>\n        <img loading=\"lazy\" decoding=\"async\" class=\"vce-single-image\" src=\"https:\/\/www.bridge-global.com\/blog\/wp-content\/uploads\/2024\/08\/Problem-3-Timeline-Creation-in-X-formerly-Twitter-02-01-scaled.jpg\" width=\"1024\" height=\"360\" alt=\"Problem 3 - Timeline Creation in X (formerly \u201cTwitter\u201d)-02-01\" title=\"Problem 3 - Timeline Creation in X (formerly \u201cTwitter\u201d)-02-01\" \/>\n      <\/noscript><\/div><figcaption hidden=\"\"><\/figcaption><\/figure><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><div class=\"vce-row-container\" data-vce-boxed-width=\"true\"><div class=\"vce-row vce-row--col-gap-30 vce-row-equal-height vce-row-content--top\" id=\"el-ea708390\" data-vce-do-apply=\"all el-ea708390\"><div class=\"vce-row-content\" data-vce-element-content=\"true\"><div class=\"vce-col vce-col--md-auto vce-col--xs-1 vce-col--xs-last vce-col--xs-first vce-col--sm-last vce-col--sm-first vce-col--md-last vce-col--lg-last vce-col--xl-last vce-col--md-first vce-col--lg-first vce-col--xl-first\" id=\"el-43793827\"><div class=\"vce-col-inner\" data-vce-do-apply=\"border margin background  el-43793827\"><div class=\"vce-col-content\" data-vce-element-content=\"true\" data-vce-do-apply=\"padding el-43793827\"><div class=\"vce-text-block\"><div class=\"vce-text-block-wrapper vce\" id=\"el-bf662ce2\" data-vce-do-apply=\"all el-bf662ce2\"><p>The same mechanism can play a vital role more efficiently than traditional thought of relational database service. Fetch the data against a key and perform a simple return - that\u2019s it. This scenario is safe with some document databases or key-value databases like Apache DynamoDB, Hadoop-HBase, Redis, or MongoDB. The main power of key-value and document databases is its ease of horizontal scaling, as dependencies to other rows are more logical than enforced ones. So, commonly they will have a write-intrinsic nature.<\/p><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><div class=\"vce-row-container\" data-vce-boxed-width=\"true\"><div class=\"vce-row vce-row--col-gap-30 vce-row-equal-height vce-row-content--top\" id=\"el-ba6cf595\" data-vce-do-apply=\"all el-ba6cf595\"><div class=\"vce-row-content\" data-vce-element-content=\"true\"><div class=\"vce-col vce-col--md-auto vce-col--xs-1 vce-col--xs-last vce-col--xs-first vce-col--sm-last vce-col--sm-first vce-col--md-last vce-col--lg-last vce-col--xl-last vce-col--md-first vce-col--lg-first vce-col--xl-first\" id=\"el-2c215322\"><div class=\"vce-col-inner\" data-vce-do-apply=\"border margin background  el-2c215322\"><div class=\"vce-col-content\" data-vce-element-content=\"true\" data-vce-do-apply=\"padding el-2c215322\"><div class=\"vce-text-block\"><div class=\"vce-text-block-wrapper vce\" id=\"el-bf7056a5\" data-vce-do-apply=\"all el-bf7056a5\"><h2>Problem 4 - LinkedIn\u2019s Second &amp; Third Connections<\/h2><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><div class=\"vce-row-container\" data-vce-boxed-width=\"true\"><div class=\"vce-row vce-row--col-gap-30 vce-row-equal-height vce-row-content--top\" id=\"el-05751b36\" data-vce-do-apply=\"all el-05751b36\"><div class=\"vce-row-content\" data-vce-element-content=\"true\"><div class=\"vce-col vce-col--md-auto vce-col--xs-1 vce-col--xs-last vce-col--xs-first vce-col--sm-last vce-col--sm-first vce-col--md-last vce-col--lg-last vce-col--xl-last vce-col--md-first vce-col--lg-first vce-col--xl-first\" id=\"el-d440a284\"><div class=\"vce-col-inner\" data-vce-do-apply=\"border margin background  el-d440a284\"><div class=\"vce-col-content\" data-vce-element-content=\"true\" data-vce-do-apply=\"padding el-d440a284\"><div class=\"vce-text-block\"><div class=\"vce-text-block-wrapper vce\" id=\"el-bf549b11\" data-vce-do-apply=\"all el-bf549b11\"><p>Coming back to the first question on the top,<br><br><em>Assume you are a developer at LinkedIn, and you are assigned to share a user\u2019s post to all his 3rd and 4th-degree connections.<br><\/em><br>What if we need to share the post with the first, second, and third connections? What if our marketing team asked to share it with one more layer of connections to achieve the financial target?<br><br>You may need to join tables recursively with a drastic performance variation.<br><br>Let me think of this from a different perspective:<\/p><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><div class=\"vce-row-container\" data-vce-boxed-width=\"true\"><div class=\"vce-row vce-row--col-gap-30 vce-row-equal-height vce-row-content--top\" id=\"el-009f66b9\" data-vce-do-apply=\"all el-009f66b9\"><div class=\"vce-row-content\" data-vce-element-content=\"true\"><div class=\"vce-col vce-col--md-auto vce-col--xs-1 vce-col--xs-last vce-col--xs-first vce-col--sm-last vce-col--sm-first vce-col--md-last vce-col--lg-last vce-col--xl-last vce-col--md-first vce-col--lg-first vce-col--xl-first\" id=\"el-404d999c\"><div class=\"vce-col-inner\" data-vce-do-apply=\"border margin background  el-404d999c\"><div class=\"vce-col-content\" data-vce-element-content=\"true\" data-vce-do-apply=\"padding el-404d999c\"><div class=\"vce-single-image-container vce-single-image--align-center\"><div class=\"vce vce-single-image-wrapper\" id=\"el-eed62409\" data-vce-do-apply=\"all el-eed62409\"><figure><div class=\"vce-single-image-inner vce-single-image--absolute vce-single-image--border-rounded\" style=\"padding-bottom: 59.1797%; width: 1024px;\"><img loading=\"lazy\" decoding=\"async\" class=\"vce-single-image vcv-lozad\" data-src=\"https:\/\/www.bridge-global.com\/blog\/wp-content\/uploads\/2024\/08\/Problem-4-LinkedIns-Second-Third-Connections.png\" width=\"1024\" height=\"606\" src=\"\" data-img-src=\"https:\/\/www.bridge-global.com\/blog\/wp-content\/uploads\/2024\/08\/Problem-4-LinkedIns-Second-Third-Connections.png\" alt=\"Problem 4 - LinkedIn\u2019s Second &amp; Third Connections\" title=\"Problem 4 - LinkedIn\u2019s Second &amp; Third Connections\" \/><noscript>\n        <img loading=\"lazy\" decoding=\"async\" class=\"vce-single-image\" src=\"https:\/\/www.bridge-global.com\/blog\/wp-content\/uploads\/2024\/08\/Problem-4-LinkedIns-Second-Third-Connections.png\" width=\"1024\" height=\"606\" alt=\"Problem 4 - LinkedIn\u2019s Second & Third Connections\" title=\"Problem 4 - LinkedIn\u2019s Second & Third Connections\" \/>\n      <\/noscript><\/div><figcaption hidden=\"\"><\/figcaption><\/figure><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><div class=\"vce-row-container\" data-vce-boxed-width=\"true\"><div class=\"vce-row vce-row--col-gap-30 vce-row-equal-height vce-row-content--top\" id=\"el-763f55a3\" data-vce-do-apply=\"all el-763f55a3\"><div class=\"vce-row-content\" data-vce-element-content=\"true\"><div class=\"vce-col vce-col--md-auto vce-col--xs-1 vce-col--xs-last vce-col--xs-first vce-col--sm-last vce-col--sm-first vce-col--md-last vce-col--lg-last vce-col--xl-last vce-col--md-first vce-col--lg-first vce-col--xl-first\" id=\"el-b6d33624\"><div class=\"vce-col-inner\" data-vce-do-apply=\"border margin background  el-b6d33624\"><div class=\"vce-col-content\" data-vce-element-content=\"true\" data-vce-do-apply=\"padding el-b6d33624\"><div class=\"vce-text-block\"><div class=\"vce-text-block-wrapper vce\" id=\"el-c667aedc\" data-vce-do-apply=\"all el-c667aedc\"><p><em>Source: Medium<br><\/em><\/p><p>What if we can store this information in such a connected node with persons as nodes and create connections between nodes (edges) when someone connects? As you can imagine, we can easily find the 4 degrees with less computation.<\/p><pre>MATCH User( $current_user_id ):FRIEND_OF[*3..4];<\/pre><p>We found another treasure now, which has the potential of mapping relations. Many databases like Neo4J, Amazon Neptune, and many others provide an efficient way to facilitate graph-based relations.<\/p><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><div class=\"vce-row-container\" data-vce-boxed-width=\"true\"><div class=\"vce-row vce-row--col-gap-30 vce-row-equal-height vce-row-content--top\" id=\"el-7c77e8cd\" data-vce-do-apply=\"all el-7c77e8cd\"><div class=\"vce-row-content\" data-vce-element-content=\"true\"><div class=\"vce-col vce-col--md-auto vce-col--xs-1 vce-col--xs-last vce-col--xs-first vce-col--sm-last vce-col--sm-first vce-col--md-last vce-col--lg-last vce-col--xl-last vce-col--md-first vce-col--lg-first vce-col--xl-first\" id=\"el-4c185d8e\"><div class=\"vce-col-inner\" data-vce-do-apply=\"border margin background  el-4c185d8e\"><div class=\"vce-col-content\" data-vce-element-content=\"true\" data-vce-do-apply=\"padding el-4c185d8e\"><div class=\"vce-text-block\"><div class=\"vce-text-block-wrapper vce\" id=\"el-d2e90b51\" data-vce-do-apply=\"all el-d2e90b51\"><h2>Problem 5 - Flipkart\u2019s Search Engines and Quick Analytics<\/h2><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><div class=\"vce-row-container\" data-vce-boxed-width=\"true\"><div class=\"vce-row vce-row--col-gap-30 vce-row-equal-height vce-row-content--top\" id=\"el-4668593a\" data-vce-do-apply=\"all el-4668593a\"><div class=\"vce-row-content\" data-vce-element-content=\"true\"><div class=\"vce-col vce-col--md-auto vce-col--xs-1 vce-col--xs-last vce-col--xs-first vce-col--sm-last vce-col--sm-first vce-col--md-first vce-col--lg-first vce-col--xl-first\" id=\"el-e5f4732b\"><div class=\"vce-col-inner\" data-vce-do-apply=\"border margin background  el-e5f4732b\"><div class=\"vce-col-content\" data-vce-element-content=\"true\" data-vce-do-apply=\"padding el-e5f4732b\"><div class=\"vce-single-image-container vce-single-image--align-center\"><div class=\"vce vce-single-image-wrapper\" id=\"el-54ec1ec5\" data-vce-do-apply=\"all el-54ec1ec5\"><figure><div class=\"vce-single-image-inner vce-single-image--absolute vce-single-image--border-rounded\" style=\"padding-bottom: 55.957%; width: 1024px;\"><img loading=\"lazy\" decoding=\"async\" class=\"vce-single-image vcv-lozad\" data-src=\"https:\/\/www.bridge-global.com\/blog\/wp-content\/uploads\/2024\/08\/Problem-5-Flipkarts-Search-Engines-and-Quick-Analytics.png\" width=\"1024\" height=\"573\" src=\"\" data-img-src=\"https:\/\/www.bridge-global.com\/blog\/wp-content\/uploads\/2024\/08\/Problem-5-Flipkarts-Search-Engines-and-Quick-Analytics.png\" alt=\"Problem 5 - Flipkart\u2019s Search Engines and Quick Analytics\" title=\"Problem 5 - Flipkart\u2019s Search Engines and Quick Analytics\" \/><noscript>\n        <img loading=\"lazy\" decoding=\"async\" class=\"vce-single-image\" src=\"https:\/\/www.bridge-global.com\/blog\/wp-content\/uploads\/2024\/08\/Problem-5-Flipkarts-Search-Engines-and-Quick-Analytics.png\" width=\"1024\" height=\"573\" alt=\"Problem 5 - Flipkart\u2019s Search Engines and Quick Analytics\" title=\"Problem 5 - Flipkart\u2019s Search Engines and Quick Analytics\" \/>\n      <\/noscript><\/div><figcaption hidden=\"\"><\/figcaption><\/figure><\/div><\/div><\/div><\/div><\/div><div class=\"vce-col vce-col--md-auto vce-col--xs-1 vce-col--xs-last vce-col--xs-first vce-col--sm-last vce-col--sm-first vce-col--md-last vce-col--lg-last vce-col--xl-last\" id=\"el-e1d1d6d3\"><div class=\"vce-col-inner\" data-vce-do-apply=\"border margin background  el-e1d1d6d3\"><div class=\"vce-col-content\" data-vce-element-content=\"true\" data-vce-do-apply=\"padding el-e1d1d6d3\"><div class=\"vce-text-block\"><div class=\"vce-text-block-wrapper vce\" id=\"el-004cda7e\" data-vce-do-apply=\"all el-004cda7e\"><p>Flipkart had several fascinating features a few years ago, including hardcore research on UX. Even switching the color of the \u201cBuy Now\u201d button to bright orange and the \u201cAdd to Cart\u201d button to white contributed to a huge jump in ROI.<br><br>Coming back to our topic, Flipkart was providing the sample product count with the current selection over the dynamic filter. Users may play with this a dozen times before the actual submission of the \u201cApply Filter\u201d.&nbsp;<\/p><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><div class=\"vce-row-container\" data-vce-boxed-width=\"true\"><div class=\"vce-row vce-row--col-gap-30 vce-row-equal-height vce-row-content--top\" id=\"el-6529c667\" data-vce-do-apply=\"all el-6529c667\"><div class=\"vce-row-content\" data-vce-element-content=\"true\"><div class=\"vce-col vce-col--md-auto vce-col--xs-1 vce-col--xs-last vce-col--xs-first vce-col--sm-last vce-col--sm-first vce-col--md-last vce-col--lg-last vce-col--xl-last vce-col--md-first vce-col--lg-first vce-col--xl-first\" id=\"el-8d9b80b0\"><div class=\"vce-col-inner\" data-vce-do-apply=\"border margin background  el-8d9b80b0\"><div class=\"vce-col-content\" data-vce-element-content=\"true\" data-vce-do-apply=\"padding el-8d9b80b0\"><div class=\"vce-text-block\"><div class=\"vce-text-block-wrapper vce\" id=\"el-952d243e\" data-vce-do-apply=\"all el-952d243e\"><p><em>Source: WebArchive<\/em><br><br>Seems interesting? The relational databases can be much more expensive and may have O(n) complexity. For platforms like Flipkart which focuses on high on-screen presence with 100x more read than write-to-catalog data, an in-memory storage can provide a huge heads up than In-Disk persistence storages. Solutions like \u201c<a href=\"https:\/\/www.elastic.co\/docs\" target=\"_blank\" rel=\"noopener\">ElasticSearch<\/a>\u201d or \u201cApache Solr\u201d can align with the idea to provide more powerful responses.<br><br>We may have time series data entries like Prometheus DB or InfluxDB - prominent ones used to store log-based information. Some others plan to execute over a distributed environment, such as Kafka (not a DB, but still stores data as logs), or HBase (Document DB).<br><br><span style=\"font-size: 14pt;\"><strong>Conclusion<\/strong><\/span><br>Do not jump to the conclusion that RDBMS is a worthless solution. It is powerful for its use cases and can power up the whole world. Still, the right tool at the right time generates better ROIs, and saves time, and costs. Unfortunately, there is no ultimate solution to all our problems. But we can get one tailored to our specific needs with the help of a <a href=\"https:\/\/www.bridge-global.com\/contact-us\" target=\"_blank\" rel=\"noopener\">capable custom software development company<\/a>. So, now that we have a solid preliminary idea around the topic, stay tuned for more context in the next part of this blog.<br><br><\/p><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content -->","protected":false},"excerpt":{"rendered":"<p> Learn if your databases used for optimization are better or if alternatives exist to help you craft effective solutions for your data needs.<!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":216,"featured_media":54009,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[839],"tags":[840,841,842,843],"class_list":["post-53993","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-database","tag-database-performance-optimization","tag-high-performance-databases","tag-choosing-a-database","tag-database-comparison"],"featured_image_src":"https:\/\/www.bridge-global.com\/blog\/wp-content\/uploads\/2024\/08\/Top-Database-Choices-for-Best-Performance-Part-1.jpg","author_info":{"display_name":"Jerin John","author_link":"https:\/\/www.bridge-global.com\/blog\/author\/jerin\/"},"_links":{"self":[{"href":"https:\/\/www.bridge-global.com\/blog\/wp-json\/wp\/v2\/posts\/53993","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.bridge-global.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.bridge-global.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.bridge-global.com\/blog\/wp-json\/wp\/v2\/users\/216"}],"replies":[{"embeddable":true,"href":"https:\/\/www.bridge-global.com\/blog\/wp-json\/wp\/v2\/comments?post=53993"}],"version-history":[{"count":18,"href":"https:\/\/www.bridge-global.com\/blog\/wp-json\/wp\/v2\/posts\/53993\/revisions"}],"predecessor-version":[{"id":54019,"href":"https:\/\/www.bridge-global.com\/blog\/wp-json\/wp\/v2\/posts\/53993\/revisions\/54019"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.bridge-global.com\/blog\/wp-json\/wp\/v2\/media\/54009"}],"wp:attachment":[{"href":"https:\/\/www.bridge-global.com\/blog\/wp-json\/wp\/v2\/media?parent=53993"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.bridge-global.com\/blog\/wp-json\/wp\/v2\/categories?post=53993"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.bridge-global.com\/blog\/wp-json\/wp\/v2\/tags?post=53993"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}