{"componentChunkName":"component---src-templates-tag-page-js","path":"/tags/data-structures/","result":{"data":{"site":{"siteMetadata":{"title":"M.Hassan Ahmed","author":"Hassan11196"}},"allMarkdownRemark":{"totalCount":2,"edges":[{"node":{"excerpt":"How many distinct things are in this stream? Distinct users today, distinct error signatures this hour, distinct workflow IDs that touched a…","fields":{"slug":"/2026-09-26-hyperloglog-count-distinct-at-scale/"},"frontmatter":{"date":"2026-09-26T00:00:00.000Z","title":"HyperLogLog: Count Distinct at Scale in 12KB","description":"Counting unique items exactly costs memory that grows with your data. HyperLogLog estimates the cardinality of billions in about 12KB. Here's how it works.","tags":["Algorithms","OpenSearch","Observability","Redis","Data Structures"],"thumbnail":{"childImageSharp":{"fluid":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsSAAALEgHS3X78AAAB7ElEQVQoz12RyZKbMBCGOWbACCSBEBZm38xuYxvHYI+XmZrjpHLP+79GGjunVP3V1VL3V7+6JeG8BqG0cPpjfn1E4yV/fyTTNTpdvMMpe7/DMThO2flW3D79YURJAf36k5Jk1ZFVgbDvRduyOVfdpWwveXlK8yHODutqLJpzlO7zaoRqEO90GsoLAZSCVtKCBsiMNStRjUghoUJDhQSIxZhniCWzzBhKMgnedA+qGoNjCJRCXAmxlIoG26Vm5U+tEcssr3WzwXQ7w2ksbwMNzGncaC/8rWakmplrLFN0B+BE52sqqhcMOQh41YT7wnRbnuyIqKxm8O8f7vVuTRMtd8hIZA1gM8F2QZbVi4QIJCTM39jpniVbErYaz42fJ/b7y/r1Jf58s+mMcCTrYoZ1u6CifjnDE0Q6pP3N7yYr7TW3xH6t2Wte7OPr52o38e6IoxYZsYyWkmrGeFnSZU3tigdbHvdG2FG/NsOO57OzlfV4VbFVG9XTMtjq88A5WL4hPjuDIS8Oznhjh5PRH58a+HH07g/3evMeH0a2tb2NE+/ndViZBtGM31TrNXPJvE4Xpb4sDbclqwbegkVNIRE1cWoi6n+LhNFgL7yYnVUmKdhVaaASXyXBf9JZQniGwQq+mvpzGw1fcYHdHwv2F7XYUxz50t48AAAAAElFTkSuQmCC","aspectRatio":1.899441340782123,"src":"/static/d8c408d0f784bb15fc0ce20a2f9339e1/40a76/hero.png","srcSet":"/static/d8c408d0f784bb15fc0ce20a2f9339e1/c972b/hero.png 340w,\n/static/d8c408d0f784bb15fc0ce20a2f9339e1/27625/hero.png 680w,\n/static/d8c408d0f784bb15fc0ce20a2f9339e1/40a76/hero.png 1360w,\n/static/d8c408d0f784bb15fc0ce20a2f9339e1/ed396/hero.png 2000w","sizes":"(max-width: 1360px) 100vw, 1360px"}}}}}},{"node":{"excerpt":"Every filter you type into a search box turns into a set of integers somewhere. Ask OpenSearch for documents where  and , and each clause…","fields":{"slug":"/2026-09-24-roaring-bitmaps-fast-filters/"},"frontmatter":{"date":"2026-09-24T00:00:00.000Z","title":"How Roaring Bitmaps Make Filters Fast","description":"Roaring bitmaps store integer sets in three container types so filters stay small and fast. How they work, why OpenSearch leans on them, and the tradeoffs.","tags":["OpenSearch","Search","Data Structures","RAG","Python"],"thumbnail":{"childImageSharp":{"fluid":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsSAAALEgHS3X78AAACCUlEQVQozzWPS27bMBCGtWgi60VRFk1REvWwXpZly3EsJ7FsJxGahYPGTtCk6GPXAF22B+i6J+gBuu0BesKOohb4QXwznG9ACnmwGYfb1Kvrk7vm/O22ul+f7puLx8vqYT3fbxcH6NTzu+3iHsqz6W7kr0HpIhzrjoicI4050Swt63hyEU9XRXU1Otkk5Qp4NN9AczTfwi1P50eaLequCJbuCpoZIjKE8yUtqP1Qwp78PxLiks4BFMNXMMRTDf8lgaCTqM9SO5gN3HHfSvssG/ACWNY5TIMDt7CxlbGHzCEMdAwRBtYkDOosuqbunDonb06fm/LD7eLzofryfvXt5+Pvrzc/fn3883z5HbOxyUsanBp2gUgiI1eAZcYgs1mpkwSReOidBW6VeCuA1F9vxw/L9LYpnorhldr9i0QA7aPaP+vcwH5gl5YZY+zLGqMk5vZY0Zii2a8kg5iRqBJJs2BaRo6sOS28sGAYYWYtFsPrkteumftkuk52u/JpxjfUTK6T/aH8tMvfpfZSRAyZoUFjBXOQJWQLGAdFcD5LN2Vce7RwSV5lzVn+OudLgqMyWlejZpk3AStF1cI0Is5Iwa0paUxAOmdm5jtTl+bEiCAuG3vOhJGsr4cOzbk98diEmnErIAec9vGtbAk9lYoqPZaJqAzEjpVBV/Y6VggE+j3N6qnWvxNKlf4FaQlS6xVSP4EAAAAASUVORK5CYII=","aspectRatio":1.899441340782123,"src":"/static/64f59be93a1aa438e69ee401c93c2449/40a76/hero.png","srcSet":"/static/64f59be93a1aa438e69ee401c93c2449/c972b/hero.png 340w,\n/static/64f59be93a1aa438e69ee401c93c2449/27625/hero.png 680w,\n/static/64f59be93a1aa438e69ee401c93c2449/40a76/hero.png 1360w,\n/static/64f59be93a1aa438e69ee401c93c2449/ed396/hero.png 2000w","sizes":"(max-width: 1360px) 100vw, 1360px"}}}}}}]}},"pageContext":{"tag":"Data Structures"}},"staticQueryHashes":["32046230"]}