in-memory data grid for horizontal scaling

Galaxy is an open-source high-performance in-memory data-grid
(IMDG) that can serve as a basis for building distributed applications that
require fine-tuned control over data placement and/or custom
distributed data-structures.


Building Distributed Applications

Galaxy’s main function is to distribute data objects (stored as simple byte arrays) among cluster nodes for distributed processing. It also provides point-to-point messaging with guaranteed delivery and guaranteed ordering, as well as a cluster configuration management service.


Dynamic Migration

What makes Galaxy different from other IMDGs is the way it assigns data items to cluster node. Instead of sharding the data on one of the keys using a consistent hashing scheme, Galaxy dynamically moves objects from one node to another as needed using a cache-coherence protocol similar to that found in CPUs. This makes Galaxy suitable for applications with predictable data access patterns, i.e. applications where the data items behave according to some proximity metric, and items that are “closer” together are more likely to be accessed together than items that are “far” apart.
Galaxy is used to distribute Quasar and/or SpaceBase applications.


RAM storage and code/data co-location

Application code runs on the same cluster nodes (called peer nodes), and processes the data objects, which are kept in RAM.


Galaxy stores data in a fully consistent manner, meaning that if data item B has been modified after a change to data item A, no node in the cluster will see A’s new value but B’s old one.

Disk persistence and server nodes

The data items can optionally be persisted to disk on one or more special nodes called server nodes.

High Availability

Galaxy can withstand a failure in one or more of the nodes, providing high-availability. This is achieved by either running Galaxy with a server node (which persists all of the grid data to disk) or by running a slave node (or more) for each of the peers, or both.


Galaxy provides a point-to-point messaging service that guarantees message delivery and ordering. A message can be sent to a known node or to the unknown (to the application) owner of a given data item. So if Galaxy’s data-item migration makes moving data to code simple, Galaxy’s messages make moving an operation (code) to data just as simple.


All of Galaxy’s components are monitored to enable full diagnoses of failure or performance problems.



Follow Galaxy
on GitHub