Skip to content

0.7.0 Jul 29, 2016: SerDe API changes; Added MemoryMappedFile

Compare
Choose a tag to compare
@leerho leerho released this 29 Jul 23:05
· 2792 commits to master since this release

Quantiles and FrequentItems Sketches:

  • API changes to ArrayOfDoublesSerDe, ArrayOfItemsSerDe, ArrayOfLongsSerDe, ArrayOfStringsSerDe, ArrayOfUtf16StringsSerDe
    • Changed the SerDe TYPE, which was a static final constant, quite fragile from a maintenance point-of-view, and had to be assigned by the class developer.
    • TYPE has been changed to a more robust TypeID, which is automatically assigned using hashCode() based on the to a SerDe class and can be overridden by the SerDe class developer.
      This is used to detect incorrect SerDe instances. Refer to the Javadocs and code documentation of ArrayOfItemsSerDe.
  • Corrected problem of downsampling with quantiles/Union: If you set k to a lower value, it was ignored with the first sketch update with a larger k.

All Sketches:

Changed the leaf-node classes to final. These classes are not designed to be extended.

Static analyzers

  • Ran FindBugs, which found a few minor coding issues, which have been corrected.
  • Running PMD and Checkstyle found a lot of "style" issues. All of the style issues that I agree with have been corrected.
  • The /tools directory has a FindBugsExcludeFilter.xml and a SketchesCheckstyle.xml that you can use to run these static checkers yourself.
  • They are not yet integrated into the maven pom.xml.

Memory Package

  • Added MemoryMappedFile to the Memory package.
  • This capability allows mapping a file, which can be larger than 2GB, into native memory and the ability to write any changes back to that file.
  • It is similar to, but much simpler than Java's FileChannel.map() function that returns a MappedByteBuffer, which is restricted to files less than 2GB.
  • This capability should be considered experimental and is not thread safe.