2.`Insert(reseveredOffset, size, ...Data...)`: write `...Data...` into range `[reseveredOffset, reseveredOffset + size)`. this interface is allowed to be called concurrently.
1.`...Data...` contains row_ids, timestamps two system attributes, and other columns
2. data column can be stored either row based or columne based.
3.`PreDelete & Delete(reseveredOffset, row_ids, timestamps)` is the delete interface similar to intert interface.
1. Serially Execute `PreInsert(size) -> reserved_offset` to allocate memory space, the address of space is `[reserved_offset, reserved_offset + size)` is reserved
2. Parallelly execute `Insert(reserved_offset, size, ...Data...)` interface,copy data into the above memory address
* First of all,for `ConcurrentVector` of each column, call `grow_to_at_least` to reserve space
* For each column data, call `set_data_raw` interface to put data into corresponding locations.
* After execution finished,call`AddSegment` of `AckResponder`,mark the space `[reserved_offset, reserved_offset + size)` to already inserted
### ConcurrentVector
This is a column data storage that can be inserted concurrently. It is composed of multi data chunks.
1. After`grow_to_at_least(size)` called, reserve space no less than `size`
2.`set_data_raw(element_offset, source, element_count)` point source to continuous piece of data
3.`get_span(chunk_id)` get the span of the corresponding chunk