Reading the docs of both, they seem to be very similar to the point that i can't decide which one to pick.
to add some context:
My use case is schema-less nested collections of objects (think JSON), I need to be able to do joins and filtering on the nested objects (2-3 levels deep).
For example sake assume a collection of cars:
{
type: "car",
engine: {
size: 2,
maker: {
country: "china",
importer: [
{
company: "abc-inc",
id: 234234
},
{
company: "abc-corp",
id: 321321
},
]
},
maker: "Ford"
}
I would need to query all cars where the importer has an engine of size=xx , made in country=xxxx imported by importer id = xxxxx which will return a collection of type "car".
I would need to query all importers in the car collection where the return is a collection of type "importers". Then do the same query but with importers of a specific id.
This looks like a simple SQL join in Apache Ignite. However, you will need to define the minimal SQL schema you need for queries.
In your case, you would need to have cache CAR, cache ENGINE, and cache IMPORTER. The query will look like this:
SELECT * from CAR c, ENGINE e, IMPORTER i where c.importer_id = i.id and c.engine_id = e.id and c.country = "xxxx" and e.size = xx;
You will also need to decide on your replication strategy and choose if some or all of your caches need to be PARTITIONED or REPLICATED.
More on SQL here: SQL Grid
More on replication strategy here: Cache Modes