I ended up designing a transactional file format (a kind of log-structured file system with data versioning and garbage collection, all stored in a single file) from scratch to match our requirements. Works flawlessly with terabytes of data.
Moving away from HDF5
61–67 of 67 posts
Re: Moving away from HDF5
#62In my previous job we were evaluating HDF5 for implementing a data-store a couple of years ago. We had some strict requirements about data corruption (e.g., if the program crashes amid a write operation in another thread, the old data must be left intact and readable), as well as multithreaded access. HDF5 supports parallelism from distinct programs, but its multithreaded story was (is?) very weak. I ended up designi…
Re: Moving away from HDF5
#63http://cscads.rice.edu/workshops/summer-2012/slides/datavis/... Extreme IO scaling with HDF5
http://algoholic.eu/sec2j-journalling-for-hdf5/ HDF5 with a journal
Re: Moving away from HDF5
#64In my previous job we were evaluating HDF5 for implementing a data-store a couple of years ago. We had some strict requirements about data corruption (e.g., if the program crashes amid a write operation in another thread, the old data must be left intact and readable), as well as multithreaded access. HDF5 supports parallelism from distinct programs, but its multithreaded story was (is?) very weak. I ended up designi…
Might one take a peek at that ? In other words was it open sourced or plans to that effect exists ?
GC was offline though; it was performed at the time the container was "upgraded" from RO to RW access. I don't think it'd be difficult to make it online, but there was no need for that.
Re: Moving away from HDF5
#65Earlier quoted context omitted.
IEEE 754 floats don't have different endianess. And as the other comment says, swapping endianess is fast (if ever needed, since most platforms are little endian or hybrid).
> IEEE 754 floats don't have different endianess. The standard does not specify endianness [1]. From the standard point of view float is a sequence of bits. But if you memory-map the file and store float on little-endian machine, you get bytes reversed compared to how it is written in the standard. On big-endian machine sign is stored in the first byte, and on little-endian machine sign is stored in the last byte. [1…
Re: Moving away from HDF5
#66This is where they lost me. This is NOT a lot of data. Should we be surprised that memory-mapping works well here?
Below about 100-200 GB you can do everything in memory. You simply don't need fancy file-systems. These systems are for actual big data sets where you have several terabytes to several petabytes.
Don't try to use a chainsaw to cut a piece of paper and then complain that scissors work better. Of course they do...
Re: Moving away from HDF5
#67"we have a particular use-case where we have a large contiguous array with, say, 100,000 lines and 1000 columns" This is where they lost me. This is NOT a lot of data. Should we be surprised that memory-mapping works well here? Below about 100-200 GB you can do everything in memory. You simply don't need fancy file-systems. These systems are for actual big data sets where you have several terabytes to several petabyt…
Also, as I said, the 100,000 x 1000 example is a quite optimistic one, we do have cases now with 100,000,000 x 10,000 arrays, and this is only going to increase in the months to come with the new generation of devices.