RexDB is an integrated registry data management platform created by Prometheus Research, LLC, aiming to facilitate data management for a wide range of research in autism and associated disorder. The platform is composed of three core component: RexPlatform, RexAcquire and RexMart, each having a different functionality.
RexPlatform (also addressed as RexApplication) is a toolkit that enables installation of necessary components needed for manipulating a RexDB instance. It supplies an infrastructure for data management system that is both centralized and customizable.
RexAcquire is a comprehensive Electronic Data Capture (EDC) system including an Extract, Transform and Load (ETL) mechanism. It separates data acquisition from the transactional system. It captures data from three electronic data capture systems: RexEntry, RexSurvey and RexMobile.
RexMart allows users to manipulate data sets from central database so that users are able to understand their research data. It separates ad hoc querying from the transactional system.
In 2005, RexDB was first released for Small Research Groups at Yale University. In 2007, RexDB was used for Simons Simplex Collection. In 2011, in order to benefit the scientific community, Prometheus Research decided to open source the RexDB platform, marking the beginning of the open source initiative. The initiative also accompanied a complete new redesign of all elements of the platform. In 2012, RexDB was released open source under AGLv3 as "RexDB 3.0." In 2013, RexDB was adapted to support disease and procedure specific registries.
RexDB supports database access based on HTSQL. Meanwhile it also supports JSON datatype and SQL functions. Since some math functions provided by PostgreSQL are exposed to HTSQL, they are also supported.
Nested Loop Join Hash Join Sort-Merge Join
Rex.deploy wraps a number of PostgreSQL functions, and join is one of them. Since PostgreSQL supports Hash Join, Nested Loop Join and Sort-Merge Join, RexDB also utilizes those three types of join. The threshold and other configurations in RexDB's join are consistent with those in PostgreSQL.
RexDB's storage is implemented in Rex.attach. It is a file storage, which user needs to specify the correct path to a directory where files will be stored. It also supports attachments storage in Amazon S3, Google Cloud Storage and Minio, including some other S3-compatible server.
B+Tree Hash Table Inverted Index (Full Text)
Based on the implementation of rex.db - the database configuration and setting component of Rex.DB, it's up to the admin and user to determine what type of database server they want to use. Therefore the indexing method is determined case by case. According to the documentation, Rex.DB supports sqlite, mysql and pgsql so far. Since these databases use B+Tree, Hash Table and Inverted Index, Rex.DB also supports them.
RexDB does support the concept of foreign key constraints, shown in REX.Deploy, which is the database schema management system of RexDB. The deployment only occurs when table id a foreign key constraint are present. If they are not, then they are created. The FOREIGN KEY constraint is also created with ON DELETE SET DEFAULT if the link is not a part of the table identity, otherwise it is created with ON DELETE CASCADE.
The overall data model is composed of several sub-data models, illustrated in the Entity Relationship Diagrams (ERDs) in the citation. Because RexDB is developed for clinical research purpose, the data models it contains are domain specific, such as consent data model, disorder data model, and study data model etc.
RexDB's storage units are file based.
Prometheus Research, LLC
Prometheus Research, LLC