Although Geode doesn't support foreign keys, it provides a similar function called data colocation to store related data entries that have the same ID from different data regions into one single member. For example, the Geode system contains one customer records region and one customer orders region and they are related to each other through the customer.
By using colocation, users can maintain all records and orders information for a customer in a cache of a single member, which will be used by all operations regarding this customer only.
Read Uncommitted Repeatable Read
Geode supports repeatable reads, but its default allows for dirty reads. [old version, will change later]
Geode supports Object Query Language (OQL) to query region data. Although OQL and SQL share many syntactical similarities, they differ a lot, such as OQL doesn't support aggregation functions, it supports querying on complex object graphs, attributes, and by default OQL queries on the value of the region rather than the key, etc.
The syntax for a OQL query is:
[IMPORT package]
SELECT [DISTINCT] projectionList
FROM collection1, [collection2, …]
[WHERE clause]
[ORDER BY order_criteria [desc]]
Geode also supports query index hints to filter on the specified index.
Here is an example:
In a Geode distributed, system, caches are defined as an abstraction that describes the node of the in-memory storage for the data. Each cache contains regions, which data is stored in the form of key-value pairs. So caches are similar to the construct of databases and regions are similar to tables in a relational database.
http://geode.apache.org/releases/
http://geode.apache.org/releases/latest/javadoc/index.html
Apache
2015
Gemfire
C#, C++, Groovy, Java, Python, Scala