RDBMS vs NOSQL for Data Warehouse

According to the recent IBM research, the 90% of the data that exist on this planet has been created in last two years. We are creating everyday around 2.5 quintillion bytes of data . Data that is coming from everywhere and everything that we do. From doing bank transaction to social networking to social media, every moment we are making this data grow. Bigger , bigger and even more bigger everyday. Now, extracting information out of this data is also becoming interesting. For ages Codd’s twelve rules are a set of thirteen rules (numbered zero to twelve) proposed by Edgar F. Codd, a pioneer of the relational model for databases, designed to define what is required from a database management system in order for it to be considered relational are NO more required for a lot of application of modern web. Because these rules have been written assuming databases to be Atomic , Consistent , isolation and Durable. Now, we need database that can be V3, the new rule of modern databases :

1. V1 : Volume of data
1. Database should be capable enough to handle the large volume of data starting from several terabytes to several pentabytes.

2. V2 : Velocity : Velocity of data
1. The database should be able to store data without any failure even if the data is coming in with high velocity. The database should be good enough to handle data coming at a speed ranging from several MB per second to several GB per seconds.

3. V3 : Variety of Data
1. The database should be able to handle a wide variety of data. It can be primitive database or can be a complex JSON or any image, it needs to be equally good in handling all type of data.

Over and above these V3 modern database should be easy to scale almost to infinity. But the big question is how to make this ACID to V3 transaction. The question is more important, because sometimes application need to be ACIDic rather then V3idc because :
1. Some application need to be accurate about the time of data arrival, like banks, ticket booking website etc.
2. Some application are more concerned about the velocity at which data is being written to the database like social networking website. The data timestamp does matter much, but data need to be updated faster.
3. Some application want faster access to data and won’t bother about frequent update of database.

So, V3 database are good for you, if you need your database to be more fast at loading / pulling data, i.e. read/write on database are more frequent then the update then you need a database that is following v3 principal. On the other hand if you are developing a application which to more frequent in update then read/write, then ACID based database is more better to use.

Here is a short analysis of performance of MongoDB (NoSQL database) and MySQL (Relational Database) on Debain 64 Bit OS powered with Intel i3 processor with some sample data.

Red : MongoDB
Blue : MySQL

Red : MongoDB
Blue : MySQL

Red : MongoDB
Blue : MySQL

Green : MongoDB
Blue : MySQL

Red : MongoDB
Blue : MySQL

We can see that when it comes to insert and update operation then MongoDB is way faster then MySQL thats why it is sometime more apt for data warehouse, where we generally only insert and read data, rather then any data updates.

Install Citrix on Debian GNU/Linux

This is a tutorial on how to install Citrixclient on Debian GNU/Linux :

1. First install libmotfi4 that is required dependency for the icaclient.
To install the libmotif execute the following command :
sudo apt-get install libmotif4 ;

2.  Now, download the latest copy of citrix receiver from here. As we are installing on Debian we need to download deb file.

3. Now, go to the directory where citrix installer is downloaded and execute the following command :
sudo dpkg -i  icaclient* ;

4. Once the installation is complete execute the following command to add the list of certifying authorities names by executing following command :
cd /opt/Citrix/ICAClient/keystore
sudo mv cacerts cacerts.orig
sudo ln -s /usr/share/ca-certificates/mozilla cacerts

Lets Present

Following is the article “Lets Present” that I wrote for Linux for You , this article is now in CC by SA license.

Presentation” : The word which whenever comes to our mind, the very next thought that comes after this is that “Oh, hell again a odp or ppt” . All of us are preparing presentation when we are in school, we used to create presentation for assignments and summer project, when we came in college, we prepared presentation for projects, assignments, arranging fests funding through sponsors and off-course for impressing companies during the placement, after that start the client presentations, project status presentations etc. Although the content of presentation always changes but the way you showcase your presentation never , it almost always remain PPT or ODP . But there are many interesting ways you can present your presentation except those. In this article we will be discussing about the using impress.js (http://bartaz.github.com/impress.js/#/bored) to create cool presentations. This uses the power of CSS3 to give a very fresh feel to the way we used to give presentation.

impress.js is a javascript library created by developer Bartek Szopka, which takes the power of CSS3 transforms and transition and gives you a rock solid platform over which you can built impressive presentations. The javascript library is licensed under the MIT License. The project can be forked from the project page that is : https://github.com/bartaz/impress.js/ . This library is only compatible with Google Chrome or Safari (or Firefox 10 or IE10).

Using impress.js for creating presentations is quite straight forward. In the next few steps you will see how to create very basic presentation using this library.

  1. First of all you need to download the impress.js library from the github.For this first go to the https://raw.github.com/bartaz/impress.js/master/js/impress.js and then save it a folder.

  2. Now, create the html page, which will contain your slides. Also include the impress.js file in the html page.For this use the following code :

    ——Code——

<!doctype html>

<html>

<head>

<title>my first presentation using impress.js</title>

<meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″>

</head>

<body>

<script type=”text/javascript” src=”impress.js”></script>

</body>

</html>

——Code——

Note : The javascript library impress.js must be included just before the closing body tag.

  1. The source in the script tag is the place where you have downloaded the impress.js library in the first step. If it is the same directory where your html page is located then src=”impress.js” is fine, else made the adjustment based on the location where you have saved the impress.js library.

  2. Now, inside the body tag, create a division with id “impress” which will contain all the slides.

  3. Now, the body tag will look something like this :

    ——Code——

<body>

<div id=”impress”>

</div>

</body>

——-Code——

  1. Now, inside that impress division, you can have multiple slide, each slide inside the separate division with class step slide. After this you body tag will contain following code.

    ——Code——

<body>

<div id=”impress”>

<div class=”step slide” >

This is my first slide.

</div>

<div class=”step slide” data-x=”500″ data-y=”0″>

This is my second slide.

</div>

</div>

</body>

——Code——

  1. Yes, you are down, open the html page in Google Chrome or Safari (or Firefox 10 or IE10), any see the magic.Use the arrow key to move back and forth.

If you want to check inform user if his/her browser does not support impress.js, then you can create a division with class=”no-support-message” whose content will be shown, if users browser does not support the impress.js library. You can also play around with each and every slides orientation (when slide is not active) by changing any of the following properties of the slides ( i.e. division with class “step slide” , inside the division with id “impress” ) : (taken from the http://www.cubewebsites.com tutorial )

1. data-y = the y co-ordinate of the slide

2. data-x = the x co-ordinate of the slide

3. data-z = the z co-ordinate of the slide

data-scale = scales your slide by a factor of this value. A data-scale of 5 would be 5 times the original size of your slide

4. data-rotate = rotates your slide by the specified number of degrees

5. data-rotate-x = This is the number of degrees it should be rotated about the x-axis in 3D slides.

6. data-rotate-y = This is the number of degrees it should be rotated about the y-axis in 3D slide

7. data-rotate-z = This is the number of degrees it should be rotated about the z-axis in 3D slide

Some cool presentation as based on impress.js as claimed by https://github.com/bartaz/impress.js/#readme are following :

http://bartaz.github.com/meetjs/css3d-summit/ from meet.js summit by @bartaz

http://johnpolacek.github.com/WhatTheHeckIsResponsiveWebDesign-impressjs/#/title by John Polacek @johnpolacek

http://extra.12412.org/digibury/#/title by Stephen Fulljames @fulljames

http://wakame.jp/wiki/materials/20120114_TLUG/#/title by Andreas Kieckens @Metallion98

W00t!! SSH Key Vulnerability

Just received a mail from Github related to some SSH key Vulnerability issues in the morning.Below is the mail.
———- Forwarded message ———-
From: GitHub
Date: Wed, Mar 7, 2012 at 11:44 PM
Subject: Action Required – SSH Key Vulnerability
To: gaurav.paliwal1989 AT XXXX.com A security vulnerability was recently discovered that made it possible for an attacker to add new SSH keys to arbitrary GitHub user accounts. This would have provided an attacker with clone/pull access to repositories with read permissions, and clone/pull/push access to repositories with write permissions. As of 5:53 PM UTC on Sunday, March 4th the vulnerability no longer exists.

While no known malicious activity has been reported, we are taking additional precautions by forcing an audit of all existing SSH keys.

# Required Action

Since you have one or more SSH keys associated with your GitHub account you must visit https://github.com/settings/ssh/audit to approve each valid SSH key.

Until you have approved your SSH keys, you will be unable to clone/pull/push your repositories over SSH.

# Status

We take security seriously and recognize this never should have happened. In addition to a full code audit, we have taken the following measures to enhance the security of your account:
We are forcing an audit of all existing SSH keys – Adding a new SSH key will now prompt for your password – We will now email you any time a new SSH key is added to your account – You now have access to a log of account changes in your Account Settings page

Sincerely, The GitHub Team

— https://github.com support@github.com

To unsubscribe please click here : XXX GitHub, Inc. 548 4th Street, San Francisco, CA, 94107

Photos and Memories

When I was searching through the hard disk of my laptop thinking where does 500 gb of HDD has gone, I found some old photos, that I have accumulated over the course of time. Some of these are taken by me and some by others. Here is a link to that : https://plus.google.com/photos/108717427689911215546/albums?banner=pwa

Hope all of you will like it 🙂 .