{"type":"excalidraw","version":2,"source":"https://AwesomeSystemDesign.dev","elements":[{"angle":0,"strokeColor":"#6577aa","backgroundColor":"#eef1fc","fillStyle":"solid","strokeWidth":1.5,"strokeStyle":"solid","roughness":0.7,"opacity":100,"version":1,"versionNonce":1,"isDeleted":false,"groupIds":["step-1"],"frameId":null,"roundness":null,"boundElements":[{"type":"text","id":"shape-1"}],"updated":0,"link":null,"locked":false,"id":"shape-0","type":"rectangle","seed":41,"x":36,"y":32,"width":358.61692000000005,"height":68,"customData":{"revealStep":1}},{"angle":0,"strokeColor":"#394557","backgroundColor":"transparent","fillStyle":"solid","strokeWidth":1.5,"strokeStyle":"solid","roughness":0.7,"opacity":100,"version":1,"versionNonce":1,"isDeleted":false,"groupIds":["step-1"],"frameId":null,"roundness":null,"boundElements":null,"updated":0,"link":null,"locked":false,"id":"shape-1","type":"text","seed":114,"x":56,"y":54.3,"width":318.61692000000005,"height":23.400000000000002,"fontSize":18,"fontFamily":1,"text":"Tag | series_ids (Roaring Bitmap)","originalText":"Tag | series_ids (Roaring Bitmap)","textAlign":"center","verticalAlign":"middle","containerId":"shape-0","lineHeight":1.3,"autoResize":false,"customData":{"revealStep":1}},{"angle":0,"strokeColor":"#628572","backgroundColor":"#edf5ee","fillStyle":"solid","strokeWidth":1.5,"strokeStyle":"solid","roughness":0.7,"opacity":100,"version":1,"versionNonce":1,"isDeleted":false,"groupIds":["step-2"],"frameId":null,"roundness":null,"boundElements":[{"type":"text","id":"shape-3"}],"updated":0,"link":null,"locked":false,"id":"shape-2","type":"rectangle","seed":187,"x":434.61692000000005,"y":32.000000000000014,"width":390,"height":246.6,"customData":{"revealStep":2}},{"angle":0,"strokeColor":"#394557","backgroundColor":"transparent","fillStyle":"solid","strokeWidth":1.5,"strokeStyle":"solid","roughness":0.7,"opacity":100,"version":1,"versionNonce":1,"isDeleted":false,"groupIds":["step-2"],"frameId":null,"roundness":null,"boundElements":null,"updated":0,"link":null,"locked":false,"id":"shape-3","type":"text","seed":260,"x":454.61692000000005,"y":50.000000000000014,"width":350,"height":210.6,"fontSize":18,"fontFamily":1,"text":"service=api | {1, 2, 3, 7, 12, 15,\n...50K ids}\nservice=web | {4, 5, 6, 8, 9, ...30K\nids}\nregion=us-east | {1, 3, 5, 7, 9, 11,\n...40K ids}\nstatus=200 | {1, 2, 4, 5, 7, ...60K\nids}\nhost=web-42 | {1, 12, ...500 ids}","originalText":"service=api | {1, 2, 3, 7, 12, 15,\n...50K ids}\nservice=web | {4, 5, 6, 8, 9, ...30K\nids}\nregion=us-east | {1, 3, 5, 7, 9, 11,\n...40K ids}\nstatus=200 | {1, 2, 4, 5, 7, ...60K\nids}\nhost=web-42 | {1, 12, ...500 ids}","textAlign":"center","verticalAlign":"middle","containerId":"shape-2","lineHeight":1.3,"autoResize":false,"customData":{"revealStep":2}},{"angle":0,"strokeColor":"#a68a53","backgroundColor":"#fff7e6","fillStyle":"solid","strokeWidth":1.5,"strokeStyle":"solid","roughness":0.7,"opacity":100,"version":1,"versionNonce":1,"isDeleted":false,"groupIds":["step-3"],"frameId":null,"roundness":null,"boundElements":[{"type":"text","id":"shape-5"}],"updated":0,"link":null,"locked":false,"id":"shape-4","type":"rectangle","seed":333,"x":36,"y":318.6,"width":530.21608,"height":411.7,"customData":{"revealStep":3}},{"angle":0,"strokeColor":"#394557","backgroundColor":"transparent","fillStyle":"solid","strokeWidth":1.5,"strokeStyle":"solid","roughness":0.7,"opacity":100,"version":1,"versionNonce":1,"isDeleted":false,"groupIds":["step-3"],"frameId":null,"roundness":null,"boundElements":null,"updated":0,"link":null,"locked":false,"id":"shape-5","type":"text","seed":406,"x":56,"y":336.6,"width":490.21608000000003,"height":375.7,"fontSize":17,"fontFamily":1,"text":"Inverted Index for Tag Queries\n\nQuery: http.requests{service=api, region=us-east}\n→ Need: all series_ids matching BOTH tags\n\nIndex structure:\n\nQuery resolution:\nservice=api → bitmap A (50K ids)\nregion=us-east → bitmap B (40K ids)\nResult = A ∩ B = 8K matching series_ids\n\nRoaring Bitmaps:\n• Compressed bitmap: 1B series → ~200 MB index total\n• Set intersection: O(min(|A|, |B|)) — very fast\n• Supported: AND, OR, NOT, XOR\n• Standard implementation: Roaring Bitmap library","originalText":"Inverted Index for Tag Queries\n\nQuery: http.requests{service=api, region=us-east}\n→ Need: all series_ids matching BOTH tags\n\nIndex structure:\n\nQuery resolution:\nservice=api → bitmap A (50K ids)\nregion=us-east → bitmap B (40K ids)\nResult = A ∩ B = 8K matching series_ids\n\nRoaring Bitmaps:\n• Compressed bitmap: 1B series → ~200 MB index total\n• Set intersection: O(min(|A|, |B|)) — very fast\n• Supported: AND, OR, NOT, XOR\n• Standard implementation: Roaring Bitmap library","textAlign":"left","verticalAlign":"middle","containerId":"shape-4","lineHeight":1.3,"autoResize":false,"customData":{"revealStep":3}}],"appState":{"viewBackgroundColor":"#fbfbf8","gridSize":null},"files":{}}