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.
- Website
- https://xap.github.io[01]
- Source Code
- https://github.com/xap/xap[02]
- Tech Docs
- https://docs.gigaspaces.com[03]
- Developer
- Country of Origin
- US
- Start Year
- 2000 [16]
- Project Types
- Commercial, Open Source
- Written in
- Java
- Supported Languages
- Java
- License
- Apache v2
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.
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 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.
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.
Citations
16 sources- XAP - In-Memory Data Grid github.io
- https://github.com/xap/xap github.com
- GigaSpaces Technical Documentation Home gigaspaces.com
- GigaSpaces - Wikipedia wikipedia.org
- https://docs.gigaspaces.com/xap/14.0/dev-dotnet/xapnet-tutorial-part6.html gigaspaces.com
- https://docs.gigaspaces.com/xap/14.0/dev-java/document-overview.html gigaspaces.com
- https://docs.gigaspaces.com/xap/14.0/dev-java/indexing.html gigaspaces.com
- https://docs.gigaspaces.com/xap/14.0/dev-java/the-space-transactions.html#isolation-level gigaspaces.com
- https://docs.gigaspaces.com/xap/14.0/dev-java/jpa-limitations.html gigaspaces.com
- https://docs.gigaspaces.com/xap/14.0/admin/controlling-the-replication-redo-log.html gigaspaces.com
- https://docs.gigaspaces.com/xap/14.0/dev-dotnet/querying-the-space.html gigaspaces.com
- https://docs.gigaspaces.com/xap/14.0/overview/product-architecture.html gigaspaces.com
- https://docs.gigaspaces.com/xap/14.0/dev-dotnet/the-gigaspace-interface-overview.html gigaspaces.com
- https://docs.gigaspaces.com/product_overview/overview.html gigaspaces.com
- https://docs.gigaspaces.com/sbp/first-real-time-big-data-analytics-app.html gigaspaces.com
- https://www.crunchbase.com/organization/gigaspaces-technologies#section-overview crunchbase.com