<?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: Pravin kumar</title>
    <description>The latest articles on DEV Community by Pravin kumar (@pravindia).</description>
    <link>https://dev.to/pravindia</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%2F89269%2Fe5e7a536-6dee-408b-b23b-fcdc1f0c912b.png</url>
      <title>DEV Community: Pravin kumar</title>
      <link>https://dev.to/pravindia</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/pravindia"/>
    <language>en</language>
    <item>
      <title>VS Code extenstions that I love</title>
      <dc:creator>Pravin kumar</dc:creator>
      <pubDate>Wed, 14 Oct 2020 11:30:06 +0000</pubDate>
      <link>https://dev.to/pravindia/vs-code-extenstions-that-i-love-1p87</link>
      <guid>https://dev.to/pravindia/vs-code-extenstions-that-i-love-1p87</guid>
      <description>&lt;ol&gt;
&lt;li&gt;Wakatime&lt;/li&gt;
&lt;li&gt;Bracket Pair Colorizer&lt;/li&gt;
&lt;li&gt;Better Comments&lt;/li&gt;
&lt;li&gt;GitLens&lt;/li&gt;
&lt;li&gt;Path Intellisence&lt;/li&gt;
&lt;li&gt;Live Server&lt;/li&gt;
&lt;li&gt;Prettier&lt;/li&gt;
&lt;li&gt;ESLint&lt;/li&gt;
&lt;li&gt;Material Icon Theme
10.Settings Sync&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>codenewbie</category>
      <category>vscode</category>
    </item>
    <item>
      <title>Reducing Flutter App size</title>
      <dc:creator>Pravin kumar</dc:creator>
      <pubDate>Sun, 16 Aug 2020 10:30:06 +0000</pubDate>
      <link>https://dev.to/smazeestudio/reducing-flutter-app-size-1p0k</link>
      <guid>https://dev.to/smazeestudio/reducing-flutter-app-size-1p0k</guid>
      <description>&lt;p&gt;Whenever we build an app, the app size optimisation is always a difficult part. Even in 4G and modern smartphone era people prefer smaller apps and the smaller apps are more likely to be downloaded. Unlimited internet is no for everybody. &lt;em&gt;**More than 337 million smartphone users with limited data plans&lt;/em&gt;&lt;em&gt;.&lt;/em&gt; So after all coding part we do optimisation and try to reduce the app size. In the terms of optimisation &lt;em&gt;each and every bytes matters&lt;/em&gt;. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The download completion rate of an app with an APK size of around 10MB will be ~30% higher than an app with an APK size of 100MB&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Ref: &lt;a href="https://medium.com/pixplicity/size-matters-how-your-app-size-is-costing-you-customers-6121d6db74e"&gt;Article&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;There are many good coding practice and building a stable architecture will help the app to perform better. We can talk about it in detail in another article. Apart from that there are some common methods and practice that you can implement in your app to make it better.&lt;/p&gt;

&lt;h2&gt;
  
  
  7 Flutter app Performance Tips
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. &lt;strong&gt;Image Asset&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;In Flutter people uses images from assets folder to display in the app. In development mode this will be useful as the images are loaded faster. But when you bundle the app these images adds more weight to the app. The solution is of &lt;strong&gt;using network images.&lt;/strong&gt; Upload the images in permanent storage path like AWS or in your website server and use the link to that image in your code.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight dart"&gt;&lt;code&gt;&lt;span class="n"&gt;Image&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;network&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt; &lt;span class="s"&gt;'https://picsum.photos/250?image=9'&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;
&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Also compress PNG and JPEG files before uploading to your storage. The free online resource to compress PNG image is &lt;a href="https://compresspng.com/"&gt;https://compresspng.com/&lt;/a&gt;. &lt;/p&gt;

&lt;h3&gt;
  
  
  2. &lt;strong&gt;Use Google Fonts&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Initially flutter app can have custom font styles only assessing the font file from assets folder. Similar to images these fonts will also increase app size. The best solution is using &lt;code&gt;google_fonts&lt;/code&gt; plugin. This plugin will &lt;em&gt;dynamically download&lt;/em&gt; font when it is used and it will download it in a specific style and language, so that you don’t need to ship all of the variation with your project.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight dart"&gt;&lt;code&gt;&lt;span class="n"&gt;Text&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;
  &lt;span class="s"&gt;'This is Google Fonts'&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;
  &lt;span class="nl"&gt;style:&lt;/span&gt; &lt;span class="n"&gt;GoogleFonts&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;lato&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;
    &lt;span class="nl"&gt;textStyle:&lt;/span&gt; &lt;span class="n"&gt;Theme&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;of&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;context&lt;/span&gt;&lt;span class="o"&gt;).&lt;/span&gt;&lt;span class="na"&gt;textTheme&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;display1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;
    &lt;span class="nl"&gt;fontSize:&lt;/span&gt; &lt;span class="mi"&gt;48&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;
    &lt;span class="nl"&gt;fontWeight:&lt;/span&gt; &lt;span class="n"&gt;FontWeight&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;w700&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;
    &lt;span class="nl"&gt;fontStyle:&lt;/span&gt; &lt;span class="n"&gt;FontStyle&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;italic&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;
  &lt;span class="o"&gt;),&lt;/span&gt;
&lt;span class="o"&gt;),&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h3&gt;
  
  
  3. &lt;strong&gt;Icons&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;It is recommended to use from Material Icons or Cupertino Icons class. From Flutter 1.17, you can add &lt;code&gt;--tree-shake-icons&lt;/code&gt; option to flutter build command, to remove all of the not used icons from the bundle. This will potentially save the size of your app.&lt;/p&gt;

&lt;p&gt;But in many situations due to modern desing you might need to use other icons. In that case &lt;strong&gt;use .svg format icon&lt;/strong&gt; so you doesn’t need to worry about different device DPI’s and this also helps in reducing apk size.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--q4OSYNHV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/bvaz7qi9rdnoob4fri3q.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--q4OSYNHV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/bvaz7qi9rdnoob4fri3q.jpg" alt="App size reduce use SVG"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  4. &lt;strong&gt;Dynamic App Delivery&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;We could build an app bundle if we are uploading to playstore or we could split the apk per abi which &lt;em&gt;splits the apk to x64 and x86 bit code&lt;/em&gt;. By using appbundle Google Play’s new app serving model, called Dynamic Delivery, uses your app bundle to generate and serve optimized APKs for each user’s device configuration, so they download only the code and resources they need to run your app.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--DulOmqa6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/p6v9yqz5n2qmsxtj9wnj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--DulOmqa6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/p6v9yqz5n2qmsxtj9wnj.png" alt="Flutter App Size Reduce"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But some of the store like Amazon App store still doesn't support appbundle in that case you can use &lt;code&gt;--split-per-abi&lt;/code&gt; command which will give you three version of apks. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;On average, apps published with app bundles are 20% smaller in size.&lt;br&gt;
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;flutter build appbundle
// or use
flutter build apk &lt;span class="nt"&gt;--split-per-abi&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h3&gt;
  
  
  5. &lt;strong&gt;Cache&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Using cache will not help in reducing app size but it will make the app to load faster and hence improving the app performance. All frequently used images like profile pic, bg picture using  &lt;code&gt;cached_network_image&lt;/code&gt; plugin&lt;/p&gt;

&lt;p&gt;The cached_network_image package allows you to use any widget as a placeholder. In this example, display a spinner while the image loads.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight dart"&gt;&lt;code&gt;&lt;span class="n"&gt;CachedNetworkImage&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;
  &lt;span class="nl"&gt;imageUrl:&lt;/span&gt; &lt;span class="s"&gt;"http://via.placeholder.com/200x150"&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;
  &lt;span class="nl"&gt;imageBuilder:&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;context&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;imageProvider&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;Container&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;
    &lt;span class="nl"&gt;decoration:&lt;/span&gt; &lt;span class="n"&gt;BoxDecoration&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;
      &lt;span class="nl"&gt;image:&lt;/span&gt; &lt;span class="n"&gt;DecorationImage&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;
          &lt;span class="nl"&gt;image:&lt;/span&gt; &lt;span class="n"&gt;imageProvider&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;
          &lt;span class="nl"&gt;fit:&lt;/span&gt; &lt;span class="n"&gt;BoxFit&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;cover&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;
          &lt;span class="nl"&gt;colorFilter:&lt;/span&gt;
              &lt;span class="n"&gt;ColorFilter&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;mode&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Colors&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;red&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;BlendMode&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;colorBurn&lt;/span&gt;&lt;span class="o"&gt;)),&lt;/span&gt;
    &lt;span class="o"&gt;),&lt;/span&gt;
  &lt;span class="o"&gt;),&lt;/span&gt;
  &lt;span class="nl"&gt;placeholder:&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;context&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;CircularProgressIndicator&lt;/span&gt;&lt;span class="o"&gt;(),&lt;/span&gt;
  &lt;span class="nl"&gt;errorWidget:&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;context&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;error&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;Icon&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Icons&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;error&lt;/span&gt;&lt;span class="o"&gt;),&lt;/span&gt;
&lt;span class="o"&gt;),&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h3&gt;
  
  
  6. &lt;strong&gt;Proguard&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Proguard is a java program optimizer. It is not specific to Flutter. It optimizes your code in ways that don’t change the functionality but change the representation to make it more compact. It obfuscates name of types, fields, methods where the original name doesn’t matter such that long names are replaced with short strings like a and b for efficiency. Packages and classes may have a long name but should not hinder efficiency. It also removes unused java code from dependencies.&lt;/p&gt;

&lt;p&gt;You have two default proguard file you can apply.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;proguard-android-optimize.txt -&lt;/strong&gt; progurard configuration&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;proguard-android.txt&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt; We used proguard-android-optimize.txt as the default proguard configuration. You can add you custom proguard configurations in &lt;em&gt;proguard-rules.pro&lt;/em&gt; file in your &lt;em&gt;/app&lt;/em&gt; directory.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt; release {
    //Enable the proguard
    minifyEnabled true
    proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), "proguard-rules.pro"

    //Other parameters
    debuggable false
    jniDebuggable false
    renderscriptDebuggable false
    signingConfig playStoreConfig //Add your own signing config
    pseudoLocalesEnabled false
    zipAlignEnabled true
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;By setting &lt;code&gt;minifyEnabled&lt;/code&gt; to true, the proguard will remove all the unused methods, instructions and slim down the classes.dex file.By enabling the proguard in every module of our project we can we are able to reduce the classes.dex file size almost by 50%.&lt;/p&gt;

&lt;p&gt;Learn more about proguard &lt;a href="https://developer.android.com/studio/build/shrink-code"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  7. &lt;strong&gt;Use Specific Libraries&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Calling packages not needed or used in our pubspec.yaml file should be avoided. Once done building your app, you should check your pubspec.yaml and remove libraries/packages which is/are not used. Also remove all the unused assets from pubspec.yaml. &lt;/p&gt;

&lt;p&gt;Also in certain situations due to unavailability of some features me might used some 3rd party plugins. But in some future update Flutter might have resolved it and had a built-in solution. In those case using  default Flutter solution is a good practice than using the 3rd party plugins.&lt;/p&gt;

&lt;p&gt;For more blogs on Flutter visit &lt;a href="https://smazee.com/blog"&gt;Smazee&lt;/a&gt;&lt;/p&gt;

</description>
      <category>flutter</category>
      <category>application</category>
      <category>optimisation</category>
      <category>production</category>
    </item>
    <item>
      <title>Learn what's MongoDB | NoSQL</title>
      <dc:creator>Pravin kumar</dc:creator>
      <pubDate>Wed, 17 Oct 2018 14:30:55 +0000</pubDate>
      <link>https://dev.to/smazeestudio/learn-whats-mongodb--nosql-38pf</link>
      <guid>https://dev.to/smazeestudio/learn-whats-mongodb--nosql-38pf</guid>
      <description>&lt;p&gt;Mongo DB is a (NoSql) Non-relational Database system which has a dynamic schema for unstructured data. It is more scalable, flexible and faster than any Relational Database.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1000%2F1%2AplTQEOtbHS3qAr_pz24E4Q.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1000%2F1%2AplTQEOtbHS3qAr_pz24E4Q.jpeg"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Relational Database had ruled since many decades as they were simple and had a great developer community. MySQL, Oracle, PostgreSQL, and Microsoft SQL Server were commonly used for every application. But as the time passes the upcoming technology needed more reliable and powerful DB.&lt;/p&gt;

&lt;p&gt;Then comes our hero NoSQL. In 1998  &lt;a href="https://en.wikipedia.org/w/index.php?title=Carlo_Strozzi_%28developer%29&amp;amp;action=edit&amp;amp;redlink=1" rel="noopener noreferrer"&gt;Carlo Strozzi&lt;/a&gt;  made a lightweight Strozzi NoSQL open-source relational database that did not expose the standard Structured Query Language (SQL) interface but was still relational. As time passes many NoSQL databases were formed. There are 4 general classifications of NoSQL database.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Column&lt;/strong&gt;: Accumulo, Cassandra, Druid, HBase, Vertica.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Document&lt;/strong&gt;: Apache CouchDB, ArangoDB, BaseX, Clusterpoint, Couchbase, Cosmos DB, IBM Domino, MarkLogic, MongoDB, OrientDB, Qizx, RethinkDB&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Key-value&lt;/strong&gt;: Aerospike, Apache Ignite, ArangoDB, Berkeley DB, Couchbase, Dynamo, FairCom c-treeACE, FoundationDB, InfinityDB, MemcacheDB, MUMPS, Oracle NoSQL Database, OrientDB, Redis, Riak, SciDB, SDBM/Flat File dbm, ZooKeeper&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Graph&lt;/strong&gt;: AllegroGraph, ArangoDB, InfiniteGraph, Apache Giraph, MarkLogic, Neo4J, OrientDB, Virtuoso&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But  &lt;em&gt;MongoDB, Cassandra, Redis, HBase and Couchbase&lt;/em&gt;  are commonly used NoSql database.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F800%2F1%2AqLhURmfiuYcJuJuY9-5K3g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F800%2F1%2AqLhURmfiuYcJuJuY9-5K3g.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.mongodb.com/" rel="noopener noreferrer"&gt;&lt;strong&gt;MongoDB&lt;/strong&gt;&lt;/a&gt;  is a one of the popular open-source document-oriented database developed by 10gen in 2007, later called the MongoDB Inc.MongoDB is generally used with Node and Express JS (Angular for Front-end) and collectively known as  &lt;strong&gt;MEAN&lt;/strong&gt;  (&lt;strong&gt;M&lt;/strong&gt;ongoDB,  &lt;strong&gt;E&lt;/strong&gt;xpress JS,  &lt;strong&gt;A&lt;/strong&gt;ngular,  &lt;strong&gt;N&lt;/strong&gt;ode)&lt;/p&gt;

&lt;p&gt;But using NoSql everywhere is inappropriate. First, know where you need to use NoSql and does it suit for your application. Use it when your application has high write load, unstable schema (i.e, when you have no idea about what info your application contains), data is location-based, data is big to handle.&lt;/p&gt;

&lt;p&gt;Since MongoDB is highly readable it requires no database administrator required for maintaining it. It can be done by a normal developer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Scalability&lt;/strong&gt;  - NoSQL databases are horizontally scalable, which means that they can handle more traffic simply by adding more servers to the database.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Flexible Schema&lt;/strong&gt; - NoSql Document (Table is said to be document ) can have any no. of fields and can be nested any no. of times. Hence we need not to predefine Schema for our database.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.mongodb.com/manual/reference/glossary/#term-sharding" rel="noopener noreferrer"&gt;&lt;strong&gt;Sharding&lt;/strong&gt;&lt;/a&gt;  is a method for distributing data across multiple machines. MongoDB uses sharding to support deployments with very large data sets and high throughput operations.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F600%2F1%2ApxHOVKFDUotLZYI9a7Kw_w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F600%2F1%2ApxHOVKFDUotLZYI9a7Kw_w.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Mongoose is an Object Data Modeling (ODM) library for MongoDB and Node.js. It manages relationships between data, provides schema validation, and is used to translate between objects in code and the representation of those objects in MongoDB.&lt;/p&gt;

&lt;p&gt;List of companies using MongoDB : Google Mail, LinkedIn, Ebay, Forbes, Otto and many other companies&lt;/p&gt;

&lt;p&gt;Applications of MongoDB includes Profile Management, Real-Time Big Data, Content Management, Catalog, Mobile Applications, Internet of Things, Fraud Detection.&lt;/p&gt;

&lt;p&gt;At last, it is not that you must use MongoDB everywhere, &lt;em&gt;Know where to use it, Learn how to use &amp;amp; use it effectively.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Referred form many blogs &amp;amp; docs and written by  &lt;em&gt;pravindia&lt;/em&gt;,  &lt;a href="http://smazee.com/blog" rel="noopener noreferrer"&gt;Smazee&lt;/a&gt;&lt;/p&gt;

</description>
      <category>mongodb</category>
      <category>nosql</category>
      <category>node</category>
      <category>mean</category>
    </item>
  </channel>
</rss>
