Migrate Data Model from Scylla to Aerospike

Hello,
I’m working on the backend of a Mobile Application that let’s users create Parties and upload Video Stories related to a specific Party.
I have previously used Scylla to store Parties and Story Metadata. But I did hit some roadblocks, like ttl expiration not being reported in CDC and no Geo search support. I now want to try out Aerospike and see if it is possible to migrate my current data model and all queries to Aerospike.

Party Data Model: It has a unique id and stores the user_id of the party creator. Lat/long can be used for Geo Searching (not possible in Scylla but in Aerospike). And a party also has a default TTL of 24 hours.

Supported Party Queries: A Party should have basic CRUD functionality and be identified by it’s id. Another query I want to support is getting all Parties of a user, in descending order of creation data, which i was able to use the timeuuid (UUID V1) for. To support party_by_user I had to create a materialized view which just copies the Party row into another table with a different primary key and clustering order, results in twice the data to be stored.

CREATE TABLE IF NOT EXISTS parties (
  id timeuuid PRIMARY KEY,
  user_id text,
  is_public boolean,
  lat float,
  long float,
  start_date timestamp,
) WITH default_time_to_live = 86400;

CREATE MATERIALIZED VIEW parties_by_user AS 
  SELECT * FROM parties
  WHERE id IS NOT NULL AND user_id IS NOT NULL
  PRIMARY KEY (user_id, id)
WITH CLUSTERING ORDER BY (id DESC);

The Story Data Model is similar: It also has a unique id of type timeuuid which I can use to order by in the materialzed views. The party_id & user_id are also stored so that I can query all Stories of a Party/User. The lat/long of a story is also recorded to allow Geo Searching for Stories nearby. For the Stories I needed two extra Materialized views to allow querying a Story by Party/User and also set the order to descending order of creation data. This result in a 3x of data.

Supported Story Queries: Basic CRUD operation through the id of a Story. Support finding nearby Stories through Geo Search on Lat/Long. Support getting all Stories of a User/Party ordered by creation date in descending order (Latest Story returned first)

CREATE TABLE IF NOT EXISTS stories (
  id timeuuid PRIMARY KEY,
  party_id text,
  user_id text,
  lat float,
  long float,
  url text,
  tagged_friends list<text>,
) WITH default_time_to_live = 86400;

CREATE MATERIALIZED VIEW stories_by_party AS 
  SELECT * FROM stories
  WHERE id IS NOT NULL AND party_id IS NOT NULL
  PRIMARY KEY (party_id, id)
WITH CLUSTERING ORDER BY (id DESC);

CREATE MATERIALIZED VIEW stories_by_user AS 
  SELECT * FROM stories
  WHERE id IS NOT NULL AND user_id IS NOT NULL
  PRIMARY KEY (user_id, id)
WITH CLUSTERING ORDER BY (id DESC);

I know that Geo Searching would not be a problem in Aerospike since I could create a Secondary Index on a GeoJSON point.
Getting all Parties/Stories of a user could be implemented with a Secondary Index on the user_id but I don’t know if it’s possible to order the results in Aerospike while using Secondary Indexes.

It would realy help me out if I could get some tips on how to implement these Queries optimally the Aerospike way and if Aerospike is even suited for my kind of Queries.