Hello TileDB team,
I am writing an article about tileDB for my school project. Currently, I am lacking knowledge of how tileDB support many features that might be included in a traditional database. For this reason, I would kindly ask if you could help me by answering the following questions:
- Does tileDB support join operations?
- Does tileDB support stored procedures and foreign keys?
- Does tileDB support views and materialised views?
- When does tileDB write data back to disk? How does tileDB maintain checkpoint?
- What isolation levels does tileDB support?
- Does tileDB support logging?
- Does tileDB rely on specialised hardware, for example GPUs, to speed up query operations?
Thank you so much!!
The open-source TileDB library is not a traditional DBMS. It is rather a storage module, similar to HDFS or Zarr, which introduces a general multi-dimensional array format that goes way beyond SQL. Therefore, questions 1-6 are not really applicable to the open-source TileDB. However, TileDB can be used as the storage module of another DBMS, e.g., you can see what we have done with our PrestoDB connector. Now, you can have more or less all these features inherited from PrestoDB, while enjoying the performance benefits and interoperability of TileDB storage. Having said that, we do have an actual product in the works that might be offering some of the features mentioned in those questions, but this is a separate future discussion.
Regarding 7, we do use hardware acceleration in compression/decompression and encryption/decryption when this is available in your CPU, but no GPU support just yet.
I hope this helps.
Can we append new columns with TileDB or do we need to create a new table?
It would be great to have the option to reshape tables (from wide to long format and vice versa).
Unfortunately, not yet. We have an open issue for that: https://github.com/TileDB-Inc/TileDB/issues/53. Hopefully we will add this functionality soon.