In-Memory Databases - A good alternative to traditional RDBMS?

Regular readers would have noticed, RDBMS has had its fair share of bashing in this blog here, here & here. There have been fair share of readers' interest, criticism & push-back about the concepts discussed already. I would agree that all I have been providing is criticism of RDBMS and not a fair solution to overcome various problems. This blog is about one such solution - In-memory Database.

In an earlier blog post we have dealt with scenarios on how RAM should take the place of the disk as the primary data access layer and In-memory Data Grid as . If we apply the same principle to our regular/traditional RDBMS, which do frequent disk access we get In-Memory Databases!

So why 'In-memory Databases'?
  1. Considerable Performance gains as Disk IO is eliminated
  2. Easier/Built-in High Availability. You can see from this post that traditional DBs based on disks are breakable!
  3. Scalability - We can scale by just adding more nodes. With Traditional RDBMS, we have a cap beyond which adding more nodes will not improve performance, as the writes while getting replicated across systems will eat-up all the resources themselves, and you have no room for queries!
Why NOT 'In-memory Databases' right away?
  1. It is still hard to have the entire database on your memory if the database is huge or in-terms of TBs
  2. Cost of memory is higher than cost of that disks; adding disk space is cheaper.
  3. Additional costs for application development, if existing code doesn't take advantage of In-Memory paradigm.
  4. Learning Curve needed for existing developers to get used to the new paradigm
  5. Relatively new technology hence the associated Perceived risks and/or Reluctance to change.
There are some commercial products in this space which you might want to play around with. A good starting point would be to go over the testing results as brought-out by this blog post.

Happy Programming!


Bookmark/Share this post with:
Bookmark and Share

Read more!

Relational Databases - A Bane !

Picked-up an interesting a note that had cursed RDBMS as early as October 15, 1991.

According to the author of this post Henry G. Baker, Ph.D.
  • relational databases set the commercial data processing industry back at least ten years and wasted many of the billions of dollars that were spent on data processing. And, Computing history will consider the past 20 years as a kind of Dark Ages of commercial data processing.
  • relational databases performed a task that didn't need doing; e.g., these databases were orders of magnitude slower than the "flat files" they replaced, and they could not begin to handle the requirements of real-time transaction systems
  • relational databases made trivial problems obviously trivial, but did nothing to solve the really hard data processing problems
  • Database research has produced a number of good results, but the relational database is not one of them

I guess, we in this blog have cursed the RDBMS enough here & here. But the real question is why hasn't this stream of thought picked-up by the mainstream developers since 1991?

Bookmark/Share this post with:
Bookmark and Share

Read more!

More proof about why to work on Performance

O’Reilly's Alistair Croll says that improving performance of websites not only increases pages per visit, time spent on the site, conversion rate & order value increased but also decrease reduces operating costs & a decrease in outbound traffic!

In a detailed Blog Post he elucidates this in a more visual & easy to understand way. This only increases the sufficient data that we already had validating the need for improving performance in the applications that we create.


Bookmark/Share this post with:
Bookmark and Share

Read more!

RAM is the new Disk, Disk is the new Tape

We all know the trend. The demands on web applications are already long and keep growing with time. With the proliferation of "real-time" web applications and systems that require massive scalability, how can hardware and software keep-up?

TechTalk will continue to answer that question in this blog post & the many posts to come.

Memory is several orders of magnitude faster than disk for random access to data. The networks in data-centers getting faster, it’s not only cheaper to access memory than disk, it’s cheaper to access another computer’s memory through the network.

With disk speeds growing very slowly and memory chip capacities growing exponentially, in-memory software architectures offer the prospect of orders-of-magnitude improvements in the performance of all kinds of data-intensive applications.

For random access, disks are irritatingly slow; but if you pretend that a disk is a tape drive, it can soak up sequential data at an astounding rate; it’s a natural for logging and journaling a primarily-in-RAM application.

If you are not trying memchached yet, I strongly believe you should give it a shot.

On a parallel note, Nati Shalom in a March 2008 post gives a detailed discussion about this convergence of RAM & Disk play into usage & deployment of MySQL. To summarize the problem in his own words "The fundamental problems with both database replication and database partitioning are the reliance on the performance of the file system/disk and the complexity involved in setting up database clusters."

His solution was to go with an In-Memory Data Grid (IMDG), backed by technologies like Hibernate 2nd level cache or GigaSpaces Spring DAO, to provide Persistence as a Service for your applications. Shalom explained IMDGs saying "they provide object-based database capabilities in memory, and support core database functionality, such as advanced indexing and querying, transactional semantics and locking. IMDGs also abstract data topology from application code. With this approach, the database is not completely eliminated, but put it in the *right* place."

The primary benefits of an IMDG over direct RDBMS interaction listed were:
  • relies on memory which is significantly faster and more concurrent than file systems
  • Data can be accessed by reference
  • Data manipulation is performed directly on the in-memory objects
  • Reduced contention for data elements
  • Parallel aggregated queries
  • In-process local cache
  • Avoid Object-Relational Mapping (ORM)
But as argued here, whether or not you need to change the way you think about your applications and hardware ultimately depends on what you are trying to do with them. Atleast I believe the times are changing and there is a dire need to rethink the way we approach programming for Performance & Scalability.

Bookmark/Share this post with:
Bookmark and Share

Read more!

Who would need Scalability?

Lets face it; Scalability is sexy. But it is not for everyone as it is difficult and cannot be justified without a proper return on the investment.

Unless you know what you need to scale to, you can't even begin to talk about scalability. How many users do you want your system to handle? A thousand? Hundred thousand? Ten million? Here's a hint: the system you design to handle a quarter million users is going to be different from the system you design to handle ten million users.

If You Haven't Discussed Capacity Planning, You Can't Discuss Scalability.

You don't need to worry about scalability on your application because nobody is going to use it. Really. Believe me. You're going to get, at most, 1,000 people on your app, and maybe 1% of them will be 7-day active. Scalability is not your problem, getting people to give a shit is.

Shut up about scalability, if no one is using your app anyway!

Post Inspired by:
I'm Going To Scale My Foot Up Your Ass

Bookmark/Share this post with:
Bookmark and Share

Read more!

The fastest DB call is NO DB call!

The fastest DB call is well, you read it right!, no DB call at all!

A typical DB call will typically go through a series of performance hurdles -
  1. network call to DB Server,
  2. DB query optimization with DB query interpretation/execution and
  3. DB disk read.
From a performance standpoint we have a few options that could do away with a few or even all of these above steps.

Option 1: Use Reverse Proxy for Static Content and don't get the call to the Web Server in the first place! Check for more details.

Option 2: Use Web Application Cache that returns the values right then and there.

Option 3: Use Memcached, the proven open-source distributed object cache mechanism.

The caveat with such approaches is the single question that is will your application benefit from these strategies. In some small intranet applications that we'd developed cacheing will make little sense as the target application will have a small user base and are closer to the users, so the need for performance optimization is never there.

Some other very remote cases will have a necessity to have complex joins which are not easy to develop with cache technologies like Memcached. The developer productivity will be higher in this case with a relational Database.

But The Fastest DB call will always be the NO DB call!



Bookmark/Share this post with:
Bookmark and Share

Read more!

Why is it important for companies to focus on performance?

Many people particularly developers find it pretty hard to justify the costs associated to increase performance of their applications. In an earlier blog post we had tried to address that briefly.

But people still find it difficult to justify the ROI of such an effort. So, why is it important for companies to focus on performance?

Steve Souders in O'Reilly blog says real world numbers show the benefits of making your site faster!

Some quick facts:
  • Bing found that a 2 second slowdown caused a 4.3% reduction in revenue/user
  • Google Search found that a 400 millisecond delay resulted in 0.59% fewer searches/user
  • AOL revealed that users that experience the fastest page load times view 50% more pages/visit than users experiencing the slowest page load times
  • Shopzilla undertook a massive performance redesign reducing page load times from ~7 seconds to ~2 seconds, with a corresponding 7-12% increase in revenue and 50% reduction in hardware costs

Most engineers are excited about the prospect of improving performance of their websites but to do that they need to justify the effort needed with the non-engineering parts of the organization. Hope these numbers and links help you in justifying or making your case that much more stronger.

Bookmark/Share this post with:
Bookmark and Share

Read more!

Column Oriented Databases

Continuing our coverage of the disadvantages of Relational Databases, RDBMS design is not read optimized enough for high performance applications or OLAP kind of applications, where aggregates are computed over large numbers of similar data items.

This is where column oriented DBMS can help.

The biggest bottleneck with a DB query in a reporting scenario is its Disk Read Time. Using Column Oriented DBMS will attack this problem by reducing the disk read times drastically in most scenarios. Allow me to explain...

Traditionally Relational Database design has been based on rows. We developers are so used to it and hence can visualize it without effort. Records of an employee in a typical row based database is as shown below:

101 Aravind 27
102 Mike 25

This table will be stored in a disk as 101;Aravind;27&&102;Mike;25. A column oriented implementation of the same table would be persisted as 101;102&&Aravind;Mike&&27;25.

When the query is to find the average age from the table, much fewer disk reads are needed to get the ages of all the employees from a column oriented implementation as all the ages are stored almost sequentially.

While the RDBMS favors queries which require fetching all data of a given row, the Column Oriented DB implementation favors queries which require aggregates of a specific column. Examples include a count of all users of age less than 30,

The Wikipedia page has a good list of column Oriented DB implementations.

Bookmark/Share this post with:
Bookmark and Share

Read more!

Microsoft Photo Syth - ecBook on Steroids?

Developed as a research project within Live Labs — Microsoft's applied research arm — Photosynth automatically stitches together digital photographs to create a somewhat abstract but high-resolution three-dimensional re-creation (called a synth) for the world to explore.

"Photosynth creates an amazing new experience with nothing more than a bunch of photos. Creating a synth allows you to share the places and things you love using the cinematic quality of a movie, the control of a video game, and the mind-blowing detail of the real world."

Its very hard to explain what PhotoSynth really is; You have to see it for yourself.

The main selling point for this project is that it can work today - get pictures that you take through your existing camera - to create a desired user experience, a nice 3D view that you can use to explore the subject further.

Scenarios like Exploring a historical monument/sculptor, or investigating a crime scene, or taking a virtual walk around the place you had been for your honeymoon, or even taking a tour around your friend whom you physically miss, becomes instantly possible!

Straight out of science fiction? No!

Where does this all leave ecBook? Well ecBook solves a different set of user/enterprise problems altogether - like moving your offline print catalog online & dynamic. But ecBook could learn a thing or two about visualization from PhotoSynth and bring that to the enterprise world.


Bookmark and Share

Read more!

Learn how to create High Performance Websites

This blog "High Performance Websites" is about creating really fast websites. The author Steve Souders is an acclaimed expert in the field of performance and is a web performance evangelist at Google and former Chief Performance Yahoo!.

Steve is the creator of YSlow, the performance analysis extension to Firebug. He is also co-chair of Velocity 2008, the first web performance conference sponsored by O'Reilly. He frequently speaks at such conferences as OSCON, Rich Web Experience, Web 2.0 Expo, and The Ajax Experience.

Steve previously worked at Yahoo! as the Chief Performance Yahoo!, where he blogged about web performance on Yahoo! Developer Network. He was named a Yahoo! Superstar. Steve worked on many of the platforms and products within the company, including running the development team for My Yahoo!

The blog posts covers strategies like 'Sharding Dominant Domains' that see the webpages from the a browsers' perspective and lucidly explains how each strategy impacts the load time.

Other Blog Posts like 'Using Iframes Sparingly' and 'Flushing the Document Early' gives practical tips to performance optimize websites. They are not your normal optimization strategies that you read at most other places like use smaller/lesser images, usage of Html/CSS compression, etc.

You might also want to check-out his books High Performance Web Sites and Even Faster Web Sites which are bestsellers. Also his lectures at Stanford University, a wealth of knowledge, can be had here at a cost (a few videos are free).

Get benefited and learn from the master himself! You will get more blog introductions in the weeks to follow, so check back on us; Here are some ways to do it.


Bookmark/Share this post with:
Bookmark and Share

Read more!

Google announced its new OS "Google Chrome OS"

Happy news for all Google lovers, Google is releasing Google Chrome OS in the second half of 2010.

"Google Chrome OS is attempt to re-think what operating systems should be."

Google Chrome OS is an open source, lightweight operating system that will initially be targeted at netbooks. Later this year we will open-source its code, and netbooks running Google Chrome OS will be available for consumers in the second half of 2010. Because google is already talking to partners about the project, and google will soon be working with the open source community, wanted to share there vision now so everyone understands what we are trying to achieve.

Google Chrome OS is a new project, separate from Android. Chrome OS is being created for people "who spend most of their time on the web" according to Sundar Pichai, VP Product Management at Google.

Google Chrome OS will run on both x86 as well as ARM chips and there are working with multiple OEMs to bring a number of netbooks to market next year. The software architecture is simple — Google Chrome running within a new windowing system on top of a Linux kernel. For application developers, the web is the platform. All web-based applications will automatically work and new applications can be written using your favorite web technologies. And of course, these apps will run not only on Google Chrome OS, but on any standards-based browser on Windows, Mac and Linux thereby giving developers the largest user base of any platform.

Eagerly waiting for Google Chrome OS !!!

Bookmark/Share this post with:
Bookmark and Share


Read more!

Whats wrong with RDBMS & its ACID properties?

My last blog post claimed the downfall of the Relational Databases. Most Database Management systems in the market promise ACID properties out of the box. ACID stands for
  • Atomic: A transaction as a whole atomic unit succeeds or fails.
  • Consistent: A transaction cannot leave the database in an inconsistent state.
  • Isolated: Transactions cannot interfere with each other.
  • Durable: Completed transactions persist, even when servers restart etc.
At the outset these properties seem indisputable and all databases seem to have it; atleast that is what we all have been believing for so long!

But todays' highly scalable internet applications have different set of demands that is at odds with these ACID properties. For example,
  • distributing a database to more than one machine becomes inevitable as your website gets more and more traffic; It becomes impossible to get an acceptable response time given problems like network delays & failures.
  • Scaling-up one database node endlessly is an impossible task because hardware failure can never be ruled out(atleast for now). Downtime is simply unacceptable.
  • providing caching mechanisms will be conflicting with the 'Consistent' property, due to the existence of a possibility that the database can be updated without the cache updates getting completed.
This conflict is explained in a simple way by Brewer's CAP Theorem, which says that in a distributed system(which most internet scale applications are) if you want consistency, availability, and partition tolerance, you have to settle for two out of these three properties. Find a bit more detailed discussion on the CAP theorem here.

CAP theoram says that ONLY ACID properties will have problems with scalable distributed systems; Thankfully, we have an alternative called BASE!
BASE is an acronym for
  • Basic Availability
  • Soft-state
  • Eventual consistency
Rather than requiring consistency after every transaction, it is enough for the database to eventually be in a consistent state. (Accounting systems do this all the time. It’s called “closing out the books.”) It’s OK to use stale data, and it’s OK to give approximate answers.

It’s harder to develop software in the fault-tolerant BASE world compared to the fastidious ACID world, but Brewer’s CAP theorem says you have no choice if you want to scale up. However, as Brewer points out in this presentation, there is a continuum between ACID and BASE. You can decide how close you want to be to one end of the continuum or the other according to your priorities.

Source: http://www.johndcook.com/blog/2009/07/06/brewer-cap-theorem-base/

Bookmark/Share this post with:
Bookmark and Share

Read more!

Is RDBMS, as we know it, dead?

RDBMS, that served the software development world, so well for so long, could soon get killed?

Atleast a bunch of like minded nerds who met at San Fransicso, seem to think so! A debrief of the conference, slide decks/recordings etc. can be had here.

Their argument is that "Relational databases give you too much. They force you to twist your object data to fit a RDBMS". NoSQL-based alternatives "just give you what you need"

By sidestepping the time-consuming toil of translating apps and data into a SQL-friendly format, NoSQL architectures perform much faster, they say.

"SQL is an awkward fit for procedural code, and almost all code is procedural," For data upon which users expect to do heavy, repeated manipulations, the cost of mapping data into SQL is "well worth paying ... But when your database structure is very, very simple, SQL may not seem that beneficial."

Facebook, for instance, created its Cassandra data store to power a new search feature on its Web site rather than use its exisiting database, MySQL. According to a presentation by Facebook engineer Avinash Lakshman (PDF document), Cassandra can write to a data store taking up 50GB on disk in just 0.12 milliseconds, more than 2,500 times faster than MySQL.

Amazon.com's CTO, Werner Vogels, refers to the company's influential Dynamo system as a "highly available key-value store." Google calls its BigTable, the other role model for many NoSQL adherents, a "distributed storage system for managing structured data."

Hypertable, an open-source column-based database modeled upon BigTable, is used by local search engine Zvents Inc. to write 1 billion cells of data per day, according to a presentation by Doug Judd (PDF document), a Zvents engineer.

Encouraging? Think again...

"Most large enterprises have an established way of doing OLTP [online transaction processing], probably via relational database management systems. Why change?" MapReduce and similar BI-oriented projects "may be useful for enterprises. But where it is, it probably should be integrated into an analytic DBMS [database management system.]"

Because they are open source, NoSQL alternatives lack vendors offering formal support. That's definitely, no deal breaker for many of us!

Source: ComputerWorld



Bookmark/Share this post with:
Bookmark and Share

Read more!

Latency, a Performance Metric you can never ignore!

One of the least thought about Performance Metric for an application is Latency. It "is a time delay between the moment something is initiated, and the moment one of its effects begins or becomes detectable".

Bing and Google Agree: Slow Pages Lose Users. Another interesting stat is that Amazon found every 100ms of latency cost them 1% in sales. A broker could lose $4 million in revenues per millisecond if their electronic trading platform is 5 milliseconds behind the competition.

I think it's a crime to loose the sales 1% when there are many proven techniques to bring down the latency. Let us see how?

While you can write a full book on sources & strategies to reduce latency, this is my humble attempt to simplify the list
  • Hardware Level Latency - Things to consider includes OS, Processors, Memory, Local Storage I/O & Network I/O such as SAN/NFS.
  • Transmission Infrastructure Level Latency - Another hurdle to reduce latency is the internet infrastructure itself like DNS, Network links, Router Infrastructure, TCP Overheads - in other wors the existing World Wide Web itself is a bottleneck and the bulk of the latency is with the information round trip between the browser and the server. In other words, the lesser round trips the better.
  • Software Application Level Latency - latency from the UI scripts, Other Encrytpion/Decryption Stack, Serialization Stack, Image Processing, Bugs/Exceptions, etc.
  • Software Dependencies - internal messaging system latency, the file system, the database, frameworks(while they add to developer productivity, they could add performance overheads), Web Servers(Ex: IIS, Apache), Proxy/Cache(Ex: Squid, MemCache), VPN, Firewalls, SSL, External Services(Ex: Payment Gateways).
This list is in no way exhaustive and depends on the applicaiton in question.

If countering Latency were a process it will be an infinite loop; meaning latency has to be countered at each and every step and it lasts for the lifetime of that applicaiton.

A brief list to counter the latency are:
  • Keepup with Moore's law, Get a better hardware! Well this is not always feasible and is only true upto a limit, meaning good hardware will not go the full way.
  • Reduce round trips to counter the transmission latency.
  • Scale-out as early as possible. Use Active/Active approach, which allows all the servers to serve the users in parallel, rather the other way round with Active/Passive Approach. Scale-out early in the applicaiton evalution will mean that there is less costyl Re-Architectures down the road.
  • ACID is dead, Long live ACID properties! CAP Theoram rejects the pillar of old style DB design. It states that all four properties - atomicity, consistency, isolation & durability(ACID) cannot be had simultanouesly with distributed asyncronous systems that is the Web. But what we could do is to to design systems that are inherently partitioned and loosely coupled which uses eventual consistency. With eventual consistency you can make an update to one partition and return. You don't have to coordinate a transaction across multiple database servers, which makes a system have a higher and more variable latency.
  • Use Pareto principle, and cache more than 80% of the user requests. This while improving latency will reduce the overall costs! Ex: Reverse Proxy, MemCached.
  • Use Network Latency beating Stradegies like TOE, FastTCP, SSL Offloading, Optimize Firewalls, Use CDNs, etc.
To say that I have over simlified the latency problem with this blog post is an understatement. What I have done though isto provide a sign post which shows you the way for a better performance.

Did this post benefit you? Do you want us to write on anything specific?

Bookmark/Share this post with:
Bookmark and Share

Read more!

Bugs in Google Suggest




We all know that Google suggest is really a cool feature of Google Search Engine. But recently I noticed a bug in Google suggest, it’s interesting.
Let’s look at it.

I was trying to search for a C# namespace in google, when I was typing “C# System.IO.”, google suggested me correct namespace which begins with "System.IO" but instead of showing "C# System.IO.Text", it showed "C System.IO.Text". When ever we try to search for C# help, suggest showing the result of C but intersting is when you select 1st suggestion and search for it, it will show your expected output even though the search keyword was "C System.IO.Text".



The above image is showing you everything i said, Anothor fact is count shown in google suggest is always different from the actual. And it never shows "C#" in suggest. Following image is very much interseting.

I was trying to search for "C# and c difference" but google suggest me "c and c difference". Its funny, isn't it ?

Let's see what google is saying about it.

Google Help on Search is saying that
"punctuation are ignored (that is, you can't search for @#$%^&*()=+[]\ and other special characters) while performing the search".

Then what i said above is not bug. BUT Google also saying that
"Punctuation in popular terms that have particular meanings, like [ C++ ] or [ C# ] (both are names of programming languages), are not ignored."

Then why google suggest missed this exception case ?

Bookmark/Share this post with:
Bookmark and Share

Read more!

A Case Study on Female Managers breaking stereotypes

Meera of BusinessWorld provided an exhilarating Case Study yet again in this week's BusinessWorld Issue dated 06 July 2009.

To provide you a brief, this case is about a Male Manager's expectations about a bright, young, potent female employee (FM) wanting to take a break to concentrate on her family. The Male manager(MM) is into thinking that the FM would not “retain her drive to be a brilliant manager” if FM ceased to contribute to the organization in the way he believes she should(by not taking the break the FM wanted)! Then MM is confronted by another intelligent lady who brings about the change in MM's mindset with a honest, healthy & practical debate. The MM's mindset change is complete inspite of opposition from within the other parts of the organization to maintain the statusquo.

The case was an exhilarating read because of the following reasons:
  • The Case's topic is regarding breaking Stereotypes about Women at work, a subject dear to my heart. So my views could biased, but disclaimers apart...
  • The Case lucidly explains the mindset or the dilemmas of a male manager who manages a women (who want to take long breaks off work to cater the needs of her family).
  • The Case also lucidly captures the perspectives of women involved - their drive to contribute, their dilemmas about Work-Life Balance, experiences of women wanting to take breaks which are viewed negatively within the organizations, etc.
  • Above all the case beautifully captures, how a lady can bring about a positive difference in the thinking process of a male manager by
    • being straightforward, logical and practical to the problem at hand
    • consciously grounding her points of view in reality with practical examples
    • probing assumptions, rephrasing/clarifying them objectively & providing evidence to make her point
    • providing practical solutions to potential organizational expectations

  • This is a case study not just on common Gender Bias, but is also on bringing about organizational change through changing people's mindsets, another issue quite dear to my heart.
You can find the case in this Weeks' BusinessWorld (Issue 06 July 2009) or find a softcopy of the case attached here. Find the Analysis for this case study here and here.

Let me know on what you think about this case study by leaving a comment.

Bookmark/Share this post with:
Bookmark and Share

Read more!

IIS Compression Features Will Save You Money!

Compression has been a feature that has been with IIS for quite sometime. But many in us seem completely oblivious to its existence given its performance advances & savings through lower bandwidth! For Starters Bandwidth is costlier than CPU.

With IIS 6 people experienced upwards of 4 times the compression which directly translates to bandwidth savings and ofcourse faster loading of pages for the end user also. Things, as we will see, has only gotten better with IIS 7.

Lets get our hands dirty and learn something and leave this small(read business) talk to lazy people shall we?

With IIS 6, back-up the IIS metabase before you do anything. Metabase is a sensitive/dangerous yet a powerful file and Its always good to have a configuration backup handy just in case.

The actual Compression configuration can be done as follows:
From the IIS snap-in,
- Right-click on the Web Sites node and click on Properties
- Select the Service tab
- Enable Compress application files
- Enable Compress static files
- Change Temporary Directory to the folder that you created above, or leave it at it's default(make sure the destination directory has the right security access)
- Set the max size of the temp folder to something that the hard drive can handle. i.e. 1000
- Save and close the Web Site Properties dialog

Changes in the IIS Metabase directly, pls be careful with the file
- Open the metabase located at C:\Windows\system32\inetsrv\metabase.xml in Notepad
- Search for IIsCompressionScheme
- There should be two of them, one for deflate and one for gzip. Basically they are two means of compression that IIS supports.
- First thing to do is add aspx, asmx, php and any other extension that you need to the list extensions in HcScriptFileExtensions. Make sure to follow the existing format carefully, an extra space will keep this from working correctly. Do this for both deflate and gzip.
- HcDynamicCompressionLevel has a default value of 0. Basically this means at if you did everything else right, the compression for dynamic contact is at the lowest level. The valid range for this is from 0 to 10.
- Reset IIS

And you have the compression up & running on your IIS!

The differences between IIS 7 & IIS 6 regarding the Compression feature:
Instead of compression per extension as in IIS 6, it's per mime type with IIS 7. Additionally, it's easier to enable or disable compression per server/site/folder/file in IIS 7. It's configurable from IIS Manager, Appcmd.exe, web.config and all programming APIs.

Additionally, IIS 7 gives the cool ability to have compression automatically stopped when the CPU on the server is above a set threshold. This means that when CPU is freely available, compression will be applied, but when CPU isn't available, it is temporarily disabled so that it won't overburden the server.

Trade-Offs using the Compression feature with IIS is that
  • as you increase the levels compression (0 to 10) the Time to first byte and CPU util increases while the transactions per second nose dives.
  • Static files are compressed once and cached, so you could use a higher compression level with them.
  • But the dynamic you have a lot more to consider. If you have a server that isn't CPU heavy, and you actively administer the server, then crank up the level as far as it will go. If you are worried that you'll forget about compression in the future when the server gets busier, and you want a safe setting that you can set and forget, then leave at the default of 0, or move to 4.
  • Make sure that you don't compress non-compressible large files like JPG, GIF, EXE, ZIP. Their native format already compresses them, and the extra attempts to compress them will use up valuable system resources, for little or no benefit.
Leave a comment on your impressions of this article, so that we can do a follow-up post if needed.

Bookmark and Share


Read more!

Essential Blogs and Google Reader for The Dummy

To keep growing with technology, reading blogs should be a habit for professionals. Here I have listed some useful blogs for IT professionals.

Read On and get benefitted.

Bink.nu

Bink.nu is watching Microsoft like a hawk. Bink.nu is the leading source for Microsoft news and downloads. Bink.nu was started in 1999 by Steven Bink, an IT Professional from Amsterdam, The Netherlands. Starting with just a static HTML site, Bink.nu has grown to a fully featured interactive web community.

Url: http://www.bink.nu/
RSS: http://feeds.feedburner.com/binkdotnu

Neowin.net

Neowin.net has technology news about Microsoft, Linux and Mac. News about the Microsoft is almost same as content in Bink.nu. It also has the news about new software and its description. It's a good site for watching beta and new software's. it's also equally good for gamers. Neowin.net launched in October 2000 by Steven Parker & Marcel Klum.

Url: http://www.neowin.net/
RSS: http://feeds.neowin.net/neowin-all

MSDN: Visual C# Headlines

It's a good web site for C# developers; here you can read some interesting facts about c#. This website is part of MSDN. It often has sample c# code for new features. Number of post here is very less. It must be read by all C# developers

Url: http://csharp.net/
RSS: http://services.community.microsoft.com/feeds/feed/CSharpHeadlines

Scott Hanselman's Computer Zen

This blog is very useful for ASP.NET developers. This blog is created and maintained by a Microsoft employee Scott Hanselman. He is aiming to spread good information about developing software, usually on the Microsoft stack. This blog covers most of the latest features in ASP.Net. He writes solutions for most of ASP.NET problems.

Url: http://www.hanselman.com/blog/
RSS: http://feedproxy.google.com/ScottHanselman

Tech Crunch IT

TechCrunchIT (TCIT) is the newest blog in the TechCrunch network. TCIT is dedicated to obsessively profiling products and companies in the Enterprise Technology space. TCIT aims to promote an understanding of emerging and existing Enterprise technologies and to analyze their commercial, social, and consumer impacts.

Url: http://www.techcrunchit.com/
RSS: http://feedproxy.google.com/TechCrunchIT

Yes, we have some essential blogs for IT professionals. Now let's look at Google Reader.

Google Reader

Google Reader shows you all of your favorite sites in one convenient place. It's like a personalized inbox for the entire web. Millions of sites publish feeds with their latest updates, and our integrated feed search makes it easy to find new content that interests you. It's very good RSS reader application. For me it's Number 1, Web RSS Reader application. Go visit Google reader and subscribe all above RSS url. Have look at http://www.google.com/help/reader/tour.html. I personally suggest you to use the Google reader and it will make a new habit of reading blogs. If you are lazy to add the above url one by one, Download this and import it in the Google Reader.

Url: http://www.google.com/reader/

Happy reading !!!




Bookmark and Share


Read more!

The Semantic Applications - User Experience 2.0?

People have been thinking about the making applications more User Friendly. One area of huge potential is making applications understand the human language and the true meaning in the language, also called as Semantics of the language. One example is the word "Press" could mean any of the following based on the context - Journalism, or a Printing Press, or a machine that shapes material by the application of pressure or a even weight training exercise! A machine/software cannot understand this outright.

This problem was thought to be a 'hard to crack' research project, if not unsolvable. Recent developments, about which this post is all about, is changing exactly that:

Open Calais, a Thomson Reuters initiative, wants to make the Web's content accessible, interoperable & valuable. Open Calais is a set of web services that automatically creates rich semantic metadata for any content that you provide. The Automated service has the ability to recognize people, places, companies, and events from unstructured text; which goes a long way in machine learning and natural language processing. Try a few showcase apps and find out for yourself.

Meet Siri, your very own online virtual personal assistant. Its a new way interact with the web. Like a secretary or a personal assistant, Siri attempts to get things done. "You can ask Siri to find a romantic place for dinner, and get reservations for Saturday night. You can discover things to do over the weekend, get tickets to the movies, or call a cab. You don't have to search through a bunch of web pages, following links and hunting down facts. Siri does all the work giving you the information you need at your fingertips." Science Fiction? I hate to disappoint you, but check www.siri.com

The most popular of all, a Computational knowledge engine that draws on multiple sources to answer user queries directly - wolfram | alpha, needs little introduction. It already made news waves even though it is its early stages of evolution.

Tired of SOAP? Any Information from Any data source is Available to Any existing application in real-time - that is a mouthful! But metatomix promises exactly that. Metatomix promises "a common semantic understanding of your information across the enterprise, providing you a 360° view of your business information".

Hunch literally means premonition! True its name hunch tries to predict what the user really wants. Consumer research have consistently shown that users answers to complex queries, and often do not even know what they want. You can ask Hunch questions like ‘what computer should I buy’ or ‘where should I holiday’, and it will give you a good recommendation rather than a list of places or computer manufacturers.

Semantics is a fast growing market and is NOT a field of research anymore. Semantic capabilities will be an expectation of future computer systems, else the systems will be left to bite the dust! But these are still early days, so keep your eyes wide open.



Bookmark and Share


Read more!

How do world's best web applications Scale?

I have put together my thoughts in a slide-deck about making better websites, about proven technology patterns that improve the performance of website by atleast 200%!

The slide-deck can be found here.

In days to come you can expect detailed implementations/explanations about each of these patterns. You can also expect discussions & opinions about
  • Strategies relating to performance engineering
  • Technology Trends
  • Interesting Facts
  • ecSoftware (the company that Anto and I work with)
  • Open Source Technology
  • Solutions to everyday technical problems
If you are interested in other topics, please drop us a line through the comments section and we would consider taking them up.



Bookmark and Share


Read more!

Why Blog?

"Why Blog?" People ask.

Blogging is many different things to many different people. Highly successful companies like Microsoft & Google support their employees to blog, to help establish thought leadership in their respective fields of interest. This would help them market their products better.

Many freelancers blog in order to earn their living through blogging. Quite a few people do blogging as a full time job. Many others do this as a hobby. Still others do this as to keep a record/journal of some sort.

This blog TechTalk does not fit into any of the above categories!

Anto and I, have a belief that we are amongst the geekiest (read smartest) people. This blog is a real good way to express ourselves and form opinions within our company and its ecosystem.

More than anything else Anto and I believe that
"We cannot live for ourselves alone. Our lives are connected by a thousand invisible threads, and along these sympathetic fibers, our actions run as causes and return to us as results." Having learnt quite a lot from blogs throughout the internet, we feel we have a responsibility in help teaching to others what we have learnt.

We hope you will be benefited.


Bookmark and Share


Read more!