<p>In general HLLs are <strong>not</strong> GDPR compliant. This issue was somewhat addressed in a recent <a href="https://arxiv.org/pdf/1808.05879.pdf" rel="nofollow noreferrer">Google paper</a> (see Section 8: 'Mitigation strategies').</p>

<p>The hash function used in HLL are usually not cryptographically secure (usually MurmurHash), hence even with salting you might still be able to answer the question "is a user part of a HLL data structure or not" and that's a no no.</p>

<p>Afaik you would be in compliance if you keep HLLs around for longer than 30 days <strong>iff</strong> you apply a salted crypto hash prior to HLL aggregation (i.e. a salted SHA-2 or BLAKE2b, BLAKE3) and you destroy the salt after each &lt;30 day period. This would allow you to keep &lt;30 day intervals. You would not be able to merge HLLs over several intervals but only over 28 day chunks, but that can still be super valuable dependent on your business needs.</p>
Is usage analysis based on HyperLogLog compliant with GDPR?
<p>Context: we have telemetry system for our service and would like to track retention, how many users use various features, etc.</p>

<p>There are two options to deal with user identifiable information and be GDPR compliant:</p>

<ol>
<li>Support deleting user information based on request</li>
<li>Keep data for less than 30 days</li>
</ol>

<p>Option #1 is hard to implement (for telemetry system). Option #2 doesn't allow answering questions such as "what is 6-month retention for feature X?".</p>

<p>One idea how to get answers for above question is to calculate HyperLogLog blobs per feature every week/day and store them separately forever. This will allow moving forward to merge/dcount/calculate retention based on these blobs.</p>

<p>Assuming that any user identifiable information is gone after 30 days (after user account gets deleted), will HyperLogLog blobs still allow to track users or not (i.e. to answer whether a particular user used feature X two years ago)?</p>

<p>If it allows then it is not compliant (doesn't mean that it is compliant if it doesn't allow).</p>