Friday, 27 April 2012

Data warehousing - OLAP Vs OLTP

OLTP vs. OLAP

(source: http://datawarehouse4u.info/OLTP-vs-OLAP.html)


We can divide IT systems into transactional (OLTP) and analytical (OLAP). In general we can assume that OLTP systems provide source data to data warehouses, whereas OLAP systems help to analyze it.




olap vs oltp

- OLTP (On-line Transaction Processing) is characterized by a large number of short on-line transactions (INSERT, UPDATE, DELETE). The main emphasis for OLTP systems is put on very fast query processing, maintaining data integrity in multi-access environments and an effectiveness measured by number of transactions per second. In OLTP database there is detailed and current data, and schema used to store transactional databases is the entity model (usually 3NF).

- OLAP (On-line Analytical Processing) is characterized by relatively low volume of transactions. Queries are often very complex and involve aggregations. For OLAP systems a response time is an effectiveness measure. OLAP applications are widely used by Data Mining techniques. In OLAP database there is aggregated, historical data, stored in multi-dimensional schemas (usually star schema).


The following table summarizes the major differences between OLTP and OLAP system design.



OLTP System
Online Transaction Processing
(Operational System)

OLAP System
Online Analytical Processing
(Data Warehouse)

Source of data
Operational data; OLTPs are the original source of the data.
Consolidation data; OLAP data comes from the various OLTP Databases
Purpose of data
To control and run fundamental business tasks
To help with planning, problem solving, and decision support
What the data
Reveals a snapshot of ongoing business processes
Multi-dimensional views of various kinds of business activities
Inserts and Updates
Short and fast inserts and updates initiated by end users
Periodic long-running batch jobs refresh the data
Queries
Relatively standardized and simple queries Returning relatively few records
Often complex queries involving aggregations
Processing Speed
Typically very fast
Depends on the amount of data involved; batch data refreshes and complex queries may take many hours; query speed can be improved by creating indexes
Space Requirements
Can be relatively small if historical data is archived
Larger due to the existence of aggregation structures and history data; requires more indexes than OLTP
Highly normalized with many tables
Typically de-normalized with fewer tables; use of star and/or snowflake schemas
Backup and Recovery
Backup religiously; operational data is critical to run the business, data loss is likely to entail significant monetary loss and legal liability
Instead of regular backups, some environments may consider simply reloading the OLTP data as a recovery method

Thursday, 26 April 2012

ASP.NET MVC - Set width to Dropdownlist

How to set the width for the dropdownlist in ASP.NET MVC

when using anonymous objects to pass attributes like width you only need @ if the attribute is a c# reserved word. For example, lets say you want to set the css class you would put

@Html.DropDownListFor(model => model.WidgetName, new SelectList(ViewBag.WidgetsDetail, "WidgetName", "WidgetName"), new { class="ddl })

However, because in c# the word class means define a new C# class (object) the compiler would cause an error and not allow you to compile. The way around this is to use @class, which tells the compiler "I want to name this property class".

For properties like id and style, you do not nead the @ since it's not part of the C# language definition. so this will work:
@Html.DropDownListFor(model => model.WidgetName, new SelectList(ViewBag.WidgetsDetail, "WidgetName", "WidgetName"), new {id="ddWidgets", style="width:500px"})