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

Database Entry

XAP


XAP is a distributed in-memory data grid that has high throughput and low latency due to storing all data in memory. As a result, there is no transaction delay between physical I/O so XAP can be applied to distributed applications ranging from financial services to retail. XAP has 3 tiers to its services: Open source, Premium, and Enterprise. The open source edition supports data partitioning, event processing, and distributed execution. It also supports full transactionality by maintaining full ACID compliance.

Source Code
https://github.com/xap/xap[02]
Country of Origin
US
Start Year
2000 [16]
Project Types
Commercial, Open Source
Written in
Java
Supported Languages
C++, Java, Scala
Operating System
All OS with Java VM
License
Apache v2

Database Entry

XAP


XAP is a distributed in-memory data grid that has high throughput and low latency due to storing all data in memory. As a result, there is no transaction delay between physical I/O so XAP can be applied to distributed applications ranging from financial services to retail. XAP has 3 tiers to its services: Open source, Premium, and Enterprise. The open source edition supports data partitioning, event processing, and distributed execution. It also supports full transactionality by maintaining full ACID compliance.

History[04]


XAP is owned by GigaSpaces, which is an Israeli software company founded in 2000 by Nati Shalom. It was designed to be used to speed up performance or scalability of many existing database systems such as MySQL or MongoDB. XAP has many similarities to NoSQL with regards to the architecture such as using a scale-out model for scalability.

Concurrency Control[05]


XAP supports both optimistic concurrency control and pessimistic locking, however, OCC is the preferred strategy. With OCC, the idea is that you allow multiple users to read the same object, but only allow one user to update the object. XAP does this by maintaining a version number for each object. If multiple users try to update the same object at the same time, the ones that want to update a non-recent object will fail. This is better than pessimistic because locking may only be necessary in the worst case.

Data Model[06]


The data model is implemented as a document store, where a document is a collection of key-value pairs. The keys are strings and the values can be String, Date, or other documents so they can be nested.

Indexes[07]


XAP supports indexing over multiple properties. While indexing over multiple properties can improve read times, write times may slow down and take up more memory. XAP supports geospatial indexing implemented using an R-Tree as well as, nested property index, collection index, and dynamic indexing where indexes are dynamically added during runtime.

Isolation Levels[08]


XAP supports READ_UNCOMMITTED, READ_COMMITTED and REPEATABLE_READ.

Joins[09]


Logging[10]


All transactions are logged to a redo log. A primary node logs all the transactions into this log and if a backup node goes down, all the data gets replayed to a new backup that is created through a recovery process. Essentially, the redo log keeps all events that need to be replicated until the primary node re-establishes a connection with the backup. The redo log can be configured in from the max capacity to the buffer size that is being used to flush packets to disk.

Query Compilation


Query Interface[11]


To query the space, XAP supports both their custom query API such as querying by template or nested property queries as well as using SQL-like syntax.

Storage Architecture[12]


XAP is an In-Memory database using an In-Memory Data Grid (IMDG) to store data on a grid of memory nodes. This in-memory data grid follows ACID transactional rules.

Storage Model[13]


XAP uses Spaces, which is an in-memory service that stores entries of information. The space supports write, read, take, and notify.

Storage Organization


Stored Procedures[14]


Supported through extended queries.

System Architecture[15]


XAP uses an in-memory data grid which partitions data based on specific attributes within the data object. As a result, the data grid uses the shared-nothing policy where each primary node has a backup which ensures consistency and highly-availability.

Views


Citations

16 sources
  1. XAP - In-Memory Data Grid github.io
  2. https://github.com/xap/xap github.com Dead — Check Archive
  3. GigaSpaces Technical Documentation Home gigaspaces.com
  4. GigaSpaces - Wikipedia wikipedia.org
  5. https://docs.gigaspaces.com/xap/14.0/dev-dotnet/xapnet-tutorial-part6.html gigaspaces.com Dead — Check Archive
  6. https://docs.gigaspaces.com/xap/14.0/dev-java/document-overview.html gigaspaces.com Dead — Check Archive
  7. https://docs.gigaspaces.com/xap/14.0/dev-java/indexing.html gigaspaces.com Dead — Check Archive
  8. https://docs.gigaspaces.com/xap/14.0/dev-java/the-space-transactions.html#isolation-level gigaspaces.com Dead — Check Archive
  9. https://docs.gigaspaces.com/xap/14.0/dev-java/jpa-limitations.html gigaspaces.com Dead — Check Archive
  10. https://docs.gigaspaces.com/xap/14.0/admin/controlling-the-replication-redo-log.html gigaspaces.com Dead — Check Archive
  11. https://docs.gigaspaces.com/xap/14.0/dev-dotnet/querying-the-space.html gigaspaces.com Dead — Check Archive
  12. https://docs.gigaspaces.com/xap/14.0/overview/product-architecture.html gigaspaces.com Dead — Check Archive
  13. https://docs.gigaspaces.com/xap/14.0/dev-dotnet/the-gigaspace-interface-overview.html gigaspaces.com Dead — Check Archive
  14. https://docs.gigaspaces.com/product_overview/overview.html gigaspaces.com Dead — Check Archive
  15. https://docs.gigaspaces.com/sbp/first-real-time-big-data-analytics-app.html gigaspaces.com Dead — Check Archive
  16. https://www.crunchbase.com/organization/gigaspaces-technologies#section-overview crunchbase.com
Revision #16 Last Updated: