Tuesday, 13 November 2007

Set Oriented Databases

Forget Object Databases, the future is SODS. For the unwashed masses who haven't even managed to get passed Relational Databases. You can move out of the dark ages of databases and move directly to the 21st century.

What is a SOD you may be asking yourself, well here is a light weight introduction:

What is a Set Oriented Database

What is a Set

The notion of set used in this document is based on the notion of a set described by Set theory (or number theory). The basic notion of a set is a construct existing in a world where:

There exists operators equality (=) and element of (∈). Equality allows for us to determine is one set is considered the same as another. The element of operator determines whether or not a value is an member of the set.

Sets are uniquely determined by their elements, that is if set A and B are equal (A = B), then there members are the same, or A = B ⇔ ( x ∈ A ⇔ x ∈ B ).

There exists a unique set, called the empty set. In set theory this is the building block of all sets. The empty set is represented as ∅. In our world we simplify things slightly and allow for sets that have members which do not practically resolve to the empty set, for example the set of integers. There is a mapping in set theory of the integers to the empty set, However, the need to support this decomposition seems irrelevant for practical purposes.


A set, with its members, is represented as A = { a1, a2, …, an }

The members of a set are unordered, and unique. That is { a1, a2, a3 } = { a2, a1, a3 } (unordered), and { a1, a1 } does not exist, however, when constructing a set, a set that could be constructed by addition, i.e. {} (or the ∅) with the addition of a1 = { a1 }, then a further addition of a2 = { a1, a2 }, however if a1 = a2, this will be = { a1 } (uniqueness).

What is a Set Oriented Database (SOD)

A set oriented database is a data storage tool that is capable or performing persistent Create, Read, Update, and Delete (CRUD) operations on sets.

A relational database would be an example of a subset of a SOD (where the names have been customised to deal with the constraints imposed).

An object database would also be a subset of a SOD.


No comments: