<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Nikhil</title>
    <description>The latest articles on DEV Community by Nikhil (@nikhilknoldus).</description>
    <link>https://dev.to/nikhilknoldus</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F184567%2F491749a0-eec1-4383-a384-a44390e94a27.jpeg</url>
      <title>DEV Community: Nikhil</title>
      <link>https://dev.to/nikhilknoldus</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/nikhilknoldus"/>
    <language>en</language>
    <item>
      <title>CHOOSING A DATABASE FOR AN ENTERPRISE PROJECT? SIMPLIFIED.</title>
      <dc:creator>Nikhil</dc:creator>
      <pubDate>Mon, 28 Oct 2019 07:58:26 +0000</pubDate>
      <link>https://dev.to/nikhilknoldus/choosing-a-database-for-an-enterprise-project-simplified-584d</link>
      <guid>https://dev.to/nikhilknoldus/choosing-a-database-for-an-enterprise-project-simplified-584d</guid>
      <description>&lt;p&gt;There are huge number of choices, a huge number of benefits, competitive communities &amp;amp; multiple use case scenarios. Finding out the best possible match database in Graph-Based or in Column-Based or it is Document-Based, it is never easy.&lt;br&gt;
Every category has a list of different options to choose from with a different number of advantages or disadvantages.&lt;br&gt;
In this post, we will try to understand the advantages, disadvantages, examples &amp;amp; use cases for most of the popular available databases.&lt;/p&gt;

&lt;p&gt;Three main keys to consider while choosing a database&lt;br&gt;
Availability&lt;br&gt;
Consistency&lt;br&gt;
Partition Tolerance&lt;br&gt;
According to the CAP theorem (Brewer’s theorem), when you are designing a distributed system you can get cannot achieve all three of Consistency, Availability and Partition tolerance. You can pick only two out of above mentioned three. ~ wiki&lt;/p&gt;

&lt;p&gt;Let’s get into practicality of selection. We have divided No-SQL Databases into 4 categories.&lt;/p&gt;

&lt;p&gt;Key Value&lt;br&gt;
Document-Based&lt;br&gt;
Column-Based&lt;br&gt;
Graph-Based&lt;br&gt;
Categorized Database Names:﻿&lt;br&gt;
Key Value: Riak, Redis Server, Memcached, Scalaris, Tokyo Cabinet.&lt;br&gt;
Document-Based: MongoDB, CouchDB, OrientDB, RavenDB.&lt;br&gt;
Column-Based: Cassandra, Hbase, Hypertable, BigTable.&lt;br&gt;
Graph-Based: Neo4J, InfoGrid, Infinite Graph, Flock DB&lt;/p&gt;

&lt;p&gt;Apart from above there is something more called, Multi Model Database. We’re going into it after covering these above 4.&lt;/p&gt;

&lt;p&gt;Key Value&lt;br&gt;
It is faster, but it’s schema less (unstructured).&lt;br&gt;
Examples: Url Shortner, PasteBin, E-commerce- in usecases for, temporary prices, user profiles, product recommendations, session information etc.&lt;br&gt;
Companies using:&lt;br&gt;
Twitter uses Redis to deliver your timeline.&lt;br&gt;
Pinterest uses for follwers, following etc.&lt;/p&gt;

&lt;p&gt;Document Based&lt;br&gt;
Designed for storing, retrieving and managing document based information.&lt;br&gt;
Advantages: Data Tolerant&lt;br&gt;
Disadvantages: Query Performance, no structured query.&lt;br&gt;
Use Cases: Can be used as scalable general purposes.&lt;br&gt;
Example: A famous weather app (iOS), delivers weather alerts to 40M users, SEGA uses MongoDB for handling 11M in-game accounts.&lt;/p&gt;

&lt;p&gt;Column Based&lt;br&gt;
Offer very high performance and a highly scalalable architecture, because it is fast to load data and query it.&lt;br&gt;
Excellent real time usages:&lt;br&gt;
– Tweet information of a user is saved as column-wise&lt;br&gt;
– Organizes the data into rows and groups of columns.&lt;br&gt;
– Facebook: uses Column-based for nearby friends (Hbase).&lt;br&gt;
– Spotify: uses Cassandra to store user profile attributes like, artists, songs etc.&lt;/p&gt;

&lt;p&gt;Graph Based&lt;br&gt;
Graph based is used for various purposes and used by many good companies.&lt;br&gt;
– LinkedIn- For showing connections&lt;br&gt;
– Google Knowledge Graph– For example, search for – Indian Prime Minister and the first result box given by google is an example of graph based.&lt;br&gt;
– Walmart– uses Ne04J for customers personalized products recommendations.&lt;br&gt;
– Medium– uses Neo4J to build their social graph to enhance content personalization.&lt;/p&gt;

&lt;p&gt;The below picture depicts where and when you can utilize.&lt;/p&gt;

&lt;p&gt;Source: Martin Fowler&lt;br&gt;
Multi Model Database&lt;br&gt;
A Multi Model Database, combines the capabilities of Column-Based, Graph Based, Document Based and Key Value Databases.&lt;/p&gt;

&lt;p&gt;Example: Microsoft Azure Cosmos DB, Orient DB&lt;/p&gt;

&lt;p&gt;The Monolithic Database Approach&lt;/p&gt;

&lt;p&gt;Issues in monolithic approach&lt;/p&gt;

&lt;p&gt;Difficult to make schema changes&lt;br&gt;
Vertical scaling&lt;br&gt;
Single point of failure&lt;br&gt;
Technology lock-in&lt;br&gt;
Let’s split around this monolithic approach to resolve issues&lt;/p&gt;

&lt;p&gt;Data Categorization&lt;br&gt;
Transient Data:&lt;br&gt;
Information generated from application/system.&lt;/p&gt;

&lt;p&gt;1- Events, logs, signals&lt;br&gt;
2- No persistent storage so it should be highly available&lt;/p&gt;

&lt;p&gt;Ephemeral Data&lt;br&gt;
Temporary data whose sole purpose is to improve the user experience by serving information in real time e.g. cache for user experience.&lt;/p&gt;

&lt;p&gt;Operational Data&lt;br&gt;
Information gathered from user sessions – such as user clicks, cart data.&lt;/p&gt;

&lt;p&gt;Transactional Data&lt;br&gt;
Payment processing and order processing data.&lt;/p&gt;

&lt;p&gt;I hope this is somewhere useful for you. Let me know your views.&lt;/p&gt;

&lt;p&gt;Thanks for reading.&lt;/p&gt;

&lt;p&gt;Read the Full Post here: &lt;a href="http://becauseitsonelife.com/?p=106"&gt;http://becauseitsonelife.com/?p=106&lt;/a&gt;&lt;/p&gt;

</description>
      <category>nosql</category>
      <category>multimodel</category>
      <category>polyglot</category>
      <category>capstheorem</category>
    </item>
  </channel>
</rss>
