Today, each node is stored as 64 bit value, which amounts to about 30GB of uncompressed data for a current planet file. Similar to the PBF format, these nodes could be stored as varints using delta coding, which brings down the size to 7 GB (uncompressed).
The basic idea here is that node ids for an OSM way are frequently very close to each other. When only storing the delta value and applying additional varint encoding, small values could allocate as little as 1-2 bytes instead of 8 bytes.
Working prototype is included in branch: https://github.com/mmd-osm/Overpass-API/tree/test_way_diffs, patch against v0.7.52 in branch: https://github.com/mmd-osm/Overpass-API/tree/patch_issue_248
Performance impact seems to be not too bad (single percentage), compression is still more expensive.
Today, each node is stored as 64 bit value, which amounts to about 30GB of uncompressed data for a current planet file. Similar to the PBF format, these nodes could be stored as varints using delta coding, which brings down the size to 7 GB (uncompressed).
The basic idea here is that node ids for an OSM way are frequently very close to each other. When only storing the delta value and applying additional varint encoding, small values could allocate as little as 1-2 bytes instead of 8 bytes.
Working prototype is included in branch: https://github.com/mmd-osm/Overpass-API/tree/test_way_diffs, patch against v0.7.52 in branch: https://github.com/mmd-osm/Overpass-API/tree/patch_issue_248
Performance impact seems to be not too bad (single percentage), compression is still more expensive.