static void write(int version, ColumnMetaV1 ci, ByteBuffer buffer) {
            int pos = buffer.position();

            buffer.putInt(ci.nameSize);
            UTF8Util.toUtf8(buffer, ci.name);
            if (version < Version.VERSION_5_ID) {
                buffer.put((byte) ci.sqlType);
            } else {
                buffer.putInt(ci.sqlType);
            }
            if (version >= Version.VERSION_7_ID) {
                buffer.put((byte) (ci.isIndexed ? 1 : 0));
            }
            buffer.putLong(ci.dpnOffset);
            buffer.putLong(ci.indexOffset);
            if (version >= Version.VERSION_6_ID) {
                buffer.putLong(ci.extIndexOffset);
            }
            if (version >= Version.VERSION_8_ID) {
                buffer.putLong(ci.outerIndexOffset);
                buffer.putLong(ci.outerIndexSize);
            }
            buffer.putLong(ci.packOffset);

            assert buffer.position() - pos == ci.metaSize(version);
        }
Store segment column by column.

<pre>
Segment storage structure:
|  IXRSEGxx | sementMeta | column0 | column1 ... | outerIndex0 | outerIndex0 ... |
            | <---                      sectionSize                        ----> |

Column structure:
|  dpn | rsIndex | extIndex | dataPack |
</pre>
indexr-segment/src/main/java/io/indexr/segment/storage/itg/IntegrateV1.java