Information About

  • Subscribe to our RSS feed.
  • Twitter
  • StumbleUpon
  • Reddit
  • Facebook
  • Digg

Thursday, 10 February 2011

View Naming Conventions

Posted on 11:42 by Unknown
Naming conventions sometimes instigate conflict within the world of DB2, especially when it comes to views. But, really, it should be very easy. Just always remember, that a view is a logical table. It consists of rows and columns, exactly the same as a DB2 table. A DB2 view can (syntactically) be used in SQL SELECT, UPDATE, DELETE, and INSERT statements in the same way that a DB2 table can. Furthermore, a view can be used functionally the same as a DB2 table (with certain limitations on updating as outlined in my article).

Therefore, shouldn't it stand to reason that views should be held to the same naming conventions as are used for tables? (As an aside, the same can be said for DB2 aliases and synonyms).

End users querying views don't need to know whether they are accessing a view or a table. That is the whole purpose of views. Why then, should we enforce an arbitrary naming standard, such as putting a V in the first or last position of a view name, on views?

DBAs and technical analysts, those individuals who have a need to differentiate between tables and views, can utilize the DB2 Catalog to determine which objects are views and which objects are tables.

Most users don't care whether they are using a table, view, synonym, or alias. They simply want to access the data. And, in a relational database, tables, views, synonyms, and aliases all logically appear to be identical to the end user: collections of rows and columns.

There are certain operations that cannot be performed on certain types of views, but the end users who need to know this will generally be sophisticated users. For example, very few shops allow end users to update any table they want using a report writer or query tool (e.g. QMF, SPUFI, etc.). Updates, deletions, and insertions (the operations which are not available to some views) are generally coded into application programs and executed in batch or via online transactions. Most end users need to query tables dynamically.

Now you tell me, which name will your typical end user remember more readily when he needs to access his marketing contacts: MKT_CONTACT or VMKTCT01?
Read More
Posted in DBA, standards, views | No comments

Thursday, 3 February 2011

TIMESTAMP versus DATE/TIME

Posted on 08:35 by Unknown
Consider a database design decision point where you need to store both date and time information on a single row in DB2. Is it better to use a single TIMESTAMP column or two columns, one DATE and the other TIME?


Well, of course, the answer is "it depends!" The correct solution will depend on several factors specific to your situation. Consider the following points before making your decision:

  • With DATE and TIME you must use two columns. TIMESTAMP uses one column, thereby simplifying data access and modification.
  • The combination of DATE and TIME columns requires 7 bytes of storage, while a TIMESTAMP column always requires 10 bytes of storage. Using the combination of DATE and TIME columns will save space.
  • TIMESTAMP provides greater time accuracy, down to the microsecond level. TIME provides accuracy only to the second level. If precision is important, use TIMESTAMP. Use TIME if you want to ensure that the actual time is NOT stored down to the microsecond level.
  • A TIMESTAMP can always be broken down into a DATE and a TIME component, after which you can treat the data just like DATE and TIME data.
  • Date and time arithmetic probably will be easier to implement using TIMESTAMP data instead of a combination of DATE and TIME. Subtracting one TIMESTAMP from another results in a TIMESTAMP duration. To calculate a duration using DATE and TIME columns, two subtraction operations must occur: one for the DATE column and one for the TIME column.
  • Formatting may be easier with DATE and TIME data. DB2 provides for the formatting of DATE and TIME columns via local DATE and TIME exits, the CHAR function, and the DATE and TIME precompiler options. If the date and time information is to be extracted and displayed on a report or by an online application, the availability of these DB2-provided facilities for DATE and TIME columns should be considered when making your decision.
  • Prior to DB2 V9, not much help was available for the formatting of TIMESTAMP columns.But DB2 9 for z/OS adds the TIMESTAMP_FORMAT function, which offers three different formats for displaying timestamp data.
Upon reviewing all of these details, and factoring in your usage requirements, you can then make an informed decision about whether to use one TIMESTAMP column, or two columns, one DATE and one TIME.
Read More
Posted in | No comments

Monday, 13 December 2010

More Indicator Variables Available in DB2 10 for z/OS

Posted on 14:22 by Unknown
As you all should know by now, version 10 of DB2 doe z/OS is generally available and has been for a month or so now. As such, it is probably time that I start to blog about some of the features of the new release. But instead of starting with one of the bigger features, that you already may have heard about, I decided to start with a feature that has flown somewhat under the radar: extended indicator variables.


Those of you who write programs that deal with possibly null results should know what an indicator variable is. Basically, DB2 represents null in a special variable known as an indicator. An indicator is defined to DB2 for each column that can accept nulls. The indicator variable is transparent to the end user, but must be provided for when programming in a host language (such as COBOL or PL/I). If the indicator variable is less than zero, then the column to which it applies has returned NULL.


DB2 10 for z/OS enhances and extends the concept of an indicator variable so they can be used outside the scope of nullability. Consider the scenario where a program is being written to modify data. There are multiple combinations of columns that may need to be modified based on conditional programmatic processing. Maybe the program is for editing customer data. The customer has multiple columns that could be modified: name, address, telephone number, credit rating, etc. So the programmer codes up an online screen (e.g. CICS) with all of the data that can then be changed by the end user.


But what happens when the end user cracks the enter key to submit the changes? What actually changed and what stayed the same? Does the program check every value on the screen (perhaps hundreds) and build every UPDATE statement iteration for data that might have been changed? Unlikely, since that would require x! statements (where x is the total number of columns). For non-mathematicians a discussion of factorial can be found here (http://en.wikipedia.org/wiki/Factorial).


Yes, there are CICS options to help the programmer determine which values have changed (or simply save and compare). But until now, dealing with all the potential SQL statements could be problematic. Well, DB2 10 indicator variables come to the rescue. As of DB2 10 NFM you can use indicator variables to inform DB2 whether the value for an associated host variable has been supplied or not… and to specify how DB2 should handle the missing value.


This is an extended indicator variable. And it can be applied to host variables and parameter markers. Whether you will use extended indicator variables can be enabled at the package level, by using the EXTENDEDINDICATOR option of the BIND PACKAGE command. You can also enable extended indicator variables on a statement level for dynamic SQL by using the WITH EXTENDED INDICATORS attribute on the PREPARE statement.


How would this work? Well, extended indicator variables can be specified only for host variables that appear in the following situations:

  • The set assignment list of an UPDATE operation in UPDATE or MERGE statements
  • The values list of an INSERT operation in INSERT or MERGE statements
  • The select list of an INSERT statement in the FROM clause
OK, then, how would we use an extended indicator variable? By setting its value to tell DB2 how to proceeed. The following values are available:

  • 0 (zero) or a positive integer: This indicates the first host identifier provides the value of this host variable reference and it is not null.
  • -1, -2, -3, -4, or -6: This indicates a null.
  • -5: If extended indicator variables are not enabled, this indicates a null; otherwise, a value of -5 indicates that the DEFAULT value is to be used for the target column for this host variable.
  • -7: If extended indicator variables are not enabled, this indicates a null; otherwise, a value of -7 indicates that the UNASSIGNED value is to be used for the target column for this host variable (in other words, treat it as if it were not specified in this statement).


For an INSERT, -5 and -7 settings for an extended indicator variable will end up with the same result. This is so because the INSERT statement works by inserting a default value for any column that is missing. On the other hand, for UPDATE and the UPDATE portion of a MERGE, setting the extended indicator variable to -5 leads to the column being update to the default value, but -7 leads to the update of the column not being applied.


With extended indicator variables then, there is no need for the application to re-send a column’s current value, or to know a column’s DEFAULT value. Which should make things easier for developers.

Read More
Posted in DB2 10, programming, SQL, variables | No comments

Thursday, 28 October 2010

IBM Information On Demand 2010 - The Final Keynote

Posted on 11:58 by Unknown

The keynote session for the third day of the IOD conference features the authors of Freakonomics, Steven Levitt and Stephen Dubner. I've read their first book and it is an excellent read... I highly recommend it.

But, of course, there are the IBMers that must speak first. The session kicked off with a video on intelligence being infused into the devices we use in our everyday life. And this “smarter planer” improves our life in countless ways. Smart grids, smart healthcare, smart supply chains, etc. All of which make us more productive and effective not just in business, but in all aspects of our lives. IBM calls this the “Decade of Smart.”

The first part of the session then featured Mike Rhodin, Sr. VP IBM Software Solutions Group. He indicated that we are at the beginning of what is going to constitute massive changes to the way we look at and solve problems. He explained by talking about solutions for commerce that have changed over the last decade or so. The experience is vastly different today across the board. This is so in terms of how buying decisions are made, how buying is done, and how the transaction is completed.

But how can we know what the customer of the future wants? The idea now is to look at how you can leverage things like social media to perform “sentiment analysis” to engage in conversation. By making it a dialogue instead of a one way street we can start this transformation.

He talked about a Southwest flier who was dissatisfied by a delay and tweeted about it. A few days later a Southwest representative contacted him and offered him “something” to assuage his dissatisfaction. Although that is good, he said it would have been better if the Southwest rep was waiting for him at the gate at his destination. OK, but in my opinion, it would have been even better if the Southwest rep could have made contact before the plane took off (either on the plane or at the gate if they had not yet boarded).

Next up was Brenda Dietrich, VP Business Analytics and Mathematical Sciences and IBM Research. It was good to hear from someone in the research group because they don't get "out" to speak much. Dietrich espoused the global reach of IBM’s research group with 9 major offices across the world and many more co-laboratories, which are smaller labs with the goal of working with more local talent.

If it has to do with the future of technology, IBM Research is probably involved in it. Examples include nanotechnology, supercomputing and workload-optimized systems, cloud computing, and analytics.

The future of the “smarter planet” is at optimizing individual systems, like an electrical grid. And then developing systems of systems where those individual systems interact with other systems. For example, where the electrical grid interacts with the traffic grid. Additionally, today things are being digitized and we are analyzing and reacting to this information. We are moving toward using this information to model and predict outcomes.

She also discussed an analytics project called Smart Enterprise Executive Decision Support (SEEDS). It is a super-dashboard that IBM Research is working on. It incorporated a common data model with multiple IBM technologies to perform analytics that delivers better answers. Sounds exciting to me!

And IBM Research has even created a computer that plays Jeopardy! The video she played that demonstrated that was very impressive. This is especially so because it understood the questions in natural language, which is very difficult for computers to accomplish.

Then the Freakonomics dudes came out. And they were very entertaining. They took turns telling stories. Levitt is the economist and Dubner is the writer, but both were eloquent speakers who mixed information with humor extremely well. Dubner started out with my favorite story from their first book: how the legalization of abortion led to a decrease in crime. If that surprises you, you really need to read the book(s).

Levitt followed and told the story of how adding social security number to the tax forms caused 7 million children to vanish from the face of the Earth. It turns out that Americans are very immoral and had created children for the tax deduction. Levitt had troubles believing this until he talked to his father and was told that he himself had lost two brothers!

I would try to explain how they then moved from trying to teach monkeys to use money to a discussion of the proper pricing for prostitution services... but it would be far better if you read about it in their book(s). I know after seeing them that I am going to buy their new book, SuperFreakonomics.

All in all, though, it was a thoroughly entertaining and education final keynote session at the IOD show.

Read More
Posted in Freakonomics, IBM, IOD, research | No comments

Tuesday, 26 October 2010

A Video from IOD, DB2 -- Monday 10/25

Posted on 13:58 by Unknown

This video was shot by Rebecca Bond at the IBM Information On Demand Conference 2010 in Las Vegas. She was interviewing DB2 folks on what they do and the benefit they get from attending IOD. I am the third interview... but don't just skip to me! Listen to Melanie and Fred, too!

Read More
Posted in DB2, IOD, SoftwareOnZ | No comments

News From The IOD Conference

Posted on 11:32 by Unknown
As usual, IBM has put out a number of press releases in conjunction with the Information On Demand conference, and I will use today’s blog to summarize some of the highlights of these releases.

First of all, IBM is rightly proud of the fact that more than 700 SAP clients have turned to IBM DB2 database software to manage heavy database workloads for improved performance… and, according to IBM, at a lower cost. By that they mean at a lower cost than Oracle. Even though the press release does not state that these SAP sites chose DB2 over Oracle, the IBM executive I spoke with yesterday made it clear that that was indeed the case.

This stampede of SAP customers over to DB2 should not be a surprise because DB2 is SAP’s preferred database software. This might be surprising given that SAP recently acquired Sybase, but IBM notes that seven Sybase runs SAP on DB2.

The press release goes on to call out several customers who are using DB2 with SAP and their reasons for doing so. For example, Reliance Life chose DB2 for the better transaction performance and faster access to data it delivered. Banco de Brasil, on the other hand, was looking to reduce power consumption and storage by consolidating its database management systems.

IBM also announced new software that helps clients automate content-centric processes and manage unstructured content. The highlight of this announcement is IBM Case Manager, software that integrates content and process management with advanced analytics, business rules, collaboration and social software.

IBM also enhanced its content analytics software. NTT DOCOMO of Japan is impressed with IBM’s offering. “With Content Analytics, we have an integrated view of all information that’s relevant to out business in one place regardless of where it’s stored,” said Makoto Ichise, Manager of Information Systems Department Group at NTT DOCOMO.

IBM also enhanced its Information Governance solutions and announced further usage of it InfoSphere Streams product for analyzing medical data to improve healthcare.

So IBM software keeps improving and helping us to better manage our data in a constantly changing world…
Read More
Posted in analytics, DB2, IOD, SAP, unstructured data | No comments

Monday, 25 October 2010

DB2 10 Technical Overview at IOD Conference

Posted on 18:04 by Unknown
Today I attended the IOD conference and had the opportunity to listen to Jeff Josten present an technical overview of DB2 10 for z/OS. Even though information and specifications have been trickling out on DB2 10 for z/OS over the course of the past year or so, this is the first DB2 10 presentation I have attended subsequent to the GA announcement IBM made last week (announced October 19th, General Availability on October 22nd, 2010). So I’m fairly certain that everything Jeff will talk about will be officially part of DB2 10, instead of just the rumors, hints and allegations proffered prior to the GA announcement. I don’t think anything to be covered will surprise me, but we’ll see.

Jeff started off saying that the technical strategy for DB2 10 was four-pronged:

  • Continuous availability
  • Performance and scalability
  • Ease of management
  • Advance application features

  • One of the key value propositions is the deep synergy with the System z hardware. Because the code does not need to be ported all over the place, it can take advantage of the hardware capabilities that bring improved performance and efficiency.

    DB2 10 is being promoted as delivering 5 to 10 percent CPU batch and transaction performance improvement out-of-the-box; 20 percent for new workloads. And then an additional 10 percent when you start using new features. This seems to be the high-level talking point for DB2 10 – but that is okay, it is a very good one!

    DB2 V8 will go out of service April 2012. But with the ability to go staright from V8 to 10, I’m betting a lot of V8 shops will skip 9 altogether and go right to 10. But it looks like you have just under 2 years to get off of V8, though.

    DB2 10 takes advantage of many zEnterprise (the new mainframe announced a couple of months ago) features to deliver scalability. Examples include improved compression, cache optimization, blades for running the Smart Analytics Optimizer, etc.

    Jeff mentioned that we’ll be able to support 10 times more users by avoiding memory constraints in DB2 10. That is a big scalability improvement!

    DB2 10 went through the largest beta ever: 23 customers and more than 80 vendors. The focus was on testing production level workloads to ensure that the release is stable. That is different than past betas where the focus was on testing new features. And 22 of the beta customers are planning to go into production with DB2 10 next year. Impressive!

    Before diving into the technical details, Jeff mentioned that not much has changed versus what IBM has been talking about over the past months. A couple late add features include hash performance, BIND performance, REBIND not required for packages flagged as private protocol (but they will fail if they actually use private protocol), and a new ZPARM for default SEGSIZE for DDL compatibility.

    Post GA delivery items include APREUSE and APCOMPARE (for reusing access paths instead of using “hints”) because beta testing exposed some quality items, the ability to delete a data sharing member, inline LOBs for SPT01, online REORG concurrency for materializing deferred ALTERs, and some temporal enhancements (e.g. TIMESTAMP WITH TIMEZONE support).

    High performance DBATs (DDF threads) were forced to be RELEASE COMMIT. This gave good storage usage but at the expense of CPU for releasing resources at COMMIT and putting the thread back on the queue. For DB2 10, customers can use RELEASE DEALLOCATE which will keep the thread assigned to the distributed requestor so the next time he comes in he can reuse the thread. This is a nice feature for shops with heavy distributed usage.

    Another nice thing right out of the box is parallel index updating at INSERT. This used to be synchronous, each index modified one after the other. Now, the indexes can be modified in parallel, which should be a nice performance improvement for many shops!

    There is also a new buffer pool option for a “fully in memory” object for reading the data and pinning it in buffers. Don’t know about you, but I’ve been wanting that for years.

    Things that require a REBIND will include most access path enhancements, query parallelism improvements, IN list performance improvements, and Stage 2 predicates being pushed to Stage 1.

    Things that require NFM include DB2 Catalog concurrency, compress on insert capability, most utility enhancements, LOB streaming between DDF and the rest of DB2, INSERT improvements for universal table spaces, faster FETCH and INSERT with lower virtual storage consumption, SQL Procedure Language performance improvements, efficient caching of dynamic SQL with literals, as well as a few other “things.”

    And then there are things that require NFM and DBA work, such as hashing, index include columns, inline LOBs, DEFINNE NO for LOB and XML columns, MEMBER CLUSTER for universal table spaces, and online REORG for all DB2 Catalog and Directory table spaces.

    So it looks like our favorite DBMS is continuing to grow and expand offering high performance functionality and features that are unparalleled in the industry. Indeed, there is a lot of great and exciting new “stuff” on the way in DB2 10.
    Read More
    Posted in DB2 10, IOD | No comments
    Newer Posts Older Posts Home
    Subscribe to: Posts (Atom)

    Popular Posts

    • DB2 Locking, Part 2: Table Space and Table Locks
      Today's post is the second in our DB2 locking series and it covers the topic of table space and table locks. Table Space Locks A table s...
    • IBM Announces DB2 10 for z/OS Beta Program
      IBM announced the beta program for the next version of DB2 today, now "officially" known as DB2 10 (no more DB2 X). It is a closed...
    • New Data Types [DB2 9 for z/OS]
      As we continue our blog series on the new features and functionality of DB2 9 for z/OS, today we examine the four (OK, five) new data types ...
    • New Built-in Functions [DB2 9 for z/OS]
      DB2 9 for z/OS introduces a bevy of new built-in functions (BIFs) for programmers to use in their SQL statements. It is important to keep tr...
    • CLONE Tables [DB2 9 for z/OS]
      This new feature in DB2 V9 might sound like an old monster movie ( Invasion of the Clone Tables!!! ), but it is actually a nifty new capabil...
    • DB2 Locking, Part 4: Page and Row Locks
      In the first three installments of this series on DB2 locking we have looked ata broad overview of locking (part 1), table and table space l...
    • IBM Manages the Data Lifecycle
      Data lifecycle is a somewhat new-ish term, at least in terms of what I plan to talk about in this blog posting. The data lifecycle – and dat...
    • STOGROUPs and SMS [DB2 9 for z/OS]
      With today’s posting we return to our examination of the new features of DB2 9 for z/OS. With V9, DB2 storage groups can be better integrate...
    • Larry Sure Knows How to Get Press
      Going under the assumption (I assume) that no press is bad press, Oracle CEO Larry Ellison has attacked IBM's DB2... but he made several...
    • DB2 Locking, Part 5: Lock Suspensions, Timeouts, and Deadlocks
      The longer a lock is held, the greater the potential impact to other applications. When an application requests a lock that is already held ...

    Categories

    • .NET
    • ACID
    • ALTER
    • analytics
    • articles
    • automation
    • award
    • backup
    • best practices
    • BETWEEN
    • BI
    • Big Data
    • BIND
    • blogging
    • book review
    • bufferpool
    • buffers
    • CASE
    • change management
    • claim
    • Cognos
    • COMMIT
    • compliance
    • compression
    • conference
    • constraints
    • COPY
    • data
    • data breaches
    • data quality
    • data security
    • Data Sharing
    • data types
    • data warehouse
    • database archiving
    • database auditing
    • database design
    • date
    • DB2
    • DB2 10
    • DB2 11
    • DB2 9
    • DB2 Analystics Accelerator
    • DB2 Catalog
    • DB2 conversion
    • DB2 Developer's Guide
    • DB2 X
    • DB2-L
    • DBA
    • DDL
    • developerWorks
    • dirty read
    • DISPLAY
    • DL/1
    • drain
    • DSNZPARM
    • Dynamic SQL
    • eBook
    • education
    • enclave SRB
    • encryption
    • ERP
    • FETCH FIRST
    • Freakonomics
    • functions
    • generosity factor
    • Happy Holidays
    • Happy New Year
    • Hibernate
    • HIPAA
    • history
    • IBM
    • ICF
    • IDUG
    • IFL
    • IMS
    • index
    • Information Agenda
    • Informix
    • InfoSphere
    • infrastructure
    • integrity
    • IOD
    • IOD11
    • IOD2009
    • IOD2011
    • IODGC
    • IRLM
    • ISOLATION
    • Java
    • JDBC
    • load balancing
    • LOBs
    • locking
    • LUW
    • mainframe
    • Malcolm Gladwell
    • manuals
    • memory
    • middleware
    • migration
    • misc
    • monitoring
    • natural key
    • Netezza
    • new blog location
    • NoSQL
    • nulls
    • OLAP
    • optimization
    • Oracle versus DB2
    • packages
    • PCI-DSS
    • performance
    • PIECESIZE
    • poll
    • primary key
    • production data
    • programming
    • Q+A
    • QMF
    • REBIND
    • recovery
    • RedBook
    • regulatory compliance
    • reliability
    • REORG
    • research
    • RI
    • RTO
    • salaries
    • SAP
    • scalability
    • security
    • smarter planet
    • SoftwareOnZ
    • sort
    • SOX
    • specialty processors
    • SPUFI
    • SQL
    • Stage 1
    • Stage 2
    • standards
    • Steelers
    • storage
    • stored procedures
    • stream computing
    • surrogate key
    • SYSADM
    • Sysadmin
    • table expressions
    • table space
    • TechDoc
    • tips and tricks
    • Top Ten
    • trace
    • training
    • triggers
    • Twitter
    • UDFs
    • UNION
    • unstructured data
    • user groups
    • utilities
    • V1
    • V10
    • V2
    • V3
    • V4
    • V5
    • V6
    • V7
    • V8
    • V9
    • variables
    • views
    • VOLATILE
    • Web 2.0
    • webinar
    • Wordle
    • XML
    • z/OS
    • zAAP
    • zIIP

    Blog Archive

    • ▼  2014 (2)
      • ▼  January (2)
        • DBA Rules of Thumb - Part 9 (Call on Others for He...
        • DBA Rules of Thumb - Part 8 (Being Business Savvy)
    • ►  2013 (50)
      • ►  December (6)
      • ►  November (6)
      • ►  October (5)
      • ►  September (5)
      • ►  August (3)
      • ►  July (7)
      • ►  June (4)
      • ►  May (4)
      • ►  April (5)
      • ►  March (1)
      • ►  February (2)
      • ►  January (2)
    • ►  2012 (17)
      • ►  December (1)
      • ►  November (2)
      • ►  October (3)
      • ►  August (2)
      • ►  July (1)
      • ►  May (1)
      • ►  April (1)
      • ►  March (2)
      • ►  February (2)
      • ►  January (2)
    • ►  2011 (27)
      • ►  December (1)
      • ►  November (1)
      • ►  October (6)
      • ►  September (2)
      • ►  August (3)
      • ►  July (2)
      • ►  June (3)
      • ►  May (2)
      • ►  April (3)
      • ►  March (1)
      • ►  February (3)
    • ►  2010 (29)
      • ►  December (1)
      • ►  October (6)
      • ►  September (1)
      • ►  August (2)
      • ►  July (2)
      • ►  June (1)
      • ►  May (3)
      • ►  April (3)
      • ►  March (3)
      • ►  February (4)
      • ►  January (3)
    • ►  2009 (43)
      • ►  December (5)
      • ►  November (4)
      • ►  October (6)
      • ►  September (2)
      • ►  August (1)
      • ►  July (3)
      • ►  June (2)
      • ►  May (3)
      • ►  April (2)
      • ►  March (4)
      • ►  February (5)
      • ►  January (6)
    • ►  2008 (44)
      • ►  December (1)
      • ►  November (4)
      • ►  October (4)
      • ►  September (6)
      • ►  August (1)
      • ►  July (4)
      • ►  June (3)
      • ►  May (5)
      • ►  April (4)
      • ►  March (4)
      • ►  February (2)
      • ►  January (6)
    • ►  2007 (51)
      • ►  December (2)
      • ►  November (3)
      • ►  October (5)
      • ►  September (3)
      • ►  August (6)
      • ►  July (4)
      • ►  June (4)
      • ►  May (5)
      • ►  April (8)
      • ►  March (5)
      • ►  February (4)
      • ►  January (2)
    • ►  2006 (60)
      • ►  November (4)
      • ►  October (8)
      • ►  September (4)
      • ►  August (11)
      • ►  July (7)
      • ►  June (2)
      • ►  May (7)
      • ►  April (3)
      • ►  March (6)
      • ►  February (4)
      • ►  January (4)
    • ►  2005 (11)
      • ►  December (3)
      • ►  November (6)
      • ►  October (2)
    Powered by Blogger.

    About Me

    Unknown
    View my complete profile