Schema on write v.s. schema on read
I started running in graduate school, and there is no better place to pick up this hobby than New York City, right next to Central Park. Over the years, I’ve also run many races organized by NYRR, in which I see my pace improves. This trend is very easy to notice from the race bib numbers. Let me explain.
In most of NYRR’s races, the bib number is assigned by the runner’s pace, usually from past races if this condition is applicable to that runner. In general, the runners are clustered into different corrals at the start: faster runners in the front, and slower runners in the back. In doing so, when starting the race at the same time, fast runners won’t have to spend unnecessary energies to navigate through the crowd. Due to this reason, the design of the bib needs to reflect the corral assignments.
In the past (before 2015?), the corral assignments are indirectly reflected through the bib numbers. The bib numbers are allocated by 1000-block: bib numbers 1 to 999 are assigned to the first corral (the fastest), bib numbers 1000 to 1999 are assigned to the second corral, so on and so forth. Each 1000-block is also associated with one unique color: 1 to 999 bibs are painted in blue, 1000 to 1999 bibs are painted in red, etc. This is illustrated from the left figure below (source). When I finally got my first blue bib number after many red bibs, I was very proud of myself.
One ramification of such design is that, the runner’s name and the bib number is already permanently linked prior to the bib numbers pick up. In fact, they are determined when the bib numbers are printed. When I went to pick up my bib before a race, the staff had to go through stacks of bib numbers, to find out that one that belongs to me, on which my name is printed. You can imagine the tedious labor of such operation, and the waste of time.
Since I moved back to New York about a year ago, and started running NYRR races again, I noticed something different about the bibs (well, NYRR also moves its office and the bib pick up location from upper east side to Columbus circle). First, the color-to-corral mapping is gone, now everyone gets the same color. Second, the 1000-block corral assignment scheme is also something of the past, a runner’s exact bib number will be determined only at the pickup time, therefore, become random. At the pickup time, the staff will grab a new bib from the stack, whichever number it is, then he or she will scan the runner’s QR code (comes with the race registration confirmation). Next, the staff will scan the barcode on the bib, it is at this moment, the runner is linked with the bib. As for the corral assignment, since now the system now knows the runner’s pace, the staff will apply a sticker to the bib. This is shown as the figure above, to the right – it was mine during last weekend’s race, I was assigned to corral A.
Knowing this difference, I can not help to think of the analogy to the schema on write v.s. schema on read in database language. The old bib design is like schema on write: the relationship (runner’s information <–> bib number <–> corral assignment) is well defined at the moment when the bibs are being printed (on write). As for the new design, such relationship is only defined at pickup time (on read). This advance, of course, can not be done without the advance of technology, just as in the database development.
For sure it makes the bib pickup an easier task, for both NYRR and me.
Leave a Comment