I'm using a tree data structure (tetrahexacontree) of voxel volumes (chunks). Each voxel volume is 16x16x16 voxels in size. The tree data structure is only limited by RAM and it grows in size on the fly if something is placed outside of the tree data structure.