Persisted Deletes as an Option (AER-1226) (3.10.0)

Deletes are not currently persisted:

I read the above thread and know the Aerospike product prioritizes performance over persisted deletes, but some work loads involve infrequent deletes, so persisted delete support from the database (instead of Client-side workarounds, which can be even slower) can make a lot of sense.

I suggest adding support for persisted deletes at either:

  1. In aerospike.conf, at the namespace level, or;
  2. In the various clients with an overloaded delete() function that accepts a persist=true flag AND UDF support

Aerospike 3.10.0 introduces durable deletes for Aerospike Enterprise. Learn more about how they work here:

I request that Durable Deletes be made available for the Community Edition and believe that this is beneficial for both the clients as well as Aerospike.

Free/Community editions (e.g. some other DB products) typically provide a solid, convenient foundation in order to make it easy for users to work with the product. Then, as the developer’s web service grows and requires more advanced features, higher capacities, or better support, paid subscriptions are available. Usually, such advanced features refer to things like cross-site replication, partitioning, detailed monitoring/analyses, and other enhancements whose price is then easily justified by the user, who is likely generating more/enough revenue by then.

On the other hand, I view durable deletes as a more fundamental feature, crucial to attract users to trying out Aerospike in the first place. The current, nondurable deletes forces the user to choose between one of several unfavourable scenarios: (1) living with reappearing data (whose records may no longer be referenced, resulting in a permanent storage leak), (2) an empty cold start requiring GBs of data reads upon every restart, or (3) using a clumsy, not-bullet-proof tombstone workaround that also eats away at expensive RAM (due to otherwise-unnecessary indexing of tombstone records).

I have written thousands of lines of Aerospike code (Java and Lua code) and otherwise love the product so far. Down the road, should my service grow popular and generate revenue, a paid subscription might even make more sense from a business perspective. But for now I am still debating what path I should go down.

I’m sure there are other prospective users who feel the same, that they’d love to get started on solid footing first, and desire fundamental functionality to be available at the free tier. If users cannot start comfortably at the low end of the scale, they may be prevented from growing with the system and eventually becoming paying supporters.

Is Aerospike considering releasing Durable Deletes for the Community Edition? I would love to hear how the Aerospike team feels about the situation.