-
Notifications
You must be signed in to change notification settings - Fork 19
01a tutorial data
The examples in this tutorial are based on a movie database, available at the following GitHub repository:
https://github.com/bbrumm/databasestar
The SQL files published in the repository were converted into DBest-indexed .dat files. These files incorporate a primary index, enabling efficient lookups and ordered reads.
The .dat files can be found here. Unzip the files before loading them into the tool.
Below is the schema of the database, presented in SQL-like format:
CREATE TABLE person (
person_id INT,
person_name TEXT,
PRIMARY KEY (person_id)
);
CREATE TABLE movie (
movie_id INT,
title TEXT,
release_year INT,
PRIMARY KEY (movie_id)
);
CREATE TABLE movie_cast (
movie_id INT,
person_id INT,
character_name TEXT,
gender_id INT,
cast_order INT,
PRIMARY KEY (movie_id, person_id)
);
CREATE TABLE movie_crew (
movie_id INT,
person_id INT,
department_id INT,
job TEXT DEFAULT NULL,
PRIMARY KEY (movie_id, person_id)
);
CREATE TABLE idx_cast_order (
cast_order INT,
movie_id INT,
person_id INT,
PRIMARY KEY (cast_order),
FOREIGN KEY (movie_id, person_id) REFERENCES movie_cast (movie_id, person_id)
);
CREATE TABLE idx_year (
release_year INT,
movie_id INT,
PRIMARY KEY (release_year),
FOREIGN KEY (movie_id) REFERENCES movie (movie_id)
);
CREATE TABLE idx_cast_p (
person_id INT,
movie_id INT,
PRIMARY KEY (person_id),
FOREIGN KEY (movie_id, person_id) REFERENCES movie_cast (movie_id, person_id)
);
CREATE TABLE idx_crew_p (
person_id INT,
movie_id INT,
PRIMARY KEY (person_id),
FOREIGN KEY (movie_id, person_id) REFERENCES movie_crew (movie_id, person_id)
);
The SQL format shown above is not directly supported by the tool. It is provided solely to describe the structure and content of each .dat file. Additionally, while the schema includes FOREIGN KEY constraints to illustrate relationships between tables, these are not enforced in practice. Instead, they serve as documentation for the relational structure of the data.
All .dat files are indexed, and some act as non-clustered indexes (identified by filenames starting with idx). These indexes link to another clustered .dat file containing the complete records. For example:
-
idx_year:
This is a non-clustered B+ tree index designed for efficient lookups using therelease_yearcolumn.- The
movie_idcolumn inidx_yearserves as a reference to the clusteredmovie.datfile. - By using the
movie_id, you can query themovie.datfile to retrieve all associated columns from themovietable.
- The
DBest utilizes these indexes to facilitate efficient data access. For additional information about DBest's indexing strategy, refer to the following link: DBest Indexing Strategy.
- Data Sources
- Operators
- Creating a query tree
- Using basic operators
- Running queries
- Other query options
- Working with CSV
- Working with temporary tables
- Understanding schemas
- Understanding indexes
- Creating indexes
- Equi-joins and non-equi-joins
- Join types
- Join algorithms
- Using boolean expressions
- Comparing query costs
- Optimizarion techniques
- Query Examples