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

Database Entry

Blazegraph


Blazegraph is an open-source graph database system written in Java. Blazegraph is supported for use on a standalone server, as well as a highly available (HA) replication cluster. ACID properties are fully supported in both use cases. Blazegraph makes use of multi-version concurrency control (MVCC). As a graph database, Blazegraph is optimal for storing and querying linked data. Blazegraph uses RDF and RDR as the standards for the data model.[04]

Source Code
https://github.com/blazegraph/database[02]
Developer
Country of Origin
US
Start Year
2006 [24]
End Year
2022 [25]
Former Name
Bigdata
Acquired By
Project Types
Commercial, Open Source
Written in
Java
Supported Languages
C, C++, Java, JavaScript, PHP, Python, Ruby
Inspired By
Cloud BigTable
Operating Systems
Linux, macOS, Windows
License
GPL v2

Database Entry

Blazegraph


Blazegraph is an open-source graph database system written in Java. Blazegraph is supported for use on a standalone server, as well as a highly available (HA) replication cluster. ACID properties are fully supported in both use cases. Blazegraph makes use of multi-version concurrency control (MVCC). As a graph database, Blazegraph is optimal for storing and querying linked data. Blazegraph uses RDF and RDR as the standards for the data model.[04]

History[02][05][06][07][08]


Blazegraph, formerly known as Bigdata, was released in August of 2016. Its former version, Bigdata, was released in February of 2015. Blazegraph was announced as SYSTAP, LLC's flagship product. Blazegraph is still supported as of December 2018. Blazegraph was developed to work with web-scale semantic graphs. Blazegraph's key-range partitioned B+ tree indexing was influenced by the architecture of Google's BigTable system. SYSTAP, LLC received funding from DARPA to develop the GPU-acceleration feature of Blazegraph. Blazegraph has been used as part of commercial applications in addition to being resold by various OEM companies.

Amazon acquired Blazegraph in 2018 and the open-source project was abandoned.

Checkpoints[05]


Blazegraph supports consistent checkpoints and is capable of providing a consistent database state given a user-specified commit point. During checkpoint operations, Blazegraph codes records into binary format before writing them onto disk. Blazegraph also supports group commits during checkpoint operations.

Compression


Blazegraph uses dictionary encoding as the compression method for values stored in graph nodes and edges.

Concurrency Control[09]


Blazegraph supports transactions. Blazegraph uses Multi-Version Optimistic Concurrency Control (OCC).

Data Model[04]


Blazegraph functions as a triplestore (RDF) and graph database. As a graph database, Blazegraph uses a graph structure of nodes and edges to represent data. Blazegraph also supports the triplestore (RDF) data model, which can be viewed as a specialized version of graph databases that is optimized for storing and retrieving triples. The advantage of RDF is that it provides a standardized data model that support data merging between differing schemas.

Foreign Keys[10]


Blazegraph supports the use of foreign keys, as well as joins on foreign keys.

Hardware Acceleration[11][12]


GPU

The enterprise version of Blazegraph supports drop-in GPU acceleration. The GPU-accelerated Blazegraph supports graph queries that are 200-300x faster than without the hardware acceleration. The GPU acceleration works by exploiting the superior main memory bandwidth of GPUs.

Indexes[13]


Blazegraph uses key-range partitioned B+ tree indices as part of its architecture. Keys and values are both implemented as byte arrays. Each index is a tuple consisting of the key, value, a "deleted" flag, and a revision timestamp. The "deleted" flag signifies whether or not the item has been deleted and thus should be considered historical data. Blazegraph uses read-optimized, read-only B+ tree files for each key-range partition to support faster doubly-linked navigation between sibling leaves in the tree.

Isolation Levels[14]


Blazegraph uses snapshot isolation. Read-only transactions return a fully consistent view of the database state as of the user-specified commit point. Read-write transactions buffer writes on isolated indices. They commit only if the write set has been validated.

Joins[15]


Blazegraph supports both nested index joins and hash joins. For RDF databases, the access path for nested index joins are pre-existing. Hash joins are built dynamically during query evaluation. Blazegraph supports hash join operators that run on JVM heap, as well as hash join operators that use the native process heap and memory manager. The former is more appropriate for lower volumes of data, while the latter is more appropriate for higher volumes. The latter type of hash joins is superior for higher volumes of data because it can support as much data as available RAM. The latter also does not result in overhead issues with the JVM garbage collector, while the former may.

Logging[16]


Blazegraph maintains a log file for each write set. Blazegraph uses these log files in conjunction with snapshots to support disaster recovery, particularly when missing or corrupt files prevent resynchronization from occurring.

Query Compilation[17]


Stored procedure compilation is supported in Blazegraph through the SPARQL extensions. A stored query can take the form of a parameterized SPARQL query or simply contain procedural application logic. With Blazegraph, stored queries are advantageous because they allow for application logic to be carried out on a server without having to marshal data across the HTTP interface.

Query Execution[18][05]


Blazegraph uses a vectorized query execution model that supports concurrency at the operator level and query plan level.

Query Interface[19]


Blazegraph's query interface aligns with SPARQL standards. Note that SPARQL semantics uses a sequential approach in join operations. Blazegraph may reorder join groups in order to minimize query time.

Storage Architecture[20]


Blazegraph supports both in-memory storage and disk-oriented storage. The full graph database does not have to be stored in memory. Faster disk speed than provides higher loading and query performance than greater RAM.

Storage Model[05][21]


Blazegraph uses a hybrid storage model design. Blazegraph uses a row store approach but also gives consideration to column family. Inspired by Google BigTable, Blazegraph restricts concurrency control to ACID operations on items that share both row and column family. This is done to facilitate the use of a local locking scheme.

Storage Organization[05]


Blazegraph makes use of copy-on-write mechanisms for index updates on its B+ tree. With unisolated operations, writes are done on the index objects. The indices are checkpointed once the transaction commits; otherwise, the write set is discarded. However, with isolated operations, writes are done with a copy-on-write approach. The transaction can commit as long as there are no write conflicts.

Stored Procedures[17]


Blazegraph supports stored procedures through SPARQL extensions. These allow for more complex logic to be applied to the database. A stored query can be used by invoking an instance of the associated stored query class.

System Architecture[22][23]


Blazegraph makes use of a shared-nothing system architecture. When used in the highly available (HA) deployment mode, continued operation is possible with a quorum of present nodes in the case of failure.

Citations

26 sources
  1. https://www.blazegraph.com blazegraph.com Dead — Check Archive
  2. GitHub - blazegraph/database: Blazegraph High Performance Graph Database · GitHub github.com
  3. Blazegraph - Wikipedia wikipedia.org
  4. https://wiki.blazegraph.com/wiki/index.php/Concepts blazegraph.com Dead — Check Archive
  5. https://www.blazegraph.com/whitepapers/bigdata_architecture_whitepaper.pdf blazegraph.com Dead — Check Archive
  6. https://www.blazegraph.com/whitepapers/bigdata_whitepaper_07-08-2009.pdf blazegraph.com Dead — Check Archive
  7. Bigdata - Semantic Web Standards w3.org
  8. Blazegraph - Bloor Research bloorresearch.com
  9. https://wiki.blazegraph.com/wiki/index.php/TxGuide blazegraph.com Dead — Check Archive
  10. 503 Service Temporarily Unavailable blazegraph.com Dead — Check Archive
  11. https://wiki.blazegraph.com/wiki/index.php/Roadmap#Accelerating_Features blazegraph.com Dead — Check Archive
  12. https://www.blazegraph.com/press/gpu-launch-2015-12-15/ blazegraph.com Dead — Check Archive
  13. https://wiki.blazegraph.com/wiki/index.php/BTreeGuide blazegraph.com Dead — Check Archive
  14. https://wiki.blazegraph.com/wiki/index.php/TxGuide#Kinds_of_transactions blazegraph.com Dead — Check Archive
  15. https://wiki.blazegraph.com/wiki/index.php/QueryEvaluation#Joins blazegraph.com Dead — Check Archive
  16. https://wiki.blazegraph.com/wiki/index.php/HAJournalServer#HA_Backup blazegraph.com Dead — Check Archive
  17. https://wiki.blazegraph.com/wiki/index.php/StoredQuery blazegraph.com Dead — Check Archive
  18. Google Sheets: Sign-in google.com Dead — Check Archive
  19. https://wiki.blazegraph.com/wiki/index.php/SPARQL_Order_Matters blazegraph.com Dead — Check Archive
  20. https://wiki.blazegraph.com/wiki/index.php/Hardware_Configuration blazegraph.com Dead — Check Archive
  21. https://www.blazegraph.com/pubs/bigdata-book-chapter.pdf blazegraph.com Dead — Check Archive
  22. https://www.blazegraph.com/whitepapers/bigdata_ha_whitepaper.pdf blazegraph.com Dead — Check Archive
  23. https://www.blazegraph.com/yahoo7-2x/ blazegraph.com Dead — Check Archive
  24. https://wiki.blazegraph.com/wiki/index.php/About_Blazegraph blazegraph.com Dead — Check Archive
  25. What release should I use? · Issue #242 · blazegraph/database github.com
  26. Blazegraph fork? · Issue #86 · blazegraph/database github.com
Revision #17 Last Updated: