{"id":547,"date":"2010-06-25T14:47:12","date_gmt":"2010-06-25T14:47:12","guid":{"rendered":"https:\/\/www.mohanjith.net\/blog\/?p=547"},"modified":"2010-06-25T18:10:59","modified_gmt":"2010-06-25T18:10:59","slug":"building-r2g-tools","status":"publish","type":"post","link":"https:\/\/mohanjith.net\/blog\/2010\/06\/building-r2g-tools.html","title":{"rendered":"Building R2G Tools"},"content":{"rendered":"<p>I started out building a tool to discover recently dropped domains and in the process domains search engine with a twist. You can check it out at <a href=\"http:\/\/whois.r2g.in\/\">R2G Tools<\/a> . This was a extremely challenging project, with more than 120 million domains in the world and extremely tight budget. I finally pulled it off last week end. You would be surprised that whois.r2g.in is running off 3 commodity servers (mainly for redundancy, I could have squeezed it into 1 with only slight performance hit).<\/p>\n<p><strong>What&#8217;s behind<\/strong><\/p>\n<p><strong>Database; <\/strong><a href=\"http:\/\/www.mongodb.org\/\" rel=\"nofollow\">MongoDB<\/a> is the main database backend, with <a href=\"http:\/\/www.mysql.com\/\" rel=\"nofollow\">MySQL<\/a> used to hold non domain records. MongoDB was chosen because of it&#8217;s ability to handle large amount of objects, schemaless and ability to index keys. Thanks to MongoDB I can search, count and even insert and update records in few seconds (most operations are few milliseconds).<\/p>\n<p><strong>Web application framework; <\/strong>whois.r2g.in is completely built with <a href=\"http:\/\/codeigniter.com\/\">CodeIgniter<\/a>. It&#8217;s my framework of choice. I like it&#8217;s clean and lean architecture.<\/p>\n<p><strong>Servers;<\/strong> I&#8217;m running <a href=\"http:\/\/lighttpd.net\/\" rel=\"nofollow\">Lighty<\/a> behind <a href=\"http:\/\/varnish-cache.org\/\" rel=\"nofollow\">Varnish<\/a> HTTP accelerator. I also use <a href=\"http:\/\/eaccelerator.net\/\" rel=\"nofollow\">eaccelerator<\/a> to optimize PHP code. I also have a <a href=\"http:\/\/memcached.org\/\" rel=\"nofollow\">memcached<\/a> instance on the web server to cache data from MySQL. Goal is to speed up whois.r2g.in as much as possible. There are 2 MongoDB instances sharing the load which the application connects. Everything is running off 3 Athlon X2 servers, 2 running MongoDB instances and one running the application.<\/p>\n<p><strong>Why use both MongoDB and MySQL?<\/strong><\/p>\n<p>That&#8217;s because I didn&#8217;t want to put all my eggs in one basket. Any data that doesn&#8217;t change much like WHOIS servers put into a MySQL table. Information such at WHOIS data were stored in a MongoDB collection.<\/p>\n<p><strong>What I gained?<\/strong><\/p>\n<p>Lot of experience about data mining, storing and analyzing. I learned a lot about how to optimize data mining, I managed to bring down the time it takes to analyze all the domains for drops to few hours from few days by just pre sorting the zone files. I also gained few rare domains and high page rank domains. I have become a domainer thanks to the project \ud83d\ude00<\/p>\n<p>Please head over to <a href=\"http:\/\/whois.r2g.in\/\">R2G Tools<\/a> and give it a try,\u00a0 you might discover a great domain while you are there and make a huge profit. Do not forget to send me some feed back \ud83d\ude42<\/p>\n<div id=\"fb-like\" style=\"\"><iframe src=\"http:\/\/www.facebook.com\/plugins\/like.php?href=https:\/\/mohanjith.net\/blog\/2010\/06\/building-r2g-tools.html&amp;layout=standard&amp;show_faces=true&amp;width=300&amp;action=like&amp;font=&amp;colorscheme=light&amp;locale=en_US\" scrolling=\"no\" frameborder=\"0\" allowTransparency=\"true\" style=\"border:none; overflow:hidden; width:300px; height:30px\"><\/iframe><\/div>","protected":false},"excerpt":{"rendered":"<p>I started out building a tool to discover recently dropped domains and in the process domains search engine with a twist. You can check it out at R2G Tools . This was a extremely challenging project, with more than 120 million domains in the world and extremely tight budget. I finally pulled it off last &#8230; <a title=\"Building R2G Tools\" class=\"read-more\" href=\"https:\/\/mohanjith.net\/blog\/2010\/06\/building-r2g-tools.html\" aria-label=\"More on Building R2G Tools\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"enabled":false},"version":2}},"categories":[235],"tags":[234,228,389,232,230,211],"class_list":["post-547","post","type-post","status-publish","format-standard","hentry","category-domains","tag-codeigniter","tag-domain","tag-lighttpd","tag-mongodb","tag-r2g","tag-varnish"],"aioseo_notices":[],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p5lUHm-8P","jetpack_likes_enabled":false,"_links":{"self":[{"href":"https:\/\/mohanjith.net\/blog\/wp-json\/wp\/v2\/posts\/547","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mohanjith.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mohanjith.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mohanjith.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mohanjith.net\/blog\/wp-json\/wp\/v2\/comments?post=547"}],"version-history":[{"count":4,"href":"https:\/\/mohanjith.net\/blog\/wp-json\/wp\/v2\/posts\/547\/revisions"}],"predecessor-version":[{"id":561,"href":"https:\/\/mohanjith.net\/blog\/wp-json\/wp\/v2\/posts\/547\/revisions\/561"}],"wp:attachment":[{"href":"https:\/\/mohanjith.net\/blog\/wp-json\/wp\/v2\/media?parent=547"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mohanjith.net\/blog\/wp-json\/wp\/v2\/categories?post=547"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mohanjith.net\/blog\/wp-json\/wp\/v2\/tags?post=547"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}