{"id":1479,"date":"2013-02-15T08:23:32","date_gmt":"2013-02-15T13:23:32","guid":{"rendered":"http:\/\/www.migrate2cloud.com\/blog\/?p=1479"},"modified":"2016-03-21T02:46:48","modified_gmt":"2016-03-21T07:46:48","slug":"installation-of-mongodb-and-its-performance-test","status":"publish","type":"post","link":"https:\/\/www.migrate2cloud.com\/blog\/installation-of-mongodb-and-its-performance-test\/","title":{"rendered":"Installation of MongoDB and its performance test"},"content":{"rendered":"<h2>Why MongoDB?<\/h2>\n<ul>\n<li><span style=\"color: #ff0000;\"><strong>Document-oriented<\/strong><\/span>\n<ul>\n<li>Documents (objects) map nicely to programming language data types<\/li>\n<li>Embedded documents and arrays reduce need for joins<\/li>\n<li>Dynamically-typed (schemaless) for easy schema evolution<\/li>\n<li>No joins and no multi-document transactions for high performance and easy scalability<\/li>\n<\/ul>\n<\/li>\n<li><span style=\"color: #ff0000;\"><strong>High performance<\/strong><\/span>\n<ul>\n<li>No joins and embedding makes reads and writes fast<\/li>\n<li>Indexes including indexing of keys from embedded documents and arrays<\/li>\n<li>Optional streaming writes (no acknowledgements)<\/li>\n<\/ul>\n<\/li>\n<li><span style=\"color: #ff0000;\"><strong>High availability<\/strong><\/span>\n<ul>\n<li>Replicated servers with automatic master failover<\/li>\n<\/ul>\n<\/li>\n<li><span style=\"color: #ff0000;\"><strong>Easy scalability<\/strong><\/span>\n<ul>\n<li>Automatic sharding (auto-partitioning of data across servers)<\/li>\n<li>Reads and writes are distributed over shards<\/li>\n<li>No joins or multi-document transactions make distributed queries easy and fast<\/li>\n<li>Eventually-consistent reads can be distributed over replicated servers<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h2>Mongo data model<\/h2>\n<ul>\n<li>A Mongo system (see deployment above) holds a set of databases<\/li>\n<li>A <strong>database<\/strong> holds a set of collections<\/li>\n<li>A <strong>collection<\/strong> holds a set of documents<\/li>\n<li>A <strong>document<\/strong> is a set of fields<\/li>\n<li>A <strong>field<\/strong> is a key-value pair<\/li>\n<li>A <strong>key<\/strong> is a name (string)<\/li>\n<li>A <strong>value <\/strong>is a\n<ul>\n<li>basic type like string, integer, float, timestamp, binary, etc.,<\/li>\n<li>a document, or<\/li>\n<li>an array of value<\/li>\n<\/ul>\n<p><span style=\"color: #ff0000;\"><strong>Mongo query language<\/strong><\/span><\/li>\n<li>To retrieve certain documents from a db collection, you supply a query document containing the fields the desired documents should match. For example, {<tt>name: {first: 'John', last: 'Doe'<\/tt>}} will match all documents in the collection with name of John Doe. Likewise, {<tt>name.last: 'Doe'<\/tt>} will match all documents with last name of Doe. Also, {<tt>name.last: \/^D\/<\/tt>} will match all documents with last name starting with \u2018D\u2019 (regular expression match).<\/li>\n<li>Queries will also match inside embedded arrays. For example, {<tt>keywords: 'storage'<\/tt>} will match all documents with \u2018storage\u2019 in its keywords array. Likewise, {<tt>keywords: {$in: ['storage', 'DBMS']<\/tt>}} will match all documents with \u2018storage\u2019 or \u2018DBMS\u2019 in its keywords array.<\/li>\n<li>If you have lots of documents in a collection and you want to make a query fast then build an index for that query. For example, <tt>ensureIndex({name.last: 1})<\/tt> or <tt>ensureIndex({keywords: 1})<\/tt>. Note, indexes occupy space and slow down updates a bit, so use them only when the tradeoff is worth it.<\/li>\n<\/ul>\n<h1>Install MongoDB on Ubuntu 10.04<\/h1>\n<div>\n<h3><span style=\"color: #ff0000;\">Configure Package Management System (APT)<\/span><\/h3>\n<p>The Ubuntu package management tool (i.e. <tt>dpkg<\/tt> and <tt>apt<\/tt>) ensure package consistency and authenticity by requiring that distributors sign packages with GPG keys. Issue the following command to import the <a href=\"http:\/\/docs.mongodb.org\/10gen-gpg-key.asc\">10gen public GPG Key<\/a>:<\/p>\n<div>\n<div>\n<pre>sudo apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10<\/pre>\n<\/div>\n<\/div>\n<p>Create a <tt>\/etc\/apt\/sources.list.d\/10gen.list<\/tt> file and include the following line for the 10gen repository.<\/p>\n<div>\n<div>\n<pre>deb http:\/\/downloads-distro.mongodb.org\/repo\/ubuntu-upstart dist 10gen<\/pre>\n<\/div>\n<\/div>\n<p>Now issue the following command to reload your repository:<\/p>\n<div>\n<div>\n<pre>sudo apt-get update<\/pre>\n<\/div>\n<\/div>\n<\/div>\n<div>\n<h3><span style=\"color: #ff0000;\">Install Packages<\/span><\/h3>\n<p>Issue the following command to install the latest stable version of MongoDB:<\/p>\n<div>\n<div>\n<pre>sudo apt-get install mongodb-10gen<\/pre>\n<\/div>\n<\/div>\n<p>When this command completes, you have successfully installed MongoDB! Continue for configuration and start-up suggestions.<\/p>\n<\/div>\n<div>\n<h2><span style=\"color: #ff0000;\">Configure MongoDB<\/span><\/h2>\n<p>These packages configure MongoDB using the <tt>\/etc\/mongodb.conf<\/tt> file in conjunction with the <a href=\"http:\/\/docs.mongodb.org\/manual\/reference\/glossary\/#term-101\"><em>control script<\/em><\/a>. You will find the control script is at <tt>\/etc\/init.d\/mongodb<\/tt>.<\/p>\n<p>This MongoDB instance will store its data files in the <tt>\/var\/lib\/mongodb<\/tt> and its log files in <tt>\/var\/log\/mongodb<\/tt>, and run using the <tt>mongodb<\/tt> user account.<\/p>\n<div>\n<p>Note<\/p>\n<p>If you change the user that runs the MongoDB process, you will need to modify the access control rights to the <tt>\/var\/lib\/mongodb<\/tt> and <tt>\/var\/log\/mongodb<\/tt> directories.<\/p>\n<\/div>\n<\/div>\n<div>\n<h2><span style=\"color: #ff0000;\">Controlling MongoDB<\/span><\/h2>\n<div>\n<h3>Starting MongoDB<\/h3>\n<p>You can start the <tt>mongod<\/tt> process by issuing the following command:<\/p>\n<div>\n<div>\n<pre>sudo service mongodb start<\/pre>\n<\/div>\n<\/div>\n<p>You can verify that <tt>mongod<\/tt> has started successfully by checking the contents of the log file at <tt>\/var\/log\/mongodb\/mongodb.log<\/tt>.<\/p>\n<\/div>\n<div>\n<h3>Stopping MongoDB<\/h3>\n<p>As needed, you may stop the <tt>mongod<\/tt> process by issuing the following command:<\/p>\n<div>\n<div>\n<pre>sudo service mongodb stop<\/pre>\n<\/div>\n<\/div>\n<\/div>\n<div>\n<h3><span style=\"color: #ff0000;\">Restarting MongoDB<\/span><\/h3>\n<p>You may restart the <tt>mongod<\/tt> process by issuing the following command:<\/p>\n<div>\n<div>\n<pre>sudo service mongodb restart<\/pre>\n<\/div>\n<\/div>\n<\/div>\n<div>\n<h3>Controlling <a title=\"mongos\" href=\"http:\/\/docs.mongodb.org\/manual\/reference\/config-database\/#mongos\"><tt>mongos<\/tt><\/a><\/h3>\n<p>As of the current release, there are no <a href=\"http:\/\/docs.mongodb.org\/manual\/reference\/glossary\/#term-101\"><em>control scripts<\/em><\/a> for <a title=\"mongos\" href=\"http:\/\/docs.mongodb.org\/manual\/reference\/config-database\/#mongos\"><tt>mongos<\/tt><\/a>. <a title=\"mongos\" href=\"http:\/\/docs.mongodb.org\/manual\/reference\/config-database\/#mongos\"><tt>mongos<\/tt><\/a> is only used in sharding deployments and typically do not run on the same systems where <tt>mongod<\/tt> runs. You can use the <tt>mongodb<\/tt> script referenced above to derive your own <a title=\"mongos\" href=\"http:\/\/docs.mongodb.org\/manual\/reference\/config-database\/#mongos\"><tt>mongos<\/tt><\/a> control script.<\/p>\n<\/div>\n<\/div>\n<div>\n<div>\n<p><strong>Using MongoDB<\/strong><\/p>\n<div>\n<div>\n<div>\n<div>\n<div>\n<div>\n<div>\n<div>\n<p>Among the tools included with the MongoDB package, is the <tt>mongo<\/tt> shell. You can connect to your MongoDB instance by issuing the following command at the system prompt:<\/p>\n<p><span style=\"color: #ff0000;\">mongo<\/span><br \/>\n<span style=\"color: #ff0000;\">&gt; show dbs (); &#8212;&gt; To show your databases <\/span><br \/>\n<span style=\"color: #ff0000;\">&gt; use &lt;databasename&gt; &#8212;-&gt; To switch database <\/span><br \/>\n<span style=\"color: #ff0000;\">&gt; db.createCollection(&#8220;collectionname&#8221;) &#8212;&gt; To create collection <\/span><br \/>\n<span style=\"color: #ff0000;\">&gt; db.collectionname.find(); &#8212;&gt; To see the contents in the collection<\/span><br \/>\n<span style=\"color: #ff0000;\">&gt; db.addUser(&#8220;theadmin&#8221;, &#8220;anadminpassword&#8221;) &#8212;&gt; To create user and password<\/span><\/p>\n<h2><strong>Mongodb performance test :-<\/strong><\/h2>\n<p><strong>To monitor database system we can use <span style=\"color: #ff0000;\">Mongotop<\/span><\/strong><\/p>\n<p>Mongotop tracks and reports the current read and write activity of a MongoDB instance.<br \/>\nMongotop provides per-collection visibility into use.<br \/>\nUse mongotop to verify that activity and use match expectations.<br \/>\nMongotop returns time values specified in milliseconds (ms.)<br \/>\nMongotop only reports active namespaces or databases, depending on the &#8211;locks option.<br \/>\nIf you don\u2019t see a database or collection, it has received no recent activity.<\/p>\n<p>By default mongotop connects to the MongoDB instance running on the localhost port 27017. However,mongotop can optionally connect to remote mongod instances<\/p>\n<p><a href=\"http:\/\/www.migrate2cloud.com\/blog\/wp-content\/uploads\/2013\/02\/Mongotop.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-1509\" src=\"http:\/\/www.migrate2cloud.com\/blog\/wp-content\/uploads\/2013\/02\/Mongotop.png\" alt=\"\" width=\"504\" height=\"256\" \/><\/a><\/p>\n<p>Next, we can use <span style=\"color: #ff0000;\"><strong>Mongostat<\/strong><\/span><\/p>\n<p>Mongostat captures and returns counters of database operations. Mongostat reports operations on a per-type (e.g. insert, query, update, delete, etc.) basis. This format makes it easy to understand the distribution of load on the server. Use\u00a0 Mongostat to understand the distribution of operation types and to inform capacity planning.<br \/>\nThe Mongostat utility provides a quick overview of the status of a currently running mongod or Mongos instance. Mongostat is functionally similar to the UNIX\/Linux file system utility vmstat, but provides data regarding mongod and Mongos instances.<\/p>\n<p>Use\u00a0 db.serverStatus()<br \/>\nIt provides an overview of the database process\u2019s state.<\/p>\n<p>Then REST interface<\/p>\n<p>MongoDB provides a REST interface that exposes a diagnostic and monitoring information in a simple web page. Enable this by setting rest to true, and access this page via the local host interface using the port numbered 1000 more than that the database port. In default configurations the REST interface is accessible on 28017. For example, to access the REST interface on a locally running mongod instance: http:\/\/localhost:28017<\/p>\n<p><a href=\"http:\/\/www.migrate2cloud.com\/blog\/wp-content\/uploads\/2013\/02\/Mongostat.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-1513\" src=\"http:\/\/www.migrate2cloud.com\/blog\/wp-content\/uploads\/2013\/02\/Mongostat.png\" alt=\"\" width=\"682\" height=\"328\" \/><\/a><\/p>\n<p>These are a few basic tips on making your application better\/faster\/stronger without knowing anything about indexes or sharding.<\/p>\n<p><span style=\"color: #ff0000;\"><strong>Connecting<\/strong><\/span><\/p>\n<p>Connecting to the database is a (relatively) expensive operation. Try to minimize the number of times you connect and disconnect: use persistent connections or connection pooling (depending on your language).<\/p>\n<p>there are some\u00a0 side effects with the PHP connection code.<\/p>\n<p>$connection = new Mongo ( );<\/p>\n<p>$connection-&gt;connect( );<\/p>\n<p>In this code it appears the user wants to create a new connection. However, under the hood the following is happening:<\/p>\n<p>The constructor connects to the database.<br \/>\nconnect( ) sees that you\u2019re already connected, assumes you want to reset the connection.<br \/>\nDisconnects from the database.<br \/>\nConnects again.<\/p>\n<p>The result is that you have doubled your execution time.<\/p>\n<p><span style=\"color: #ff0000;\"><strong>ObjectIds<\/strong><\/span><\/p>\n<p>ObjectIds seem to be uncomfortable, so they convert their ObjectIds into strings. The problem is, an ObjectId takes up 12 bytes but its string representation takes up 29 bytes (almost two and a half times bigger).<\/p>\n<p><span style=\"color: #ff0000;\"><strong>Numbers vs. Strings<\/strong><\/span><\/p>\n<p>MongoDB is type-sensitive and it\u2019s important to use the correct type: numbers for numeric values and strings for strings.<\/p>\n<p>If you have large numbers and you save them as strings (\u201c1234567890\u2033 instead of 1234567890), MongoDB may slow down as it strcmps the entire length of the number instead of doing a quicker numeric comparison. Also, \u201c12\u2033 is going to be sorted as less than \u201c9\u2033, because MongoDB will use string, not numeric, comparison on the values. This can lead to some errors.<\/p>\n<p><span style=\"color: #ff0000;\"><strong>Driver-specific<\/strong><\/span><br \/>\nFind out if you\u2019re driver is particularly weaknesses (or strengths). For instance, the Perl driver is one of the fastest drivers, but it is not good at decoding Date types (Perl\u2019s DateTime objects take a long time to create).<br \/>\nMongoDB adopts a documented-oriented format, so it is more similar to RDBMS than a key-value or column oriented format.<\/p>\n<p>MongoDB operates on a memory base and places high performance above data scalability.Mongo DB uses BSON for data storage<\/p>\n<p>Mongo uses memory mapped files, which means that a lot of the memory reported by tools such as top may not actually represent RAM usage. Check mem[&#8220;resident&#8221;], which tells you how much RAM Mongo is actually using.<\/p>\n<p><strong>&#8220;mem&#8221; : { <\/strong><br \/>\n<strong>\u00a0\u00a0\u00a0 &#8220;resident&#8221; : 2,<\/strong><br \/>\n<strong>\u00a0\u00a0\u00a0 &#8220;virtual&#8221; : 2396,<\/strong><\/p>\n<p><strong>\u00a0\u00a0\u00a0 &#8220;supported&#8221; : true,<\/strong><br \/>\n<strong>\u00a0\u00a0\u00a0 &#8220;mapped&#8221; : 0<\/strong><br \/>\n<strong>},<\/strong><\/p>\n<p><span style=\"color: #ff0000;\"><strong>Backup<\/strong><\/span><\/p>\n<p>There are basically two approaches to backing up a Mongo database:<\/p>\n<p>Mongodump and Mongorestore are the classic approach. Dumps the contents of the database to files. The backup is stored in the same format as Mongo uses internally, so is very efficient. But it&#8217;s not a point-in-time snapshot.<br \/>\nTo get a point-in-time snapshot, shut the database down, copy the disk files (e.g. with cp) and then start mongod up again. Alternatively, rather than shutting mongod down before making your point-in-time snapshot, you could just stop it from accepting writes:<\/p>\n<p><strong>&gt; db._adminCommand({fsync: 1, lock: 1})<\/strong><br \/>\n<strong>{<\/strong><br \/>\n<strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &#8220;info&#8221; : &#8220;now locked against writes, use db.$cmd.sys.unlock.findOne() to unlock&#8221;,<\/strong><\/p>\n<p><strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &#8220;ok&#8221; : 1<\/strong><br \/>\n<strong>}<\/strong><\/p>\n<p>To unlock the database again, you need to switch to the admin database and then unlock it<\/p>\n<p><strong>&gt; use admin<\/strong><br \/>\n<strong>switched to db admin<\/strong><br \/>\n<strong>&gt; db.$cmd.sys.unlock.findOne()<\/strong><br \/>\n<strong>{ &#8220;ok&#8221; : 1, &#8220;info&#8221; : &#8220;unlock requested&#8221; }<\/strong><\/p>\n<p><span style=\"color: #ff0000;\"><strong>Replication<\/strong><\/span><br \/>\nStart your master and slave up like this:<\/p>\n<p><strong>$ mongod &#8211;master &#8211;oplogSize 500<\/strong><\/p>\n<p><strong>$ mongod &#8211;slave &#8211;source localhost:27017 &#8211;port 3000 &#8211;dbpath \/data\/slave<\/strong><\/p>\n<p>When seeding a new slave server from master use the &#8211;fastsync option.<\/p>\n<p>You can see what&#8217;s going on with these two commands:<br \/>\n<strong>&gt; db.printReplicationInfo() # tells you how long your oplog will last<\/strong><br \/>\n<strong>&gt; db.printSlaveReplicationInfo() # tells you how far behind the slave is<\/strong><\/p>\n<p>If the slave isn&#8217;t keeping up,Check the mongo log for any recent errors. Try connecting with the mongo<br \/>\nconsole. Try running queries from the console to see if everything is working. Run the status commands<br \/>\nabove to try and find out which database is taking up resources.<br \/>\n<span style=\"color: #ff0000;\"><strong>Timeout<\/strong><\/span><\/p>\n<p>Connection timeout in milliseconds. Defaults to 20000<\/p>\n<p><strong>Connection::query_timeout.<\/strong><\/p>\n<p>How many milliseconds to wait for a response from the server. Set to 30000 (30 seconds) by default. -1 waits forever (or until TCP times out, which is usually a long time).<\/p>\n<p><span style=\"color: #ff0000;\">Default pool<\/span><\/p>\n<p>The default pool has a maximum of 10 connections per mongodb host. This value is controlled by the variable\u00a0 \u201cconnectionsPerHost\u201d within the class<\/p>\n<p><span style=\"color: #ff0000;\">MongoDB Server Connections<\/span><\/p>\n<p>The MongoDB server has a property called \u201cmaxConns\u201d that\u00a0 is the max number of simultaneous connections. The<br \/>\ndefault number for maxConns is 80% of the available file descriptors for connections. One way to check the number of connections is by opening the mongo shell and executing:<\/p>\n<p><strong>&gt;db.serverStatus()<\/strong> and in the previous mail I have send the screen shot of this.<\/p>\n<p>The standard format of the MongoDB connection URI used to connect to a MongoDB database server.<\/p>\n<p><strong>mongodb:\/\/[username:password@]host1[:port1][,host2[:port2],&#8230;[,hostN[:portN]]][\/[database][?options]]<\/strong><\/p>\n<p><span style=\"color: #ff0000;\">Finding the Min and Max values in MongoDB<\/span><\/p>\n<p>In MongoDB, the min() and max() functions work as limitors &#8211; essentially the same as &#8220;gte&#8221; (&gt;=) and &#8220;lt&#8221; (&lt;).<\/p>\n<p><span style=\"color: #ff0000;\">To find the highest (maximum) value in MongoDB, you can use this command;<\/span><\/p>\n<p><strong>db.thiscollection.find().sort({&#8220;thisfieldname&#8221;:-1}).limit(1)<\/strong><\/p>\n<p>This essentially sorts the data by the fieldname in decending and takes the first value.<\/p>\n<p>The lowest (minimum) value can be determined in a similar way.<\/p>\n<p><strong>\u00a0\u00a0\u00a0 db.thiscollection.find().sort({&#8220;thisfieldname&#8221;:1}).limit(1)<\/strong><\/p>\n<p><span style=\"color: #ff0000;\"><strong>Memory Mapped Storage Engine :-<\/strong><\/span><\/p>\n<p>This is the current storage engine for MongoDB, and it uses memory-mapped files for all disk I\/O.\u00a0 Using this strategy, the operating system&#8217;s virtual memory manager is in charge of caching.\u00a0 This has several implications:<\/p>\n<p>There is no redundancy between file system cache and database cache: they are one and the same.<br \/>\nMongoDB can use all free memory on the server for cache space automatically without any configuration of a cache size.<br \/>\nVirtual memory size and resident size will appear to be very large for the mongod process.<\/p>\n<p>This is benign: virtual memory space will be just larger thanthe size of the datafiles open and mapped; resident size will vary depending on the amount of memory not used by other processes on the machine.<\/p>\n<p>This command shows the memory usage information :- <strong>db.serverStatus().mem<\/strong><\/p>\n<p><strong>For example :- <\/strong><\/p>\n<p><strong>&gt; db.serverStatus().mem<\/strong><br \/>\n<strong>{<\/strong><br \/>\n<strong>\u00a0\u00a0\u00a0 &#8220;bits&#8221; : 64,<\/strong><br \/>\n<strong>\u00a0\u00a0\u00a0 &#8220;resident&#8221; : 31,<\/strong><br \/>\n<strong>\u00a0\u00a0\u00a0 &#8220;virtual&#8221; : 146,<\/strong><br \/>\n<strong>\u00a0\u00a0\u00a0 &#8220;supported&#8221; : true,<\/strong><br \/>\n<strong>\u00a0\u00a0\u00a0 &#8220;mapped&#8221; : 0,<\/strong><br \/>\n<strong>\u00a0\u00a0\u00a0 &#8220;mappedWithJournal&#8221; : 0<\/strong><br \/>\n<strong>}<\/strong><\/p>\n<p>We can verify there is no memory leak in the mongod process by comparing the mem.virtual and mem.mapped values (these values are in megabytes).\u00a0 If you are running with journaling disabled, the difference should be relatively small compared to total RAM on the machine. If you are running with journaling enabled, compare mem.virtual to 2*mem.mapped.\u00a0\u00a0 Also watch the delta over time; if it is increasing consistently, that could indicate a leak.<\/p>\n<p>Also we can use to check what percent of memory is being used for memory mapped files by the free command:<\/p>\n<p>Here 2652mb of memory is being used to memory map files<\/p>\n<p><strong>root@manager-desktop:~# free -tm<\/strong><\/p>\n<p><strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 total\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 used\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 free\u00a0\u00a0\u00a0\u00a0 shared\u00a0\u00a0\u00a0 buffers\u00a0\u00a0\u00a0\u00a0 cached<\/strong><br \/>\n<strong>Mem:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 3962\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 3602\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 359\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 411\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 2652<\/strong><\/p>\n<p><strong>-\/+ buffers\/cache:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 538\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 3423<\/strong><\/p>\n<p><strong>Swap:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 1491\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0 52\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 1439<\/strong><\/p>\n<p><strong>Total:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 5454\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 3655\u00a0\u00a0 1799<\/strong><\/p>\n<p><span style=\"color: #ff0000;\"><strong>Garbage collection handling :-<\/strong><\/span><\/p>\n<p>When we remove an object from MongoDB collection, the space it occupied is not automatically garbage collected and new records are only appended to the end of data files, making them grow bigger and bigger.MongoDB maintains lists of deleted blocks within the datafiles when objects or collections are deleted.\u00a0 This space is reused by MongoDB but never freed to the operating system.<\/p>\n<p>To shrink the amount of physical space used by the datafiles themselves, by reclaiming deleted blocks, we must rebuild the database by using\u00a0 the command &#8220;<strong>db.repairDatabase( )<\/strong>&#8221; . repairDatabase copies all the database records to new files.<\/p>\n<p>We will need enough free disk space to hold both the old and new database files while the repair is running, the repairDatabase\u00a0 will take a long time to complete.Also rather than compacting an entire database,<\/p>\n<p>you can compact just a single collection by using\u00a0 &#8220;<strong>db.runCommand({compact:&#8217;collectionmname;})<\/strong>&#8221;<\/p>\n<p>This does not shrink any datafiles,however; it only defragments deleted space so that larger objects might reuse it.<\/p>\n<p>The compact command will never delete or shrink database files, and in general requires extra space to do its work.<\/p>\n<p>Thus, it is not a good option when you are running critically low on disk space.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Why MongoDB? Document-oriented Documents (objects) map nicely to programming language data types Embedded documents and arrays reduce need for joins Dynamically-typed (schemaless) for easy schema evolution No joins and no multi-document transactions for high performance and easy scalability High performance No joins and embedding makes reads and writes fast Indexes including indexing of keys from [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[3],"tags":[141,243,281,266,253,286,262,280,276,283,187,121,119,120,86,256,288,277,287,134,252,278,290,284,275,199,289,263,213,279,285,282],"class_list":["post-1479","post","type-post","status-publish","format-standard","hentry","category-cloud-computing","tag-caching","tag-company-product","tag-company-10gen-inc","tag-database","tag-database-server","tag-dbms","tag-distributed-computing-architecture","tag-driver","tag-information-retrieval","tag-john-doe","tag-linux","tag-migration","tag-mongodb","tag-mysql-2","tag-nosql","tag-operating-system","tag-package-management-tool","tag-perl","tag-perl-driver","tag-php","tag-ram","tag-rdbms","tag-rest","tag-rest-interface","tag-search-engine-indexing","tag-server-database-software","tag-slave-server","tag-structured-storage","tag-ubuntu","tag-unix","tag-virtual-memory","tag-virtual-memory-manager"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"Why MongoDB? Document-oriented Documents (objects) map nicely to programming language data types Embedded documents and arrays reduce need for joins Dynamically-typed (schemaless) for easy schema evolution No joins and no multi-document transactions for high performance and easy scalability High performance No joins and embedding makes reads and writes fast Indexes including indexing of keys from\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"bobinson\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/www.migrate2cloud.com\/blog\/installation-of-mongodb-and-its-performance-test\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Migrate to Cloud - we make the clouds rain\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"Installation of MongoDB and its performance test - Migrate to Cloud\" \/>\n\t\t<meta property=\"og:description\" content=\"Why MongoDB? Document-oriented Documents (objects) map nicely to programming language data types Embedded documents and arrays reduce need for joins Dynamically-typed (schemaless) for easy schema evolution No joins and no multi-document transactions for high performance and easy scalability High performance No joins and embedding makes reads and writes fast Indexes including indexing of keys from\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/www.migrate2cloud.com\/blog\/installation-of-mongodb-and-its-performance-test\/\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2013-02-15T13:23:32+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2016-03-21T07:46:48+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Installation of MongoDB and its performance test - Migrate to Cloud\" \/>\n\t\t<meta name=\"twitter:description\" content=\"Why MongoDB? Document-oriented Documents (objects) map nicely to programming language data types Embedded documents and arrays reduce need for joins Dynamically-typed (schemaless) for easy schema evolution No joins and no multi-document transactions for high performance and easy scalability High performance No joins and embedding makes reads and writes fast Indexes including indexing of keys from\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"BlogPosting\",\"@id\":\"https:\\\/\\\/www.migrate2cloud.com\\\/blog\\\/installation-of-mongodb-and-its-performance-test\\\/#blogposting\",\"name\":\"Installation of MongoDB and its performance test - Migrate to Cloud\",\"headline\":\"Installation of MongoDB and its performance test\",\"author\":{\"@id\":\"https:\\\/\\\/www.migrate2cloud.com\\\/blog\\\/author\\\/bobinson\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/www.migrate2cloud.com\\\/blog\\\/#organization\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/www.migrate2cloud.com\\\/blog\\\/wp-content\\\/uploads\\\/2013\\\/02\\\/Mongotop.png\",\"@id\":\"https:\\\/\\\/www.migrate2cloud.com\\\/blog\\\/installation-of-mongodb-and-its-performance-test\\\/#articleImage\",\"width\":686,\"height\":397},\"datePublished\":\"2013-02-15T08:23:32-05:00\",\"dateModified\":\"2016-03-21T02:46:48-05:00\",\"inLanguage\":\"en-US\",\"commentCount\":2,\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.migrate2cloud.com\\\/blog\\\/installation-of-mongodb-and-its-performance-test\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.migrate2cloud.com\\\/blog\\\/installation-of-mongodb-and-its-performance-test\\\/#webpage\"},\"articleSection\":\"Cloud computing, caching, Company Product, Company: 10gen Inc, Database, database server, DBMS, Distributed computing architecture, driver, Information retrieval, John Doe, Linux, Migration, Mongodb, Mysql, NoSql, Operating System, package management tool, Perl, Perl driver, PHP, RAM, RDBMS, REST, REST interface, Search engine indexing, Server &amp; Database Software, slave server, Structured storage, Ubuntu, UNIX, virtual memory, virtual memory manager\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.migrate2cloud.com\\\/blog\\\/installation-of-mongodb-and-its-performance-test\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.migrate2cloud.com\\\/blog#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.migrate2cloud.com\\\/blog\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.migrate2cloud.com\\\/blog\\\/category\\\/cloud-computing\\\/#listItem\",\"name\":\"Cloud computing\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.migrate2cloud.com\\\/blog\\\/category\\\/cloud-computing\\\/#listItem\",\"position\":2,\"name\":\"Cloud computing\",\"item\":\"https:\\\/\\\/www.migrate2cloud.com\\\/blog\\\/category\\\/cloud-computing\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.migrate2cloud.com\\\/blog\\\/installation-of-mongodb-and-its-performance-test\\\/#listItem\",\"name\":\"Installation of MongoDB and its performance test\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.migrate2cloud.com\\\/blog#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.migrate2cloud.com\\\/blog\\\/installation-of-mongodb-and-its-performance-test\\\/#listItem\",\"position\":3,\"name\":\"Installation of MongoDB and its performance test\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.migrate2cloud.com\\\/blog\\\/category\\\/cloud-computing\\\/#listItem\",\"name\":\"Cloud computing\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.migrate2cloud.com\\\/blog\\\/#organization\",\"name\":\"Migrate to Cloud\",\"description\":\"we make the clouds rain\",\"url\":\"https:\\\/\\\/www.migrate2cloud.com\\\/blog\\\/\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.migrate2cloud.com\\\/blog\\\/author\\\/bobinson\\\/#author\",\"url\":\"https:\\\/\\\/www.migrate2cloud.com\\\/blog\\\/author\\\/bobinson\\\/\",\"name\":\"bobinson\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/www.migrate2cloud.com\\\/blog\\\/installation-of-mongodb-and-its-performance-test\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/75ccdce824303bc4f61f39dec0a643a767f9bda27d54a85334ab60120544971f?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"bobinson\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.migrate2cloud.com\\\/blog\\\/installation-of-mongodb-and-its-performance-test\\\/#webpage\",\"url\":\"https:\\\/\\\/www.migrate2cloud.com\\\/blog\\\/installation-of-mongodb-and-its-performance-test\\\/\",\"name\":\"Installation of MongoDB and its performance test - Migrate to Cloud\",\"description\":\"Why MongoDB? Document-oriented Documents (objects) map nicely to programming language data types Embedded documents and arrays reduce need for joins Dynamically-typed (schemaless) for easy schema evolution No joins and no multi-document transactions for high performance and easy scalability High performance No joins and embedding makes reads and writes fast Indexes including indexing of keys from\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.migrate2cloud.com\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.migrate2cloud.com\\\/blog\\\/installation-of-mongodb-and-its-performance-test\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/www.migrate2cloud.com\\\/blog\\\/author\\\/bobinson\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/www.migrate2cloud.com\\\/blog\\\/author\\\/bobinson\\\/#author\"},\"datePublished\":\"2013-02-15T08:23:32-05:00\",\"dateModified\":\"2016-03-21T02:46:48-05:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.migrate2cloud.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.migrate2cloud.com\\\/blog\\\/\",\"name\":\"Migrate to Cloud\",\"description\":\"we make the clouds rain\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.migrate2cloud.com\\\/blog\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Installation of MongoDB and its performance test - Migrate to Cloud","description":"Why MongoDB? Document-oriented Documents (objects) map nicely to programming language data types Embedded documents and arrays reduce need for joins Dynamically-typed (schemaless) for easy schema evolution No joins and no multi-document transactions for high performance and easy scalability High performance No joins and embedding makes reads and writes fast Indexes including indexing of keys from","canonical_url":"https:\/\/www.migrate2cloud.com\/blog\/installation-of-mongodb-and-its-performance-test\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"BlogPosting","@id":"https:\/\/www.migrate2cloud.com\/blog\/installation-of-mongodb-and-its-performance-test\/#blogposting","name":"Installation of MongoDB and its performance test - Migrate to Cloud","headline":"Installation of MongoDB and its performance test","author":{"@id":"https:\/\/www.migrate2cloud.com\/blog\/author\/bobinson\/#author"},"publisher":{"@id":"https:\/\/www.migrate2cloud.com\/blog\/#organization"},"image":{"@type":"ImageObject","url":"https:\/\/www.migrate2cloud.com\/blog\/wp-content\/uploads\/2013\/02\/Mongotop.png","@id":"https:\/\/www.migrate2cloud.com\/blog\/installation-of-mongodb-and-its-performance-test\/#articleImage","width":686,"height":397},"datePublished":"2013-02-15T08:23:32-05:00","dateModified":"2016-03-21T02:46:48-05:00","inLanguage":"en-US","commentCount":2,"mainEntityOfPage":{"@id":"https:\/\/www.migrate2cloud.com\/blog\/installation-of-mongodb-and-its-performance-test\/#webpage"},"isPartOf":{"@id":"https:\/\/www.migrate2cloud.com\/blog\/installation-of-mongodb-and-its-performance-test\/#webpage"},"articleSection":"Cloud computing, caching, Company Product, Company: 10gen Inc, Database, database server, DBMS, Distributed computing architecture, driver, Information retrieval, John Doe, Linux, Migration, Mongodb, Mysql, NoSql, Operating System, package management tool, Perl, Perl driver, PHP, RAM, RDBMS, REST, REST interface, Search engine indexing, Server &amp; Database Software, slave server, Structured storage, Ubuntu, UNIX, virtual memory, virtual memory manager"},{"@type":"BreadcrumbList","@id":"https:\/\/www.migrate2cloud.com\/blog\/installation-of-mongodb-and-its-performance-test\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/www.migrate2cloud.com\/blog#listItem","position":1,"name":"Home","item":"https:\/\/www.migrate2cloud.com\/blog","nextItem":{"@type":"ListItem","@id":"https:\/\/www.migrate2cloud.com\/blog\/category\/cloud-computing\/#listItem","name":"Cloud computing"}},{"@type":"ListItem","@id":"https:\/\/www.migrate2cloud.com\/blog\/category\/cloud-computing\/#listItem","position":2,"name":"Cloud computing","item":"https:\/\/www.migrate2cloud.com\/blog\/category\/cloud-computing\/","nextItem":{"@type":"ListItem","@id":"https:\/\/www.migrate2cloud.com\/blog\/installation-of-mongodb-and-its-performance-test\/#listItem","name":"Installation of MongoDB and its performance test"},"previousItem":{"@type":"ListItem","@id":"https:\/\/www.migrate2cloud.com\/blog#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/www.migrate2cloud.com\/blog\/installation-of-mongodb-and-its-performance-test\/#listItem","position":3,"name":"Installation of MongoDB and its performance test","previousItem":{"@type":"ListItem","@id":"https:\/\/www.migrate2cloud.com\/blog\/category\/cloud-computing\/#listItem","name":"Cloud computing"}}]},{"@type":"Organization","@id":"https:\/\/www.migrate2cloud.com\/blog\/#organization","name":"Migrate to Cloud","description":"we make the clouds rain","url":"https:\/\/www.migrate2cloud.com\/blog\/"},{"@type":"Person","@id":"https:\/\/www.migrate2cloud.com\/blog\/author\/bobinson\/#author","url":"https:\/\/www.migrate2cloud.com\/blog\/author\/bobinson\/","name":"bobinson","image":{"@type":"ImageObject","@id":"https:\/\/www.migrate2cloud.com\/blog\/installation-of-mongodb-and-its-performance-test\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/75ccdce824303bc4f61f39dec0a643a767f9bda27d54a85334ab60120544971f?s=96&d=mm&r=g","width":96,"height":96,"caption":"bobinson"}},{"@type":"WebPage","@id":"https:\/\/www.migrate2cloud.com\/blog\/installation-of-mongodb-and-its-performance-test\/#webpage","url":"https:\/\/www.migrate2cloud.com\/blog\/installation-of-mongodb-and-its-performance-test\/","name":"Installation of MongoDB and its performance test - Migrate to Cloud","description":"Why MongoDB? Document-oriented Documents (objects) map nicely to programming language data types Embedded documents and arrays reduce need for joins Dynamically-typed (schemaless) for easy schema evolution No joins and no multi-document transactions for high performance and easy scalability High performance No joins and embedding makes reads and writes fast Indexes including indexing of keys from","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/www.migrate2cloud.com\/blog\/#website"},"breadcrumb":{"@id":"https:\/\/www.migrate2cloud.com\/blog\/installation-of-mongodb-and-its-performance-test\/#breadcrumblist"},"author":{"@id":"https:\/\/www.migrate2cloud.com\/blog\/author\/bobinson\/#author"},"creator":{"@id":"https:\/\/www.migrate2cloud.com\/blog\/author\/bobinson\/#author"},"datePublished":"2013-02-15T08:23:32-05:00","dateModified":"2016-03-21T02:46:48-05:00"},{"@type":"WebSite","@id":"https:\/\/www.migrate2cloud.com\/blog\/#website","url":"https:\/\/www.migrate2cloud.com\/blog\/","name":"Migrate to Cloud","description":"we make the clouds rain","inLanguage":"en-US","publisher":{"@id":"https:\/\/www.migrate2cloud.com\/blog\/#organization"}}]},"og:locale":"en_US","og:site_name":"Migrate to Cloud - we make the clouds rain","og:type":"article","og:title":"Installation of MongoDB and its performance test - Migrate to Cloud","og:description":"Why MongoDB? Document-oriented Documents (objects) map nicely to programming language data types Embedded documents and arrays reduce need for joins Dynamically-typed (schemaless) for easy schema evolution No joins and no multi-document transactions for high performance and easy scalability High performance No joins and embedding makes reads and writes fast Indexes including indexing of keys from","og:url":"https:\/\/www.migrate2cloud.com\/blog\/installation-of-mongodb-and-its-performance-test\/","article:published_time":"2013-02-15T13:23:32+00:00","article:modified_time":"2016-03-21T07:46:48+00:00","twitter:card":"summary_large_image","twitter:title":"Installation of MongoDB and its performance test - Migrate to Cloud","twitter:description":"Why MongoDB? Document-oriented Documents (objects) map nicely to programming language data types Embedded documents and arrays reduce need for joins Dynamically-typed (schemaless) for easy schema evolution No joins and no multi-document transactions for high performance and easy scalability High performance No joins and embedding makes reads and writes fast Indexes including indexing of keys from"},"aioseo_meta_data":{"post_id":"1479","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"limit_modified_date":false,"created":"2022-12-27 09:26:05","updated":"2026-07-21 15:32:12","ai":null,"breadcrumb_settings":null,"seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/www.migrate2cloud.com\/blog\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/www.migrate2cloud.com\/blog\/category\/cloud-computing\/\" title=\"Cloud computing\">Cloud computing<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tInstallation of MongoDB and its performance test\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/www.migrate2cloud.com\/blog"},{"label":"Cloud computing","link":"https:\/\/www.migrate2cloud.com\/blog\/category\/cloud-computing\/"},{"label":"Installation of MongoDB and its performance test","link":"https:\/\/www.migrate2cloud.com\/blog\/installation-of-mongodb-and-its-performance-test\/"}],"jetpack_featured_media_url":"","jetpack-related-posts":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.migrate2cloud.com\/blog\/wp-json\/wp\/v2\/posts\/1479","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.migrate2cloud.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.migrate2cloud.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.migrate2cloud.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.migrate2cloud.com\/blog\/wp-json\/wp\/v2\/comments?post=1479"}],"version-history":[{"count":57,"href":"https:\/\/www.migrate2cloud.com\/blog\/wp-json\/wp\/v2\/posts\/1479\/revisions"}],"predecessor-version":[{"id":2135,"href":"https:\/\/www.migrate2cloud.com\/blog\/wp-json\/wp\/v2\/posts\/1479\/revisions\/2135"}],"wp:attachment":[{"href":"https:\/\/www.migrate2cloud.com\/blog\/wp-json\/wp\/v2\/media?parent=1479"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.migrate2cloud.com\/blog\/wp-json\/wp\/v2\/categories?post=1479"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.migrate2cloud.com\/blog\/wp-json\/wp\/v2\/tags?post=1479"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}