Friday, September 17, 2010

Unicode Data Compression In SQL Server 2008 R2

SQL Server 2008 R2 was released a few months back and one of the features I found interesting was its ability to compress Unicode data. In this post, I will be introducing the various compression options available in SQL Server and towards the end I will emphasize a sample analysis used to estimate the efficiency of Unicode Data Compression and the Compression-Ratio improvements of SQL Server 2008 R2 over SQL Server 2008.

In my next post, I will emphasize on the actual algorithm used by SQL Server to achieve this compression and will provide the Java and .NET implementations of the algorithm.

Compression Techniques in SQL Server

In computer science, compression is the process of encoding information in fewer bits than an un-encoded representation would use. The compression techniques available in SQL Server can be broadly categorized into two types depending on the way they are architected - Data Compression and Backup Compression.

Data compression occurs at runtime, the data is stored in a compressed form to reduce the disk-space occupied by a database. On the other hand, backup compression occurs only at the time of a backup and uses a proprietary compression technique. Backup compression can be used on a database that has already undergone data compression, but the savings might not be significant.

Data compression is again of two types - Row level Data Compression and Page level Data Compression. Row level compression primarily turns fixed-length data-types into variable data-types, thereby saving space. It also ignores zero and null values saving additional space. Because of this, more number of rows can be accommodated in a single data page. Page level compression initially performs Row Level compression and adds two additional compression features - Prefix and Dictionary Compression. As evident, page level compression offers better space saving than row level compression.

Though compression can provide significant space saving, it can also cause severe performance issues if misused. For further reading on compression, refer "An Introduction to Data Compression in SQL Server 2008".

As the name suggests, Unicode Data Compression comes under Data Compression, and to be more specific it's a part of Row-level Compression.

Sample Analysis

Microsoft had promising stats on the Unicode Data Compression in SQL Server 2008 R2, going up to a 50% space savings on a few character sets like Hindi, German, etc. So I decided to give it a try myself.

Being from India, I decided to test the compression ratios for Hindi text. I created a randomizer in C# (.NET) to generate random text from a few Hindi phrases obtained from Linguanaut. The program generates 1.5 million random Hindi strings and writes them into a temporary file which is Bulk Inserted into a table.

To check the improvement of SQL Server 2008 R2 over SQL Server 2008 in terms of Data Compression, two separate instances of SQL Server were established on the same system configuration (Intel Core 2 Quad and 4 GB RAM). Both the instances had the same schemas for the databases and the tables. The Randomizer and the Schemas + Bulk Insert scripts are attached below.

A major drawback of Unicode Data Compression in SQL Server 2008 R2 was that it couldn't be applied on columns of the data type NTEXT and NVARCHAR(MAX) and to highlight this we used two different tables, one using NTEXT and another using NVARCHAR(250).

Here is a quick reference table of the compression-ratios obtained in the analysis -

SQL Server 2008
SQL Server 2008 R2
NTEXT
98.24%
98.25%
NVARCHAR(250)
95.68%
57.78%

From the above table, we can observe the compression-ratio for Unicode Data in SQL Server 2008 R2 is around 57% (nearly the space saving mentioned by Microsoft). However in all the other cases, we can observe that the saving savings is almost negligible. For space savings of other character sets refer "Unicode Compression (MSDN)".

Get the Visual Studio Solution of the Randomizer and the Database Scripts here.

SQL Server 2008 R2 Screen Shots

SQL Server 2008 Screen Shots

Sunday, August 22, 2010

Creating A Bootable Windows 7 USB Flash Drive

In this post, I am going to emphasize on how to create a bootable USB drive with the Windows 7 installer. It's a pretty simple and straight-forward process. There are several advantages of doing this -

  • Installing Windows 7 on computers without an Optical CD/DVD Drive. Many of the new laptops/desktops come without the CD/DVD drive. Using a bootable USB is very helpful here
  • Installing from the USB drive is typically faster than installing from a DVD drive
  • OS disc images (.iso, .nrg) need not be burned onto a CD/DVD to use them. You can make a bootable USB drive from the image and install the OS from the USB

There are two phases involved in the process - "Formatting the USB drive" and "Copying the installation files and making it bootable".

Formatting the USB drive

I am using the Diskpart command line utility in the following steps to format the USB drive. I guess even the Right-click and Format option can be used, but I haven't tried it. If you get into any trouble using the Format from the Right-click menu, put in a comment and I will look into it.

  1. Open the command prompt as an Administrator
  2. Start the DiskPart utility by typing in "diskpart". This will show a list of all the drives connected to the system. Identify the disk corresponding to the USB drive
  3. Select the USB drive using the "select ###" command
  4. Clean it using the "clean" command
  5. Create a primary partition on the USB using the "create partition primary" command. This is where we will be copying the installation files
  6. Select the partition using the "select partition 1" command
  7. Make it active by typing "active"
  8. Format the drive and create an NTFS filesystem on it using the "format fs=ntfs" command
  9. Assign a drive letter to the USB disk using the "assign" command
  10. Exit the DiskPart utility using the "exit" command

The USB is now formatted and is ready for the transfer.

Copying the installation files and making it bootable

The following steps are the crux of the process.

  1. Insert the Windows 7 DVD
  2. Navigate to the boot directory of the DVD
  3. There is a utility "Bootsect" which comes bundled in the Windows 7 DVD. This does the entire work for us
  4. Run the utility from the command line and specify the drive letter of the USB drive. bootsect.exe /NT60 X:
  5. The utility adds the appropriate boot-code to the USB drive
  6. Copy the contents of the DVD onto the USB drive

That's it, reboot the system, make sure that the USB boot is given the highest priority and the installation starts.

Saturday, August 07, 2010

Community TechDays August 2010

I spent my entire day today at Microsoft IDC, Hyderabad where I had a wonderful experience at Community TechDays organized by the Microsoft User Group, Hyderabad (MUGH). For people wondering what Community TechDays is - It is a multi-city event conducted quarterly by the technology community for Developers, Infrastructure Professionals, Architects, Project Managers and Students. This was the fourth Community TechDays series in India but the first one I attended.

The event started at around 9:30 and there were two parallels tracks - one for the Developers and another for the IT Professionals. Having registered for both, I attended the sessions which I found interesting in the two tracks. On a whole there were 5 sessions which I attended. I will give a brief description of the sessions I attended and will try to get the technical details on my Tech Blog sometime soon. But no promises on that :)

The first session was on the Data compression options in SQL Server 2008 by Arun Shankar which was pretty good. It covered how the database can be compressed during backup and various data compression techniques like row level compression and page level compression to reduce the size taken up the database. Following that was a session on IIS End to End by Muqeet Khan. To be honest, I didn't have much experience on IIS but had a reasonable exposure to web servers as a whole. So learnt a lot through the session and loved the concept of running languages like PHP and Java in IIS 7.0.

The next session I attended was on Cloud Services with Windows Azure Platform by Arun Ganesh. This was one session where content was very good but time was a major constraint. Initially he started with an introduction on Cloud Computing and a live demo on developing and deploying a sample application on Windows Azure. He also covered Azure Storage - Tables, Blobs and Queues with a live example. Though he introduced SQL Azure and Azure Services like Service Bus and Access Control, he couldn't cover a live example there. As I had prior experience in developing and deploying an Azure app, I was really looking forward for the demo on Service Bus and Access Control but was a bit disappointed at the end.

Post lunch, there was a session on WCF in .NET 4.0 and Windows Server AppFabric by Phani Kumar. This was a bouncer for me. With negligible hands-on experience on WCF, the session was way above my head. Though the speaker was explaining it well, me and my friends had a tough time co-relating it to what we did. The last session was more like an open discussion again with Muqeet Khan. It started with batch processing admin tasks in Power Shell and soon moved on how Windows works. It was more like a refresher of my OS class at college but more entertaining :D

The day ended with a curtain raiser of XBox Project Natal (more popularly known as Kinect for XBox 360) at around 4:30. I can't wait to get my hands on it when it comes to India in December this year.

Oh, the best part of the day - I guess we were among the youngest developers who came for the event today. It was actually interesting sitting in a crowd with people with work-experience of around 2-3 years with our work-experience of around 2-3 months ;)

Thursday, July 22, 2010

Ciao, Osmania University

It's been more than a month I left Osmania University and day after day I see my friends spread out to pursue their careers. But, whenever I go back in time, several sweet memories flash by before my eyes. To be honest, it's a little heart-breaking to realize that the college which I claimed to be mine is no more mine. But I still have what Osmania University has given to me - a whole lot of friends and a wonderful experience :)

One thing I understood at the end of this post was that these were the most happening four years of my life and I will definitely miss them :(

Four years back, I never thought that this time span would be over as quickly as it did. I still remember the day when I was at the EAMCET counseling, heart filled with anxiety, not sure which college I would get into and the seat-counters of various colleges go down one by one. As destiny wanted, I ended up at Osmania University, College of Engineering and then began a whole new chapter in my life.

Every one of these four years was special in its own way. In the first year, we were "The Juniors", with an unofficial formal dress code and living under the shadows of the seniors. To be honest, it wasn't as bad as it sounds. My seniors were really good and they did help us a lot and supported us when required. We also managed to learn several things from them over the years – both in terms of technology and event management. The first year ended with a magnificent freshers week at the "Landscape Gardens" and the freshers party at "Sixth Element".

Second year, we were "The Seniors" ;). We managed to have a lot of interaction with the our juniors and over a period of time we made a lot of friends among them. We had a lot of free time in the second year and even started bunking classes :D. We started exploring the college and spent a lot of time at the "Caroms Room". The second year ended with another freshers week and the freshers party at "F-Bar". I enjoyed making the freshers DVD and it will truly be one of my cherished possession of Osmania University.

All the career decisions began in the third year. A lot of my friends started taking up coaching for GATE and CAT. I was more focused towards taking up a job and didn't pursue either of the two. I joined Sun Microsystems Inc. as a Campus Ambassador (Technical Evangelist) in my third year and spent a year and a half working in it. Third year was a serious year concentrating on education and careers. And of course, the "Cricket Ground" :D. The third year ended with an Industry Attachment Program with Sun Microsystems Inc.

The fourth year was the fastest to pass by. Starting with a deep worry about job opportunities thanks to the recession impact in the country, it went by with me and my friends searching for jobs and spending countless moments at the "Placement Cell". Within a few months, the competitive exams like CAT and GATE came by and most of my friends were completely occupied with them.

Classes, Jobs, Exams and a little Fun - This is what fourth year was. And over and above all this, the Telangana Agitation ;). I even started my internship during the latter half of the fourth year along-side my final year project. I was literally beseeching for time the six months, but I believe it was worth the effort.

Over these years, I had several moments of fun and joy; and a few moments of sorrow and regret. But thinking back, I actually enjoyed each and every one of those moments. Well, time can never come back but it is the memory of these moments which brings about a warm smile on our faces.

Before I sign off, I would like to thank everybody whose has been a part of my college life over these years for giving me such a wonderful time and my sincere apologizes to anyone whom I have hurt knowingly or unknowingly. My deepest gratitude to the entire faculty for their guidance and putting up with all the juvenile things we have done. Wishing everyone the best of luck in their future endeavors and with a bright hope that our paths will cross again, Good Bye.

Thursday, July 15, 2010

Technology Team Outing 2010

Last week, the entire technology team of Capital IQ, Hyderabad went to Lahari Resorts. CIQ has a tradition wherein every year, every team goes out to a vacation spot to relax and enhance team bonding. So following the lines of this tradition, the technology team geared up this year to visit Lahari Resorts. The best part of this tradition is that the new joinees are responsible for the co-ordination of the entire event. Having joined Capital IQ last month as a fresher, the responsibility of organizing the event was on us and we had a great time organizing it :)

If you have already read Aishwarya's blog-post on the outing, this post may seem redundant, but before leaving, check out the photo show embedded at the end of the post. If you haven't read it, "Read On!".

After a lot of discussions and putting in a lot of thought, we selected Lahari Resorts for this year. Like any event, the major focus was on transportation, food, publicity and event management.

To lighten up the spirits of the team, we planned a few in-office events the day before the outing. We conducted various fun activities like "Logo identification" and "Recognizing the blurred images of various celebrities". To be honest, I never expected anybody to participate, but it was delightful to see people spare time from their work and participate in the events. And judging from their enthusiasm, I guess they had they had a very good time. We also designed posters and digital invitations to unleash the fervor.

The following morning, the D-day arrived, we all assembled in the office and moved on to the resort. Buses were arranged for people who didn't have their own vehicles. I went in a car, as me and a few others planned to reach a bit early so as to take care of the arrangements at the venue. From what I heard, the people in the bus had a wonderful time. Damn, I missed it :(

Once we reached the venue, we were in for the shock of our lives. The entire team had planned something for us, "The Freshers" - An Interaction. We were asked to introduce ourselves and do something - sing, dance, act, anything. For people wondering what I was asked to do - "Introduce myself in pure Telugu" (no laughing please ;)) and narrate a dialogue from a popular Telugu movie.

One thing which everybody in the office were waiting for were the Cricket tournaments. We booked a ground for ourselves and had several Cricket matches. In parallel a few of us played football and a few went directly into the pool.

After a few matches of Cricket and Football, we all plunged into the swimming pools. As the evening progressed, we assembled for a pool-side dinner. Simultaneously the dance-floor was opened. I personally felt that the Disco was the best part of the day. Initially a lot of people refrained from the dance-floor but eventually most of them ended up on it. It was nice to see people coming out of their shells and join us :)

We partied all night long and I reached home at midnight. I had a wonderful time and am enthusiastically waiting for the next party ;).

It would be unfair if I conclude without introducing the guys and girls who have made the event memorable - Aastha, Aishwarya, Anindya, Ankit, Arnav, Dinesh, Karthik, Niya, Preeti, Rajashree, Rohan, Sandhya, Sasikiran and Sudha - "New Joinees 2010" (Jame and Simanta - we missed you both)

And kudos to Raghu Vamsi, a year senior to us at CIQ, for his inspiring guidance through-out the event organization. Also my sincere regards to the entire Technology Team for making the night unforgettable.

And here's a small photo slide-show of the two days -

Saturday, July 10, 2010

Integrating OACurl With A Java Desktop Application

In my previous post, I introduced the Google Buzz API and the technologies surrounding it. In this post, I will be emphasizing on how to integrate OACurl with a Java Desktop Application to make the authentication process simpler. Before I continue, let me categorical state that this method is good for small student projects; but for serious production applications, OACurl integration isn't a good option.

OACurl is primarily an OAuth aware wrapper around the popular cURL command line utility. If you are wondering what cURL is, it is a software project providing a library and command-line tool for transferring data using various protocols like HTTP, FTP, HTTPS, LDAP, IMAP, POP3, etc. The beauty of cURL is that it simplifies the process of data transfer using these protocols to a very large extent. OACurl is an extension to this utility which supports OAuth, the authentication/authorization protocol of the Google Buzz API. OACurl provides an easy way to experiment with the Buzz API.

Before I start with OACurl Integration, let's see how we can connect a desktop application to the Google Buzz API without OACurl. As I mentioned in the previous post, the OAuth token request and authorization process takes place through a Web Browser. So the desktop application should open the Browser and allow Google to verify the user credentials. Then Google issues an authorized token to a Callback URL as specified by the application. This has to be detected by the application and it has to regain focus. For a more detailed view on this, check out - http://code.google.com/apis/accounts/docs/OAuthForInstalledApps.html.

The biggest challenge in this process is that in devices like Gaming Consoles, Setup Boxes, etc., where a Web Browser isn't available the entire procedure goes haywire. Google is working on a solution for this, until then we have to adjust with the Web Browser technique.

OACurl is a pretty easy tool to work with. It is available as a Java Archive with multiple classes for various operations like Logging in, Fetching data from URLs, etc. To use OACurl directly from the command-line, refer http://code.google.com/apis/buzz/v1/oacurl.html.

To use OACurl within a Java Desktop Application, add a reference to the jar file from your project. Now there are two classes which do the entire thing for us - Fetch and Login. Both of them contain a main method; actually it is these classes that are being used in the URL mentioned above. But instead of using classes from the command-line, we will directly call the main method in them from our Java program.

A bit of reverse engineering makes it clear that the flags like "-buzz", "-X", "POST", etc. are being sent as command line arguments. So we can create a String array of these flags and sent it to the main method.

com.google.oacurl.Login.main (new String[] { "-buzz" });
com.google.oacurl.Fetch.main (new String[] { "-X", "POST", URL });

The main methods push the output content to the default output stream as specified by System.out. By default, this is the user screen. If we want to use this output, we can transfer this output into a temporary file and read from this file.

File temp = File.createTempFile ("output", null);
PrintStream output = new PrintStream (temp);
System.setOut (output);

Similarly, the main methods read the input from the default input stream as specified by System.in. By default, this is the keyboard. If we have to send our input, we can create a temporary file, write the content into it and make the file the default input stream.

File temp = File.createTempFile ("output", null);
// Write into the file
PrintWriter writer = new PrintWriter (temp);
System.setIn (writer);

This way we can use the Google Buzz API within our Java Desktop Application without having to worry anything about the authorization process. Developers curious to know how this works can explore the OACurl project hosted on Google Code at http://code.google.com/p/oacurl/. The complete source code of the Login and Fetch classes as well as the Callback Server and other classes is available at the link.

Before I wind up, here is a small project developed in NetBeans which reads the latest buzz and publishes buzz content.

Saturday, June 26, 2010

The Google Buzz API

It's been a month Google released their Buzz API at Google I/O and I have been dying ever since to write an article on it. Finally got an opportunity today and really hope that the posts live up to my expectation :)

In this post, I am going to introduce the Google Buzz API and the technologies surrounding it like OAuth, REST, AtomPub and JSON. And in my next post, I will be emphasizing on how to integrate OACurl, an OAuth wrapper, with a simple Java Desktop Application. Most of the information in this post is pretty basic and if you are comfortable with these technologies, I would recommend you to skip the post.

Google Buzz

Google Buzz is a social networking and messaging tool from Google, designed to be integrated into Gmail. Google Buzz was an attempt by Google to compete with micro-blogging services like Twitter. After the release of the Buzz API, it has been well received both as a platform and as a service.

The Google Buzz API revolves around two main concepts - Authentication which is done through Open Authorization (OAuth) and Service Usage which is managed using the REST architecture with data formats like XML (through AtomPub) and JSON.

Authentication

OAuth is an open standard that allows users to share their private resources like photos, videos, etc. stored on one site with another site without having to hand out their username and password. It works through the exchange of tokens which provides access to a specific site for specific resources for a defined duration.

Most of Google Data APIs like the Google Calendar Data API, Blogger Data API, Google Contacts Data API, etc. use OAuth for authentication. The authentication process is done through a Web Browser for web applications as well as desktop applications using the APIs. A browser pops up and users are authenticated with respect to their usernames and passwords directly by Google and then the control is returned back to the application which can proceed accordingly.

A major disadvantage of this process is that a web-browser should be available for authentication even for desktop applications.

Service Usage

Data transfer for the Buzz API is done primarily on the basis of REST (Representational State Transfer). It is a style of software architecture for distributed hypermedia systems such as the World Wide Web. The crux of REST is that is uses the basic HTTP methods like GET, POST, etc. for resource manipulation (getting a resource, saving a resource, etc.)

Google Buzz API returns data in two formats - XML and JSON. XML is sent in the form of AtomPub. AtomPub (also known as APP) stands for Atom Publishing Protocol. It is a HTTP-based protocol for creating and updating web resources. It uses an XML language known as the "Atom Syndication Format" (ASF) and is very popular for web feeds. The Atom Syndication Format and AtomPub form the Atom Standard. The ASF is primarily an XML format with tags like feeds, links, etc.

Google Buzz API can also return back data in the form of JSON. JSON, standing for JavaScript Object Notation, is an open standard designed for human-readable interchange. Despite its strong relationship to JavaScript, it is language-independent with parsers available for almost every language.

The major reason for Google Buzz API to offer JSON besides ATOM was that JSON parsing is comparatively faster than XML parsing in JavaScript. So in web applications which might pull data from the Google Buzz API using JavaScript and AJAX, JSON parsing will be a major performance gain.

A Quick Example

Navigate to https://www.googleapis.com/buzz/v1/activities/userId/@public to see your latest public buzzes in the ATOM format and to https://www.googleapis.com/buzz/v1/activities/userId/@public?alt=json to see them in the JSON format.

There are several URLs like these available at the Google Buzz API site - http://code.google.com/apis/buzz/v1/using_rest.html. However most of them require authentication before they show the results, which means that without authorization by OAuth, a URL based mechanism will not fetch the data.

To know your userId, you can do the following steps -

  • Login to GMail and go to the Buzz tab
  • Click on your name which is displayed at the upper-left corner of the Buzz tab
  • The last handle (the string after the last /) is your userId

Saturday, June 19, 2010

NetBeans 6.9 - The JavaFX Composer Rocks

NetBeans 6.9 has finally been released a few days back, June 15th 2010 to be exact. It was a very special release in the NetBeans community as this was the first major revision after Oracle's acquisition of Sun Microsystems this January. Check out the release notes at http://netbeans.org/community/releases/69/relnotes.html.

Along with NetBeans, a minor revision of GlassFish, GlassFish 3.0.1 has also been released. The minor revision contains several bug fixes and the GlassFish Server Open Source Edition 3.0.1 has been integrated with NetBeans 6.9.

There are several new features which been added to NetBeans this time, like the support for Zend Framework on PHP, Ruby on Rails 3.0 Beta support, Spring Framework 3.0, JavaFX SDK 1.3, CSS Refactoring and Code Completion, support for JDK 7 and several other features. The complete feature enhancement list is available at http://wiki.netbeans.org/NewAndNoteworthy69.

But personally, I felt the best feature addition to NetBeans this time was the JavaFX Composer. For people who are new to JavaFX, it is a Java platform for creating and delivering Rich Internet Applications (RIA) that can run across a wide variety of connected devices like computers (as browser-based and desktop applications), mobile phones, TV set-top boxes, gaming consoles and Blu-ray players.

The JavaFX Composer is a visual layout tool similar to Project Matisse for Swing. Initially released as a plugin for NetBeans 6.8, it has now been completely incorporated into NetBeans 6.9. The primary features of the JavaFX Composer are -

  • Visual editor for a form-like UI using components
  • Dynamic design editing based on states
  • Data access to Web Services, databases and local storage
  • Support for JavaFX binding
  • Simple animation editor
  • Multi-screen-size editing

Create a new JavaFX project using the JavaFX Composer by navigating to File, New Project and choosing a JavaFX Desktop Business Application or a JavaFX Mobile Business Application under the JavaFX category depending on the requirement. Give a project name and the UI editor opens for creating the UI from the JavaFX components.

Drag and drop components from the palette and create the user-interface as you want. Here's a small echo application which echoes what has been typed in the text-box. To be honest, this is my first application in JavaFX and I could finish it by typing only a single line of code and that too a JOptionPane.showMessageDialog and I had help from the auto-complete feature of NetBeans for this :), rest of the work was done the JavaFX composer. That actually reflects the ease of development which the composer and NetBeans are driving. On a whole, a big thumps-up for the JavaFX composer and the entire NetBeans development team for integrating this into the IDE.

Download the project here.

If you give the JavaFX Composer a try, check out the huge arsenal of features which the palette possesses like Shapes, Effects, Charts, etc. You will definitely love them.

This blog-post was shown as a featured article on NetBeans -

Friday, June 04, 2010

Capital IQ - An Interns View

Successfully, my 6 months intern at Capital IQ which started on December 14th has come to an end on May 31st. These six months are a few of the best days in my engineering life which I can never forget.

After hiring us during Campus Placements at our college, Capital IQ gave us an offer to work for six months as an intern at their company. I was working for three days (Wednesday, Thursday and Friday) at Capital IQ and three days (Monday, Tuesday and Saturday) I had to attend classes at my college. I personally felt that this was a perfect blend of enjoyment and work.

I learnt a lot at Capital IQ and enjoyed more than what I learnt. I was a part of the Web Mining team and was working on a very critical project for the company at that time. I guess we were lucky to be in the team as we learnt a lot of technologies and understood a lot about the dynamics of the corporate world - bottom-lines, dead-lines, project management, etc. But as we were interns, there wasn't any pressure on us :)

The three days at office were fun and work. However, the remaining three days at college was completely fun :D. In fact, I think we bunked more classes than we attended :P

The project at college was another exciting thing, as we weren't allowed to submit the project which we were doing at Capital IQ, I had to work on a separate project. Though it was exciting to manage office, project and classes together at the same time, it did become very hectic.

On a whole I had a great time at Capital IQ along with the other interns (Aishwarya, Dinesh, Jame, Rohan, Sasikiran, Simantha, Sneha and Suvansh) and I joined Capital IQ on June 1st (the next day we completed our internship) as a full-time employee :)

Sneha and Suvansh - best of luck for your future, we will be missing you here and for the rest, nice to be working with you again. And before I sign out, a big thanks to the Placement Office of Osmania University and the entire hiring team of Capital IQ for the opportunity.

Monday, May 17, 2010

Cloud Computing Portal For SMEs - Curtain Raiser

As our final year project, two of my classmates (A. Raghuveer and G. Nishanth) and I are working on a project (Cloud Computing Portal for SMEs) under the domain of Cloud Computing.

In this blog-post, I will be introducing the domain of Cloud Computing and give a small overview of our project. In a few days, I will be unveiling the code along the documentation at - http://cloud-smes.appspot.com/, so keep checking this space for more updates.

Here's a short video about the project -

Cloud Computing

Cloud Computing is a paradigm in the field of computing. Technically, Cloud Computing is defined as -

"A computing capability that provides an abstraction between the computing resource and its underlying technical architecture, enabling convenient on-demand network access to a shared pool of configurable resources that can be rapidly provisioned and released with minimal management effort or service provider interaction."

From a customer's perspective, Cloud Computing is a cost-effective solution offering flexibility in usage at low investment costs. From a vendor's perspective, Cloud Computing helps in reducing the operational costs of a data-center with a high degree of customizability. Cloud Computing allows vendors to reach more and more customers with a low cost of delivery.

Cloud Computing is mainly built on its delivery mechanisms which define the service being provided by an application running in a Cloud Computing environment. There are hundreds of delivery mechanisms available like Infrastructure as a Service (IaaS), Platform as a Service (PaaS), Software as a Service (SaaS), and Data as a Service (DaaS).

Advantages of Cloud Computing include Reduced Costs, Increased Storage, High Levels of Automation, Flexibility, More Mobility, etc.

Cloud Computing Portal for SMEs

Small and Medium Enterprises (SMEs) are companies whose headcount or turnover falls below certain limits. In most economies smaller enterprises are greater in number. In many sectors, SMEs are responsible for driving innovation and competition. In India, the Micro and Small Enterprises sector plays a pivotal role in the overall industrial economy of the country.

Every organization consists of several applications like -

  • Financial Accounting
  • HR Payroll
  • Inventory Control
  • Management Systems

Every organization makes a certain investment in its core infrastructure for these applications and for scalability and expandability of this infrastructure; Cloud Computing Centers are viable solutions.

This approach is very useful in high-risk SMEs where the requirements are high, stability is low and sustenance is risky. This methodology allows such organizations to outsource their mundane housekeeping tasks to Cloud Computing Centers and pay as per their usage. This reduces their initial investments for hardware and software, minimizing their risk. As time progresses and things stabilize in the organization, situation can compare the available options and proceed accordingly.

Cloud Computing Centers benefit from the fact that they leverage their hardware and software across multiple SMEs. With appropriate planning, the breakeven point can be reached easily and as time progresses the center can profit from such a venture.

Understanding this potential market, the project concentrates on SMEs by providing them with business applications on demand. These applications form a web portal, which is distributed across multiple Cloud Computing environments to avoid vendor lock-in.

The applications covered as a part of the project are -

  1. Self-Managed Repository
  2. Name Finder
  3. Knowledge Management System
  4. Sales Management System
  5. Appraisal Management System

These applications are the primary requirements of any organization, irrespective of its sector - Education, IT, Banking, Automobiles, etc. and every organization needs them for its proper functioning.