-
Notifications
You must be signed in to change notification settings - Fork 286
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Feature Request]: Virtual file system #1184
Comments
The goal of the virtual file system is to have a virtual layer where each generated block column, index file, delete file, etc. can be stored by the VFS. Through this layer, infinity can be connected to the local file system, can also be connected to the file system like s3. Therefore, virtual file system needs to provide the following interfaces: In the concrete implementation, VFS needs a metadata store: provide the mapping relationship between physical files and virtual file blocks, also provide the virtual file data contained in which virtual file blocks. For metadata reading and writing, what we see now is mainly accessed in the form of key value. Therefore, metadata storage can be considered kv store. The size of each file block should be a fixed size, for example, 64KB. A physical file, isn't a fixed size files. But its size should be fixed in, for example, between 16 and 24MB. With the constant creation and deletion of files, there must be a large amount of file fragments in the original file that needs to be cleaned up. Considering that s3 will be used as the actual storage, this layer of virtual file system, for the use of physical storage, should be append-only. The fragments merging and cleanup operation logs should be kept by the WAL of the database like create/delete/update/write operations of the VFS. |
Considering the complexity of this feature and the main goal of 0.2.0, we decided to move this feature out of the 0.2.0 scope, now. |
ObjectiveThe main idea of the Feature Request is
It is not
SummarySmall files of a segment have the coupled lifecycle:
A coupled file consist of one or more of above files of a single Other files will not be impacted:
A Detailsinsert
delete
full checkpointA full checkpoint is for the whole system. delta checkpointA delta checkpoint is for the whole system. Delta log file is as it's. Segment Compaction
Drop tableTouch only metadata. Drop indexTouch only metadata. Create indexAll index files, such as fulltext dictionary file Build indexAll index files, such as fulltext dictionary file. CleanupIterate the file set, delete any one if its delete_ts is no larger than the given one. |
Every subclass of
|
Introduced PersistenceManager. Adapted FileWorker for PersistenceManager. Issue link:#1184 ### Type of change - [x] New Feature (non-breaking change which adds functionality)
Completed. VFS is disabled by default. Following piece in config file enable vfs:
|
Is there an existing issue for the same feature request?
Is your feature request related to a problem?
No response
Describe the feature you'd like
Infinity's internal data is consists of segments and blocks, where each block is made up of a bunch of block columns. The implementation is such that each block column is persisted as a file on disk, no matter how large that file is. This can result in a large number of files in a single table. This feature request aims to solve this problem. We use a virtual filesystem serving infinity, whereas in reality several block column files exist on a single actual file, which avoids the problem of creating a large number of files and alleviates the possibility of a 'too many open' files error.
Describe implementation you've considered
No response
Documentation, adoption, use case
No response
Additional information
No response
The text was updated successfully, but these errors were encountered: