Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

TileDB-Inc/TileDB-MariaDB

Open more actions menu

Repository files navigation

MyTile

Note

TileDB's SQL-query support is now provided by TileDB Tables. The TileDB storage engine for MariaDB, imported as tiledb.sql, and also known as MyTile or TileDB-MariaDB, is now deprecated.

Build Status tiledb-mariadb tiledb-mariadb-server

MariaDB storage engine based on TileDB.

Quickstart Usage

Docker

Docker images are available on Docker Hub for quick testing of the mytile storage engine.

Variants

Supported tags

  • latest: latest stable release (recommended)
  • dev: development version
  • v0.x.x for a specific version

Examples

The tiledb-mariadb image starts a mariadb server and connects to it from the shell for you.

docker run --rm -e MYSQL_ALLOW_EMPTY_PASSWORD=1 -it tiledb/tiledb-mariadb

If you want to access arrays on s3, you will need to add your AWS keys as env variables

docker run --rm -e MYSQL_ALLOW_EMPTY_PASSWORD=1 -e AWS_ACCESS_KEY_ID="<key>" -e AWS_SECRET_ACCESS_KEY="<secret>" -it tiledb/tiledb-mariadb

or mount a local array into the Docker container with the -v option:

docker run -e MYSQL_ALLOW_EMPTY_PASSWORD=1 -it --rm -v /local/array/path:/data/local_array tiledb/tiledb-mariadb

Example SQL Usage

TileDB Arrays can be access directly via their URI.

Show create table:

show create table `s3://my/array`\G

Basic select:

select * from `s3://my/array`;

Use assisted table discovery for long uris:

create table my_array ENGINE=mytile uri='s3://my_bucket/arrays/sub_prefix/path_is_longer_than_64_chars/my_array_1';
select * from my_array;

Create table:

CREATE TABLE `s3://bucket/regions`(
  regionkey bigint WITH (dimension=true),
  name varchar,
  comment varchar
  ) uri = 's3://bucket/region' array_type='SPARSE';

Installation

Docker

To build either docker image locally simply use the following:

git clone https://github.com/TileDB-Inc/TileDB-MariaDB.git
cd TileDB-MariaDB

# tiledb-mariadb
docker build -t mytile -f docker/Dockerfile .

# tiledb-mariadb-server
docker build -t mytile -f docker/Dockerfile-server .

Requirements

Requires MariaDB 10.4.8 or newer.

Inside MariaDB Source Tree

git clone git@github.com:MariaDB/server.git -b mariadb-10.5.8
cd server
git submodule add https://github.com/TileDB-Inc/TileDB-MariaDB.git storage/mytile
mkdir build && cd build
cmake ..
make -j4

Running Unit Test

Once MariaDB has been build you can run unit tests from the build directory:

./mysql-test/mtr --suite mytile

That will run all unit tests defined for mytile

Features

  • Based on TileDB arrays
  • Supports basic pushdown of predicates for dimensions
  • Supports basic pushdown of query conditions for attributes
  • Supports basic pushdown of aggregates (SUM, AVG, MAX, MIN) for attributes
  • Create arrays through CREATE TABLE syntax.
  • Existing arrays can be dynamically queried
  • Supports all datatypes

Known Issues

  • Condition pushdown only works for constants not sub selects
  • Buffers will double in size for incomplete queries with zero results
  • MyTile is not capable of binlogging currently both stmt and row based is disabled at the storage engine level
  • Aggregates on multi-valued attributes are not supported.
  • Aggregate pushdown does not work when using multiple functions on a column. e.g. SELECT COALESCE(SUM(count), 0) from allele;. Such queries revert back to MariaDB filtering.
  • Aggregate pushdown does not work with GROUP BYs. Such queries revert back to MariaDB filtering.

About

MyTile is a MariaDB storage engine for accessing TileDB arrays

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 16

Morty Proxy This is a proxified and sanitized view of the page, visit original site.