DBDB.io The Encyclopedia of Database Systems · Est. 2017
Database of Databases

Database Entry

Rel


Rel is a free, open-source, true relational database management system with an advanced query language called Tutorial D. Intended for educational purposes and written in Java, it can run on any OS with a Java VM. It uses Oracle’s Berkeley DB as a storage engine, which in turn inherits some of its functionality form SQLite. The user can interact with the database via either the Tutorial D language or a visual query language implemented in the Rel application. While Rel currently does not support the entirety of the Tutorial D language, it has features for a large subset of the language. Using the JDBC driver, it can be incorporated into any application that uses Java, as long as the application doesn’t specify SQL syntax.[05]

Source Code
https://github.com/DaveVoorhis/Rel[02]
Developer
Country of Origin
GB
Start Year
2004 [20]
Project Types
Academic, Open Source
Written in
Java
Supported Languages
Java
Derived From
Berkeley DB, SQLite
Operating System
All OS with Java VM
License
Apache v2

Database Entry

Rel


Rel is a free, open-source, true relational database management system with an advanced query language called Tutorial D. Intended for educational purposes and written in Java, it can run on any OS with a Java VM. It uses Oracle’s Berkeley DB as a storage engine, which in turn inherits some of its functionality form SQLite. The user can interact with the database via either the Tutorial D language or a visual query language implemented in the Rel application. While Rel currently does not support the entirety of the Tutorial D language, it has features for a large subset of the language. Using the JDBC driver, it can be incorporated into any application that uses Java, as long as the application doesn’t specify SQL syntax.[05]

History[06]


CJ Date and Hugh Darwen’s The Third Manifesto outlines a set of programming language conventions and restrictions that lead to a truly relational database language that also incorporates benefits commonly associated with object-oriented languages. Tutorial D is a query language developed by Date and Darwen that meets those specifications, developed for education. Seeing the lack of complete open source Tutorial D language implementations, Dave Voorhis released the first version of the Rel database management system in 2004 in order to provide an implementation of Date & Darwen’s specification for instructional purposes.

Checkpoints[07][08]


As Rel has Oracle's Berkeley DB as its storage engine, it also uses fuzzy checkpoints.

Concurrency Control[07][09][10]


Concurrency control is handled by the storage engine, so the concurrency control protocols in Rel are those that are implemented by BerkeleyDB -- namely, MVCC and 2-phase locking.

Data Model[11]


While the backend storage engine that Rel uses, Oracle’s BerkeleyDB, uses the Key/Value and Document/XML models, Rel’s data model is truly relational, as specified by Date & Darwen’s Tutorial D syntax.

Foreign Keys[12]


Foreign keys are not specifically implemented in Rel, since it isn’t part of the official Tutorial D syntax. However, foreign keys are a more specific instance of Rel’s constraint system, so you can implement them as a specific type of constraint.

Isolation Levels[07][09][10]


Isolation levels are handled by the storage engine, so the isolation levels available to Rel are serializable (when BerkeleyDB uses pessimistic concurrency control) and snapshot isolation (when it uses MVCC).

Joins[13]


Currently, Rel does not have any optimizations for joins beyond the algorithms used by the storage engine. Thus, in BerkeleyDB, the possible join algorithms are those supported by SQLite, and even in SQLite, there isn’t support for sort-merge join over non-unique keys.

Query Execution[14][15]


Rel’s storage engine, BerkeleyDB, uses SQLite to execute queries. SQLite uses the Tuple-at-a-Time execution model, so BerkeleyDB inherits that model, and Rel inherits it from BerkeleyDB.

Query Interface[11][16]


In Rel, users can write queries in two ways. First, they can directly send queries in Tutorial D, where the the language interpreter will parse and process the queries. Second, they can use the Rel application’s visual query language. Queries made with this will get transformed into Tutorial D and will then be fed into the language processor.

Storage Architecture[07][17]


Since Rel uses the disk-oriented BerkeleyDB as a storage engine, it is also disk-oriented.

Storage Model[18][19]


Rel’s storage engine is a key-value store. Due to the fact that key-value pairs point to the memory location of an object as well as its size, there is no bound on the length of a data item.

System Architecture[05]


Rel consists of two parts: a Rel database server and DBrowser, the client application. The role of DBrowser is to send Tutorial D expressions to the server, while the server itself does the actual query processing. Multiple clients can be connected to the same server, but the server itself is a single node, meaning the system is shared-everything.

Citations

20 sources
  1. Rel – The desktop relational database management system. reldb.org
  2. GitHub - DaveVoorhis/Rel: Rel is a desktop database management system that implements Date & Darwen's "Tutorial D" database language. · GitHub github.com
  3. Read – Rel reldb.org
  4. https://en.wikipedia.org/wiki/Rel_(DBMS) wikipedia.org Dead — Check Archive
  5. Architectural Overview – Rel reldb.org
  6. Background – Rel reldb.org
  7. The Architecture of Open Source Applications (Volume 1)Berkeley DB aosabook.org
  8. Berkeley DB Reference Guide: Checkpoints stanford.edu
  9. Chapter 10.  Berkeley DB Concurrent Data Store Applications oracle.com
  10. https://reldb.org/forum/viewtopic.php?f=13&t=14&p=19#p19 reldb.org Dead — Check Archive
  11. Overview – Rel reldb.org
  12. https://reldb.org/forum/viewtopic.php?t=502 reldb.org Dead — Check Archive
  13. Current Limitations and Work in Progress – Rel reldb.org
  14. Evaluate An SQL Statement sqlite.org
  15. Oracle Berkeley DB SQL API oracle.com
  16. Screenshots – Rel reldb.org
  17. Oracle Berkeley DB oracle.com
  18. Berkeley DB - Wikipedia wikipedia.org
  19. Berkeley DB: DBT stanford.edu
  20. https://reldb.org/forum/viewtopic.php?f=12&t=2 reldb.org Dead — Check Archive
Revision #7