Saturday, June 30, 2012

Tables, Trees, and Stars

The data model was created originally with tables in mind, but the world’s data is more than just tables. Lists and sets are easily molded into the table shape, but other important data structures are not. That is especially the case when you look at the difficult data-oriented problems that programmers take on. Problems often involve tables, or strictly two-dimensional data, but they are almost as likely to involve trees, stars, networks, and other shapes of data that may or may not be easily tortured into a table form.

Finili makes this easier by not insisting on a particularly rigid table structure. The Finili data model might have been designed for tables, but Finili syntax is noncommittal. The columns and rows in Finili data are declared and accessed as variables and places, which in principle would not have to form a table. Similarly, Finili syntax relates to a table as a container and path. We assume there is a table behind this syntax, with the program looping on a linear path through the table, but the path could almost as easily be the traversal of a tree.

Based on this observation, we are taking a tree structure as the initial use case for data that stretches beyond the table form. Tree support has been taken on as an investigational objective in both the syntax and data model areas.

If we can demonstrate tree access to data, it is a short step beyond that to a star shape, and beyond that, a range of network shapes related to various real-world problems. This list may turn out to include goals we are already committed to. We are determined to ultimately support video as a primitive object, for example, but some video compression techniques may be approached as a cluster of trees. Direct support for tree structures may shorten our efforts toward the objective of support for video.