REVIEWER: Bryan Hughes, storage and database architect for Shutterfly.
BACKGROUND: Shutterfly is the leading online photo service that makes it simple, convenient and fun for people to take and share pictures. Using the Internet and a digital or film camera, Shutterfly enables users to easily enhance, personalize, store and share pictures online or through high-quality prints. Shutterfly users can fix photos (e.g., eliminate red-eye) and transform their pictures with special effects and borders. Shutterfly offers features to create photo cards, invitations, albums and calendars, all of which can be mailed to friends and family worldwide.
PLATFORMS: The Informix Database Servers reside on a pair of SUN E4500s running Solaris 2.7. The site is comprised of a large array of load balanced SUN Netra T1s running Weblogic.
PROBLEM SOLVED: As the leading online digital photo finisher, Shutterfly is home to over 16 million pictures uploaded and printed by its customers. Shutterfly needed a highly scalable and stable database that would meet the rigid demands of server-side image processing, order and credit card processing, printing of precious photos and guaranteed availability. Shutterfly choose Informix Dynamic Server because of its high degree of parallelism and performance.
PRODUCT FUNCTIONALITY: In engineering a site with such rigid demands and varying but related categories of data, it is critical to maintain relational constraints without sacrificing performance or scalability. Informix Dynamic Server (IDS) allowed us to accomplish this. Very seldom is a database strictly OLTP, DSS or a data store. It is usually a shade of each. Using IDS, we are able to store massive amounts of data, allowing for instantaneous server-side image processing. At the same time, we are able to upload images and process orders and credit card transactions. While we are satisfied with version 7.31, we are looking to upgrade to version 9.3 to exploit more of the object-relation features as well as the ability to embed Java objects within the engine.
STRENGTHS: Because IDS is a multithreaded server, it offers a high degree of parallelism. More significant is the ability to precisely control the storage allocation and placement, further increasing its performance. Because nearly every component of the server is tunable and can be monitored, we are able to run the server at optimal efficiency. Furthermore, with IDS tuned correctly and our data model exploiting the server's features, we are able to operate both primary and secondary databases with a single DBA, further reducing the cost of ownership.
WEAKNESSES: Probably the most significant weakness of Informix Dynamic Server is the implementation of stored procedures. In such a highly concurrent environment, stored procedures are not reentrant and are cause for data inconsistencies. Although not necessarily a weakness, the pros of a highly parallel and threaded engine such as Dynamic Server can quickly become cons. It is very easy to have a single query or poorly designed table and indexes bring the engine to its knees. Because of the complexity of the engine, solving these problems can be difficult for the less skilled DBAs.
SELECTION CRITERIA: With our demanding requirements, including cost of ownership, Informix Dynamic Server was chosen because of the multithreaded engine's capability of scaling and performing to our needs. Overall, the database is incredibly stable and stays up for months, being brought down only for functional changes or additions to the data model as the company grows.
DELIVERABLES: Informix Dynamic Server lies at the heart of all Shutterfly operations managing all customer accounts, image meta data, order processing and fulfillment, and credit card processing. The backup server acts in read-only operations generating financial and accounting reports as well as aggregating data for a reporting database.
VENDOR SUPPORT: For the most part, Informix support has become much better. Several years ago that was another story. Now, they have become much more responsive. In one instance, we encountered a variation of a known bug. Informix was quick to provide us with a patched engine that resolved the problem. While we are not a bank with critical 24-hour operations, we are up 24x365 with customers all over the world. It is imperative that we are able to resolve problems immediately whenever they happen.
DOCUMENTATION: The Informix documentation is complex and complete, and provides insight into the architecture of the engine beyond simple configuration and maintenance. Due to the complexity of the documentation, sometimes the answer is not in the most obvious place.
Register or login for access to this item and much more
All Information Management content is archived after seven days.
Community members receive:
- All recent and archived articles
- Conference offers and updates
- A full menu of enewsletter options
- Web seminars, white papers, ebooks
Already have an account? Log In
Don't have an account? Register for Free Unlimited Access