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

SciDB is a multi-dimensional array DBMS designed for scientific workloads and data sets.

Developer
Country of Origin
US
Start Year
2008 [05]
Project Types
Academic, Commercial, Open Source
Written in
C++
Supported Languages
C++, Python, R
Embeds / Uses
PostgreSQL, RocksDB
Operating System
Linux
Licenses
AGPL v3, Proprietary
Twitter
@scidb[04]

SciDB is a multi-dimensional array DBMS designed for scientific workloads and data sets.

History[05][06][07][08][09][10][11][12][13][14][15]


SciDB emerged from the Extremely Large Data Base (XLDB) Conference first hosted in 2007. The conference was organized by the SLAC National Accelerator Laboratory’s Scalable Data Systems team to address the gap between current database systems and the needs of data-intensive scientific projects such as the Large Synoptic Survey Telescope (LSST) astronomical survey. Mike Stonebraker and Dave Dewitt agreed to lead the development of a database that would fulfill the needs of these projects. A SciDB workshop was hosted at the second XLDB conference in 2008 and code development began the same year. In 2009, Mike Stonebraker and Marilyn Matz co-founded Paradigm4.

Paradigm4’s team developed SciDB into a commercial software product with two offered versions of SciDB: an open-source, Community Edition, and a proprietary, Enterprise Edition that offers additional functionality and customer-specific solutions.

The last version of the Community Edition was released in 2020, despite newer updates to the Enterprise Edition.

Compression[16][17][06]


SciDB allows users to define how each attribute of an array will be compressed when the array is created. The default is no compression. The additional options are zlib, bzlib, or null filter (null suppression) compression. Since SciDB stores data by attribute, vertically partitioning logical chunks of an array into single-attribute physical chunks, the specified compression is used on a chunk-by-chunk basis. If certain parts of a chunk are accessed more often than others, causing overhead due to decompression and recompression, SciDB can partition a chunk into tiles and compress on a tile-by-tile basis. Run-length encoding is used to compress recurring sequences of data. In addition, SciDB’s storage manager compression engine can split or group logical chunks in order to optimize memory usage while remaining within the limit of the buffer pool’s fixed-size slots.

Concurrency Control[17][06][18][19]


Data Model[06][20][21][22]


SciDB supports multi-dimensional arrays. Upon creating an array, the user specifies its dimensions and attributes. Each unique set of dimensions maps to a single cell in the array. Each cell is defined by a collection of attributes, where an attribute represents a single data value. Both dimension and attribute data types can be user-defined. This provides users with the flexibility to specify coordinates and/or classifications that fit their applications. If dimensions are not specified, SciDB creates a data frame - an unordered group of cells. Users can also create temporary arrays, which are stored in-memory and do not keep deltas of changes like non-temporary arrays do.

Foreign Keys[23]


Foreign keys are not part of the array data model used by SciDB.

Hardware Acceleration[24]


SciDB is intended to be used with inexpensive and widely available hardware. This design decision provides users flexibility in maintaining their system, they can add nodes in order to increase capacity and/or performance, and provides users the freedom to choose the hardware that best fits their requirements.

Indexes[06][25][26][27]


SciDB does not use an index. Instead, it maps chunks of an array to specific nodes by hashing the chunk’s coordinates. SciDB also has a map that allows dimensions specified with user-defined data types to be represented internally as integers, which is called an index in the SciDB documentation.

Logging[17][18]


SciDB logs all queries using [Apache log4cxx] (https://logging.apache.org/log4cxx/latest_stable/).

Query Interface[17][06][28][29]


Storage Architecture[06]


SciDB is disk-oriented, which allows it to support the large scale of data that may be stored for a single application.

Storage Model[17]


SciDB stores data by attribute, vertically partitioning logical chunks of an array into single-attribute physical chunks.

Stored Procedures[17]


System Architecture[06][24][30][27]


SciDB has a shared-nothing system architecture, which is intended to support the scalability of the system. Query processing occurs at each node on the data at that node. When creating an array, a user may specify the distribution of the array data: whether chunks will be stored primarily on one node or replicated on all nodes.

Citations

30 sources
  1. https://scidb.org scidb.org Dead — Check Archive
  2. SciDB Documentation - SciDB Documentation - Confluence atlassian.net
  3. SciDB - Wikipedia wikipedia.org
  4. https://twitter.com/scidb twitter.com
  5. Report from the SciDB Workshop | Data Science Journal codata.org
  6. The Architecture of SciDB odbms.org Dead — Check Archive
  7. About | XLDB xldb.org
  8. Research: X-ray science, accelerators, physics of the universe and more | SLAC National Accelerator Laboratory stanford.edu
  9. NSF-DOE Vera C. Rubin Observatory News Collection | SLAC National Accelerator Laboratory stanford.edu
  10. Rubin Observatory | Opening a digital window for discovery of the dynamic universe. lsst.org Dead — Check Archive
  11. A demonstration of SciDB: a science-oriented DBMS acm.org
  12. SciDB: Relational daddy answers Google, Hadoop, NoSQL theregister.com
  13. https://blog.goldenseeds.com/how-did-she-do-it-a-q-a-with-marilyn-matz-ceo-and-co-founder-of-paradigm4-2d196d95c83b goldenseeds.com Dead — Check Archive
  14. https://www.crunchbase.com/organization/paradigm4 crunchbase.com
  15. https://paradigm4.com/scidb-is-available-in-two-editions paradigm4.com Dead — Check Archive
  16. https://forum.paradigm4.com/t/chunk-compression-on-disk/48 paradigm4.com Dead — Check Archive
  17. https://www.nersc.gov/assets/Uploads/scidb-userguide-12.3.pdf nersc.gov Dead — Check Archive
  18. https://forum.paradigm4.com/t/provenance-in-scidb/1067/2 paradigm4.com Dead — Check Archive
  19. https://forum.paradigm4.com/t/avoid-creating-array-versions/486 paradigm4.com Dead — Check Archive
  20. https://paradigm4.atlassian.net/wiki/spaces/scidb/pages/673810295/SciDB+Database+Arrays atlassian.net
  21. https://paradigm4.atlassian.net/wiki/spaces/scidb/pages/673810303/Array+Attributes atlassian.net
  22. https://paradigm4.atlassian.net/wiki/spaces/scidb/pages/673810309/Array+Dimensions atlassian.net
  23. https://forum.paradigm4.com/t/is-there-something-like-foreign-keys/637 paradigm4.com Dead — Check Archive
  24. https://paradigm4.com/technology paradigm4.com Dead — Check Archive
  25. https://forum.paradigm4.com/t/wanted-to-konw-something-about-the-storage-of-scidb/466/4 paradigm4.com Dead — Check Archive
  26. https://forum.paradigm4.com/t/does-scidb-support-index-on-data/1364 paradigm4.com Dead — Check Archive
  27. https://paradigm4.atlassian.net/wiki/spaces/scidb/pages/673810315/Array+Distribution atlassian.net
  28. https://paradigm4.atlassian.net/wiki/spaces/scidb/pages/673810276/The+iquery+Client atlassian.net
  29. https://scidb-py.readthedocs.io/en/stable/query.html readthedocs.io Dead — Check Archive
  30. https://dl.acm.org/citation.cfm?id=1807271 acm.org
Revision #39