Tuesday, November 19, 2013

MongoDB and CAP

Just read this great post, Call me maybe: MongoDB and the wrap-up post, Call me maybe: final thoughts. They're part of a series called Jepsen on behavior of various NoSQL databases in failure scenarios.

Very geeky but very interesting.

Completed MongoDB M102

As I mentioned earlier, I signed up for "M102: MongoDB for DBAs". Great class.

I just completed it yesterday and got 100% on everything, homework and final.

If you're interested in learning about MongoDB, this is a great way to get a broad exposure in a limited amount of time. Because it includes weekly lectures and homework, you can't procrastinate like you can with that technical book on your desk that you planned to read through.

Speaking at Data Modeling Zone 2014

My boss, Ryan Smith, and I will co-present on modeling in NoSQL at Data Modeling Zone 2014 here in Portland.

It's not until October of next year, so we don't have things nailed down yet, but it will be fun to work with Ryan on this.

RESTful Service Best Practices

I was recently looking for reference material to back up my preference for storing date/time values in MongoDB in UTC using MongoDB's ISODate type. I found this great reference published at amazonaws.com:

RESTful Service Best Practices
Recommendations for Creating Web Services

It gives a solid recommendation for RESTful services:
"... always use the same format, including the time portion (along with timezone information) in the string. ISO 8601 time point format is a good solution, using the fully-enhanced format that includes hours, minutes, seconds and a decimal fraction of seconds (e.g. yyyy-MM-dd'T'HH:mm:ss.SSS'Z')."
It doesn't directly address storage directly, but it's such a great resource, I wanted to share it.

Wednesday, October 30, 2013

Exploring SQL Server 2012's sys.dm_exec_describe_first_result_set_for_object()

SQL Server 2012 introduces sys.dm_exec_describe_first_result_set_for_object(). The official documentation is here.

Let's work through some examples to discover what this new function delivers.

First, build a table that will be used to illustrate the function:
CREATE TABLE dbo.TestTable (
ColID       INT                     IDENTITY,
ColStr      CHAR(10)                NOT NULL,
ColMod              AS ColID % 10,
ColDef      bit                     NOT NULL    DEFAULT 0,
ColCalc0    INT                     NULL,
ColDec      DECIMAL(3,2)            NULL,

Then build the simplest possible stored procedure that references that table:
ColID FROM dbo.TestTable;

Now call the function:
FROM sys.dm_exec_describe_first_result_set_for_object (


Remember that this stored procedures selects only one column. There are many columns in the result set. Here are some of the more interesting ones:
is_hidden:                0
column_ordinal:           1
is_nullable:              0
system_type_name:         INT
is_identity_column:       1
is_updateable:            0
is_computed_column:       0
ordinal_in_order_by_list: NULL
order_by_is_descending:   NULL

MongoDB Training

I am in the middle of taking a free on-line class: "M102: MongoDB for DBAs".

Very interesting and educational so far. Also a bit frustrating. As I don't have a background in JavaScript, there are certain parts of the class that I struggle with.

In general though, this is a great class and well worth your time if you are interested in MongoDB.

Wednesday, August 07, 2013

Just Do It!

My last day at Fiserv (second round) was Thursday, August 1st. On Monday, I started as an Expert Data Architect at Nike.

I am so excited about this change and really look forward to what I can learn and contribute at Nike.

Friday, June 28, 2013

Tuesday, June 25, 2013

SQL Server 2014 CTP1

CTP1 of SQL Server 2014 is now available! Go download it and start using it.

My first SQL 2014 article will be published at simple-talk soon. I will update this post with a link once the article is on-line.

Tuesday, March 26, 2013

My New Role at Fiserv: Patterns and Practices Manager

In addition to the Data Architect role that I will continue to play, I am now the Patterns and Practices Manager for the Digital Channels Enterprise Architecture team.

Here is the text right out of the March 12th e-mail that announced the change:
Rob will take on responsibility for managing our processes and best practices within the Group. He will continue to lead our Database design discipline, but will also take on management for the Corillian [Professional Services] Architects. Michael Hallabrin, Tim Sarna, and Rocco Martin will report in to Rob as part of the CO-L Solutions Architecture team.
I am really excited about this new role. Michael, Tim, and Rocco are a bunch of really smart guys, and I am enjoying working more closely with them.


Presenting on SQL Server Change Data Capture in Eugene

I will be speaking to the Eugene Area SQL Server User Group on CDC.

Topic: Deconstructing SQL Server's Change Data Capture

SQL Server's Change Data Capture feature was introduced with SQL 2008, but how much do you know about how it works? After attending this session, you will understand the various parts involved in CDC, know how to set it up, and know the relative performance effect.

Our focus here is not just showing how CDC works on the surface (there are many articles that cover that), but rather to see what we can find out about the various moving parts within SQL Server that actually make CDC function. Understanding the internals will help in an overall understanding of CDC.


Peace Health, 123 International Way
Springfield OR

April 9th at 11:30am

Monday, January 28, 2013

A Creative Use of Computed Columns

I love to see a creative solution to a technical problem.

How can I get that user out of my table quickly by JackLi

Great creative solution using indexed persisted computed columns.

The beauty of indexed persisted computed columns is that, yes, you have to pay the cost of doing the computation, but you only pay that cost at the point where you INSERT or UPDATE that particular column. If the data is mostly static as it is in this case, the one-time cost is very small.

Wednesday, January 16, 2013

You Can’t Sacrifice Partition Tolerance

Just finished reading this excellent article by Coda Hale:

I thought the bit about yield versus uptime was very interesting, as was the bit about harvest (harvest = data available/complete data). Historically, [the corporate] we have built systems that sacrifice yield in the event of a failure. I like the challenge/opportunity of building a system that reduces harvest but maintains yield.