This blog post is the first of a 3-part series that focuses on some possibilities (some mine, some from inside IBM themselves) that could be a big deal to anybody who cares about view performance.
Views.
They're the core component of any Domino database. You may argue that forms are more important, but with xPages you don't even technically need those anymore either.
Views are the only real-time-capable index you can create. If you need to sort or categorize data with anything remotely resembling scalability or speed, you need views. As a result we all want them to be fast. REAL fast. And we want lots of them, with all the sortable options enabled, and with as many different columns showing as many different pieces of data as possible.
But views are expensive.
One of the best things IBM could do for views (besides adding JOIN capabilities) would be to store view indexes outside of NSFs.
A view "index" is essentially two items, $Collation and $Collection, that gets stored on the view design docs. Go pull up the document properties on a view design doc in Designer, and you'll see them. But you won't see the sizes. For that, you'll need to use the Administrator client. Simply open the "Files" tab, right-click on your database and select "Manage Views".
If these fields were moved to be outside of the NSFs, then we'd realize some significant benefits:
1. Many NSF sizes would be drastically reduced -- many NSFs have over half of their size allocated to view indexes. And smaller NSFs perform much faster than larger ones.
2. View indexing could be offloaded to separate drives from the NSFs altogether -- even more speed!
3. Notes queues writes. A db is completely write-locked with *any* write that occurs to an NSF. So while a view index is being written to inside an NSF a doc cannot be simultaneously added to the db, user activity can't be recorded, etc. With this change this bottleneck could be removed - the view index could be written to externally while a doc is added to the NSF.
Here's the kicker: With DAOS in 8.5 I'd bet money that the groundwork is likely already there for abstracting an item out to the filesystem. View indexes aren't replicated anyway - why store them in the view design doc at all? You could argue that for security reasons they should stay in the NSF, but that's easily addressable by encryption similar to how DAOS encrypts its files.
Sound interesting? If you're interested, there's two ways to let IBM know that you care:
1. Open a support ticket with IBM, asking to be added to SPR#: DCOE7N32FM / APAR#: LO36534
2. Go vote on the topic on IdeaJam: http://www.ideajam.net/IdeaJam/P/ij.nsf/0/BA723B6332ED0C67862573B4003E9AE2?OpenDocument
Thanks for reading. There's more fun stuff to come, including an IBM patent that will make some of us Domino people say "WHAT? WHEN?"