OpenWorld 2009 Recap

Having now had several days to recover from, and reflect on, my trip to beautiful San Francisco for Oracle OpenWorld 2009, I wanted to follow up with a blog post describing my experience.

First, before anything else, I went to In-N-Out Burger where I had my usual Double-Double with fries animal style; oh, how I missed thee.

Next, with the exception of Larry’s keynote on Wednesday, I skipped the rest of keynotes.  While I wanted to attend Michael Dell’s, I was hungry and decided on breakfast at Mel’s Drive-in instead.  Out of coincidence, I ended up sitting next to Mark Prichard, Senior Principal Product Manager for WebLogic at Oracle; we ended up discussing Tuxedo and some of the features Oracle has been adding to it since the BEA acquisition.  A bit later, I visited the Tuxedo booth to learn more and was quite happy to see Oracle putting more resources into developing such a great product as Tuxedo.

On Monday, I attended a couple sessions, including one on TimesTen caching for Oracle, as well as the OTN Night event.  At the event, I had a great discussion with several cool Oracle users and, with the exception of a few incorrect answers to questions for “Oracle Jeopardy”, it was a great night.

Tuesday was a busy day.  Surprisingly, during my session I saw former EnterpriseDB colleague, fellowPostgres developer, and new Google employee Greg Stark.  We discussed several different database-related topics during lunch and then attended the Hybrid Columnar Compression session given by Bill Hodak and Amit Ganesh.  Based on the simplified diagram displayed in the session, my guess is thatHybrid Columnar Compression is implemented using some of the in-block table/row directory functionality with the compression unit header containing the number of blocks in the unit as well as pointers to which block(s) within the compression unit contain which fields.  More to come on that topic in a future blog post 🙂

Tuesday night, I attended the Pythian Bloggers Meetup event and met fellow bloggers Alex Gorbachev,Markus EiseleRobyn SandsArjen VisserFuad ArshadRaimonds SimanovskisVít Špinka, Steve Lemme, and many others.  Unfortunately, I was unable to meet up with Justin KestelynDoug Burns, and Tim Bray.  After the meetup, a few of us went over to Chevy’s and talked shop for awhile.

Wednesday was similarly busy.  Fortunately, before I left, I was able to meet long-time online friend and colleage Jonathan Gennick.  Jonathan invited me to meet him at one of Mogens Nørgaaard’s Oracle Closed World sessions where I was also able to meet Graham Wood and several other well-known Oracle/OakTable guys.  It was at OCW that I was able to watch one of the best, non-marketing-oriented Cloud Computing presentations given by Jeremiah Wilton.  After the OCW session, I enqueued myself to see Larry’s keynote which I enjoyed.

All in all, I spent a great deal of time talking to some of the developers and technical guys at the Oracle database DEMOgrounds including Stephan HaisleyMark Williams, Advanced Security developers, Advanced Compression developers, Optimizer guys, some of the BerkeleyDB guys, and several members of the Data Access group.  While I primarily visited the Exadata exhibit hoping to meet up with Kevin Closson and Greg Rahn, I was able to have a few great discussions regarding the architecture of Exadata as well as watch that machine perform an amazing amount of data processing in a very short amount of time.

In short, OpenWorld was great!  If you didn’t attend, I would suggest that you buy access to Oracle OpenWorld On Demand, there’s a ton of great content in there and it’s definitely worth it.

Lastly, I’d like to thank Oracle for inviting me to speak and I hope to be back next year!

Distributed Oracle Buffer Cache

If you’ve read EnterpriseDB’s latest press release, you’ll notice a new feature called Infinite Cache.  While it may sound revolutionary, it is not a new technology.  In fact, it was done for MySQL quite awhile ago under the Waffle Grid project.

While I consider this type of caching relatively simple, I don’t want Oracle to be left out.  As such, I’m going to join the fray by throwing my own project, Mercury Distributed Cache for Oracle, into the mix.

Similar to Waffle Grid for MySQL and Infinite Cache for EnterpriseDB, Mercury supplements the Oracle buffer cache with optimized, network-based data block storage to reduce the amount of read-related disk I/O which must be performed when working with large-scale databases.

For the time being, please forward all Mercury-related questions directly to me via email.

Advanced Query Optimization Question

Having now had a couple days to rest and reflect, I can definitively say that SEOUC was great.  I’m really glad I attended, was able to meet a lot of new people, and have some good discussions about problems people faced both technically and given the current economy.  I was also able to get some good insight into other types of Oracle environments and felt the conference was an overall success.

The conference ended with a closing session on the topic of Oracle Exadata Storage Server presented by Oracle Director of Product Management, Charles Garry.  While the slide deck was quite marketing-heavy, Charles did a good job entertaining everyone and answering questions.

After the session, I had a few discussions with people regarding the Exadata architecture and the method by which Oracle Database is able to distribute nodes of a query execution plan directly to the storage server for local processing.  For people who haven’t worked on query optimizers and executors, it seems that this is an area of technical confusion.  Regardless, Charles and I both rode the shuttle back to the airport, which gave me a chance to talk with him about Oracle from both a company and technology perspective.

Also, now that I’m home and have completed my second SEOUC presentation, The Life of a Query, I wanted to follow-up on my experience and ask you a question.

First, the description of The Life of a Query is as follows:

Have you ever wondered what happens when you execute a query?  In this session, we’ll take a walk through the Life of an Oracle Query from beginning to end.  Not only does this help you better understand the various steps in the execution of your query, but it will also give you a good appreciation for the architecture of the Oracle Database server and, in particular, of the query optimizer.  You will gain valuable information that will allow you to solve performance issues and write more efficient queries going forward.  Additionally, I will share some of my insights into the Oracle optimizer as we move through this discussion.  This discussion is also a great refresher for those of you familiar with Oracle concepts and architecture.

In short, this session takes a query and walks through all major components of the Oracle database starting from the client and going through connection, the entire Oracle Kernel stack, and back to the client.  After the session, I received quite a few positive comments from attendees.  Moreover, I found that people are extremely interested in how query optimization works.

While I covered the basics of parsing, query rewrite, and optimization, it seemed that including view/subquery merging, basic algebraic optimization, join permutation, join elimination, and partition elimination wasn’t enough.  Surprisingly, someone even asked to go into more depth on the mathematics behind query optimization; specifically the application of graph theory to plans and the way costing is performed using a graph.  This brings me to my question:

Would anyone be interested in a fairly advanced presentation/article on query optimization?

For comparison purposes, my meaning of fairly advanced is between the level of Jonathan Lewis’ Cost-Based Oracle Fundamentals and not-quite pure math.  If I decide to do it, I’m thinking of presenting it similar to Craig Shallahamer’s based-on-math-yet-practically-applied Forecasting Oracle Performance, describing the math and theory but visually demonstrating how it applies to actual queries.  Thoughts?