Hi Derek,
It's not Druid's sweet spot, but it might be worth a try.
HTML strings would likely need to be stored in STRING fields in Druid. The STRING field in Druid by default is dictionary encoded ... which works great for low to reasonably high cardinality with limited length values, but in the case of HTML pages the dictionary would be composed of extremely long and extremely unique strings. (doc ref:
https://druid.apache.org/docs/latest/development/extensions-core/kinesis-ingestion#indexspec)
The dictionary can be front-coded, the segment files are zipped when they are stored in deep storage ... so you would get some savings there. And you would be able to store large numbers of records together in the same segment files.
You can handle the vast amounts of historical data by ingesting them and storing on deep storage only ... the queries against them are slower, but you don't have to allocate data nodes to pre-cache the data. (doc ref:
https://druid.apache.org/docs/latest/querying/query-deep-storage/)