SQL Clone
SQLServerCentral is supported by Redgate
Log in  ::  Register  ::  Not logged in

Business needs vs dirty reads

I have worked in many industries, but most of my time has been in the publishing industry.  For those not familiar with this industry it is rather interesting.  The main objective is to "sell" as many books as possible to as many retailers and distributors as possible.  I put sell in double quotes, because it is a loose term.  A bookseller or distributor can return a book at any time for any reason for a full refund.  This industry standard of getting a sale booked has some interesting database ramifications, such as dirty reads.

Many front-end applications are written such that when a person calls for an order (be it a single book or a buyer for a chain) and customer service checks inventory, that check is usually a dirty read.  Business is looking to accomplish two things.  First, they don't want the ordering system (customer service, web, etc) blocking the warehouse from shipping.  Books out the door is important.  Second, inventory does not need to be precise when taking an order.  I take the order and if it turns out that there are not enough books to fulfill the order they go on backorder and you get notified through your invoice.  I worked for a small publishing company that had a mandate.  No book is ever out of stock.  Orders were ALWAYS taken as though the book was in stock.  I also found the same mandate at a small specialty clothing company that I did consulting for.  

This clothing company serviced unions, companies, and also specialty industries like electrical workers (they had special clothing for them that wouldn't catch fire).  They would offer special rates in exchange for managing the clothing budget.  Many unions have a clothing budget of say $200/yr.  This company provided the catalog that they could shop from with approved clothing choices including logo or any specialty needs (such as the electrical requirements I mentioned above).  They would always take the order even if that specific size or material was out of stock.  So in this place exact inventory was not required when taking an order, reconciliation was done later by the inventory process.

In both of these industries is no guarantee that when you place your order, you will have it fulfilled, even though at the time inventory showed there was enough stock.  This can be for any number of reasons; The stock was needed for a larger more lucrative customer, inventory was not exact at the time of order, orders are not necessarily fulfilled in the order they were placed, etc.

More often than not order entry and fulfillment are two different processes that happen at two different times.  Normally order entry is done during the day and the fulfillment system runs at night, placing orders for the next day's run.  There is no need for real-time data to be exchanged and so business needs dictate 'dirty reads'.


This blog is syndicated from SSIS - SQL Server Tidbits(http://www.josefrichberg.com/)


No comments.

Leave a Comment

Please register or log in to leave a comment.