Google Web

mewsings, a blog


Friday, January 13, 2006

Who Ordered the Ripple Delete?

Ripple Delete with Digital Video Editing

I have dabbled a bit in digital video editing. If I simply delete a series of digital frames, there is a gap where those frames were removed. Enter: the ripple delete. I'll admit to having a slight shiver of delight when I perform a ripple delete. Behind the scenes it not only deletes the frames, but moves frames up to cover the gap. Editors who have worked with physical film and a razor blade must be ecstatic.

This ripple delete feature can be added to any software application that works with an ordered list, independent of whether the data are modeled using the Relational Model (RM) or any other data model.

This nifty ripple delete function is only available on the footage for one video, not among videos. If I were to number a set of videos sequentially and then delete some in the middle, I would have to renumber those after the deleted ones to remove the numbering gap. So, using my digital video editing tool, the ripple delete feature is available on properties of an entity (such as the frames of a video) but not among entities. This application, therefore, has multiple types of collections (frames being of an ordered list type and videos not) with different operations that can be performed on them.

Rather than avoiding ordered property lists, you start seeing how common they are when you free your mind of the RM.

Please forgive my burst of saccharin marketing spin, but because of using tag-delimited strings, NF2, and a two-valued logic (2VL) through the entire development process, I'm naming the style of development I'm working with as End-to-End AJAX or N2N AJAX. You can gag now. but it isn't like naming JavaScript after Java given that AJAX really is used at the front-end.

Using the example from the last blog and adding a requirement for the e-mail addresses to be ordered so that e-mails should be sent first to the first e-mail address and if that bounces, then to the second, I can implement using an ordered list in my logical model and then in my implementation. Then I can enjoy use of the ordered list without managing a separate ordering attribute myself, without having to remember to sort them for output, nor writing my own ripple delete process. This example is a hint at developing using N2N AJAX with lists defind to a database that has a built-in ripple delete function. This is my second ever AJAX screen. The data comes directly from a query to the database, so you can see that the database does not have normalized data (using the term "normalizing" as described in the first blog).

The data model one uses influences what data are chosen during the design phase of a system for inclusion in the logical data model. Rather than avoiding ordered property lists, you start seeing how common they are when you free your mind of the RM. If you have to split an attribute into a separate table, add in an ordering attribute and roll your own ripple delete, you are simply less likely to even consider it if the requirement doesn't seem really strong or if you can convince the user it is not worth the cost. Even once you go through the work of implementing an ordered property list for an entity, the end-user might still be affected if you take your RM thinking to the UI. Think what the digital video editing tool user interface might be if it were to think like the RM. It is unlikely that this editing software holds these frames in a relational database but that is the interface your users would want even if you did have a relational database backing an ordered property list. And don't forget, software developers are users too. The DBMS APIs they use can make a significant difference.

Some might think I'm about to confuse the data model with a representation.

Some readers around the world (I was thrilled to have readers from every continent except Antartica this past week with my first blog) might think I'm about to confuse the data model and the representation. I'm not. I am laying the groundwork for examining the definition and use of a data model. What is the relationship between a data model and the API that developers use in working with a DBMS? If we can have ordered lists and perform ripple deletes no matter what data model we are using, then what is my point? It has to do with the title of this blog--who ordered the ripple delete?

See comments.


Post a Comment

<< Home

Litter Box

Atom feed

Add to Google

Some of this is worth pawing through.