And there's this vtable for Parquet extension. https://github.com/cldellow/sqlite-parquet-vtable
But for my use case virtual would be too complicated.
What is the advantage of moving around .sqlite-files, over just loading the (compressed) WARCs into sqlite databases when you need them?
I've been messing around with different formats for my own search engine crawls, and ended up with the conclusion that WARC is a pretty amazing intermediary format that weighs both the needs of the producer and consumer very well. I don't use WARCs now, instead something similar, but I probably will migrate toward that format eventually.
WARC's real selling pint is that it's such an extremely portable format.
Sqlite has an amazing set of well-understood and documented guarantees on top of performance, there's a host of potential validation tools to choose from and you can even use transactions etc. So that alone seems like a great idea.
What's more, you can potentially skip CDX files if you have sqlite databases (or build your own meta sqlite database for the others quickly).
Unless you're crawling really text heavy content, most of the WARC data is binary content that doesn't really need to be in a db. However, sqlite or database as replacement for CDX is an appealing option, where WARC files can remain static data at rest and derived data (offests, full-text search, can be put into a db.
We are experimenting with a new format, WACZ, which bundles WARC files into a ZIP, while adding CDXJ and exploring sqlite as an option for full-text search. I agree that it's better to build on solid, existing formats that can be validated, especially when large amounts of data are concerned!
Although I'd absolutely welcome some sort of channel!
https://github.com/topics/crawling https://github.com/topics/web-scraping https://github.com/topics/web-archiving
I suppose there could be made a case for easy extension: You don't need to change the entire spec to add another table in the SQLite database, maybe containing other metadata.
> WARC's real selling pint is that it's such an extremely portable format.
I mean, so is SQLite: it is also apporoved as a LoC archival method. (See SQL Archive [0])
The .warc spec is ideal. I'm not saying we replace it (ref. xkcd: standards).
On top of what uniqueid said, "loading" is much slower and more cumbersome than it sounds. I'm not saying SQLite will replace text (maybe my aphorism sounded too firm). I'm saying that maybe along with the .warc.gz archives at rest, one could have .sql.gz files at rest as well.
In other words: why not move ACID-compliant archives moving around?
If you want to do something like have an offline copy of a website, ZIM[1] is a far more suitable format as it's extremely space-efficient and also fast.
The WARC format is extremely simple and yet so powerful. Most importantly though, there are already pebibytes of already crawled archives.
This is a fairly straightforward mapping of a .warc file to a .sqlite database. The goal is to make such archives SQL-able even in smaller pieces.
The schema I've come up with it's tailored around my requirements, but comment if you can spot any obvious pitfalls.
PS: I do believe that at some point .sqlite will become the defacto standard for such initiatives. Sure, it's not text... but it's pretty close.