Skip to content
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

BlobIt filesystem #10

Open
eolivelli opened this issue Mar 20, 2019 · 2 comments
Open

BlobIt filesystem #10

eolivelli opened this issue Mar 20, 2019 · 2 comments

Comments

@eolivelli
Copy link
Contributor

We can create a layer over BlobIt in order to create a virtual file system, with these features:

  • a FS-tree-like structure (introduce the concept of "directory")
    -- directory listing
    -- create directory
    -- remove directory
  • information about file size, disk size (virtual and real), possibly per directory (without needing a full scan)
  • fileExists
  • getFileInfo (type, size, lastmodification)
  • setLastModified
  • renameFile into same directory
  • renameFile into other directory (move)
  • delete file
  • read file (partial reads, offset+length)
  • overwrite file
  • truncate file to length (pre-allocate??)
  • write a file (full write of the whole blob)
  • streaming write without knowing the length in advance (not yet supported by BlobIt)
  • streaming write in "append mode" of a byte[] (something like 'concat', not yet supported by BlobIt)
    -- streaming write in "append mode" without knowing the length in advance (not yet supported by BlobIt)

We expect that one Filesystem resides on a single Bucket.
We can add one or more metadata tables in order to store directory metadata, this will ease lookups and queries

No need for ACLs, file locks or other POSIX features

@amitvc
Copy link

amitvc commented Jun 18, 2019

@eolivelli I would like to work on this if there is no one already working on it.

@eolivelli
Copy link
Contributor Author

Okay @amitvc but I have to share some ideas with you.
Current master introduced the concept of NamedObject, which support 'appends' and it will support 'replace'.

After implementing replace operation we have to introduce another layer on top the NamedObjects layer, in order to represent a tree-like structure, the 'directories'

The implementation you did on herddb about the typed primary key violation is needed here.

I don't have time today.
You can start by playing with the API and the project.
Just follow the getting started guide on the wiki.

We need to release herddb soon indeed, in order to be able to make progress here.

We are going to cut a release of blobit soon anyway, because it is needed by the new release of emailsuccess.com

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants