I'm surprised that ZIP wasn't (isn't?) a contender. Tooling exists everywhere, it lets you mix and match data types, and it seems to hit nearly every point in their comparison. The only point I'm not sure about is "Incremental reads/writes", as it keeps a central directory structure at the end of the file. Incremental reads would need to seek first then could read randomly, and writes are slightly more complicated having to rewrite the entire directory structure to append.
So far we've been using a single server for storage, and developers rsync whatever they need locally. A few million images. Training is usually done locally, but when we do use cloud training, we upload just the dataset we need to S3 and use EC2.
We're a small team, and currently considering moving to a cloud-first infrastructure. The idea is to store each image in S3, and all metadata (annotations etc) in Postgres or something like that, maybe using Postgres's JSON/JSONB feature.
I'd appreciate any thoughts and pointers on handling datasets with a few million images.
You can change SQLITE_MAX_VARIABLE_NUMBER or SQLITE_MAX_COLUMN variables before compiling, no?
[1]https://tiledb.com/blog/tiledb-as-the-data-engine-for-machin...
What put me off is seemingly close integration with pandas which I was trying to avoid.
One way to think of xarray is as a really nice in-memory representation of a netCDF file with some pretty powerful methods for manipulating that data, in much the same way that you can think of DataFrames as a really nice in-memory representation of a csv/table with some powerful methods.
I use xarray for working with satellite imagery and weather model grids - it's a million times better than the fragile MATLAB code I used to use.