Apache Geode is an open-source, in-memory distributed data grid that scales out horizontally across nodes.[05][06][07]
- Website
- http://geode.apache.org[01]
- Source Code
- http://geode.apache.org/releases[02]
- Developer
- Country of Origin
- US
- Former Name
- Gemfire
- Project Type
- Open Source
- Written in
- Java
- Derived From
- Tanzu GemFire
- Operating System
- All OS with Java VM
- License
- Apache v2
History[07][08]
Originally released commercially in 2002 under GemStone Systems as Gemfire, it was first used in Wall Street trading platforms. In 2010, GemStone Systems was acquired by VMWare and by 2013, Pivotal had spun out of VMWare and took Gemfire with it. Pivotal then proceeded to submit Gemfire to the Apache Incubator in 2015 under the name Geode, and was graduated to a top-level project in 2016.
Concurrency Control[06]
Any modifications to caches are replicated and checked for consistency before acknowledging success. If there are any concurrent modifications, then changes are made according to time stamp.
Data Model[09][10]
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.
Foreign Keys[11][12]
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.
Indexes[13][14][06]
Geode uses hashCode() on the key to mapping a data entry to a specific position in the region, and the key is hashed using a fixed number of buckets.
Query Interface[17][18]
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:
Storage Architecture[19]
Geode follows the in-memory data grid (IMDG) outline. But it also has a disk store module to deal with data overflow and persistence. With the disk store, users can export data to disk when memory usage becomes too high or to persist data as a backup copy.
Citations
22 sources- http://geode.apache.org apache.org
- http://geode.apache.org/releases apache.org
- Overview (geode-core 2.0.0 API) apache.org
- https://en.wikipedia.org/wiki/Apache_Geode wikipedia.org
- https://cwiki.apache.org/confluence/display/GEODE/Index apache.org
- FAQ - Geode - Apache Software Foundation apache.org
- Apache Geode Spawns ‘All Sorts of In-Memory Things’ thenewstack.io
- The Apache Software Foundation Announces Apache® Geode™ as a Top-Level Project - The ASF Blog apache.org
- Index - Geode - Apache Software Foundation apache.org
- ApacheConBigData - Introducing Apache Geode - final.key linuxfound.org
- Understanding Custom Partitioning and Data Colocation | Geode Docs apache.org
- Colocate Data from Different Partitioned Regions | Geode Docs apache.org
- https://gemfire.docs.pivotal.io/99/geode/basic_config/data_entries_custom_classes/managing_data_entries.html pivotal.io
- Managing Data Entries | Geode Docs apache.org
- Apache Geode — Documentation apache.org
- How Geode Logging Works | Geode Docs apache.org
- Using Query Index Hints | Geode Docs apache.org
- Querying with OQL | Geode Docs apache.org
- Disk Storage | Geode Docs apache.org
- #GeodeSummit - Where Does Geode Fit in Modern System Architectures | PDF slideshare.net
- Announcing Apache Geode Milestone Releases 1.0.0-incubating M1 & M2 – Seeking Testers | Blogs Archive apache.org
- Open Sourcing GemFire - Apache Geode | PPTX slideshare.net