share / share/sharedb

Implementing a filesystem

Open
#145 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
JavaScript
Stars
6.5k
Forks
456
Avg merge
1d 5h
Merged PRs (30d)
5

Description

Based on inputs from #143, I was curious about what could be the best way to implement a hierarchical filesystem with folders and documents. I started with a "flat" implementation where each file/folder is a document with a required field "path" which is its absolute path. The client would then get all the files and build a file tree.
The problem with this approach is when it comes to renaming: renaming a folder means renaming all the contained files/subfolders. One way to overcome this problem would be to have just one root document representing the filesystem and each file/folder is stored in a json array inside this document. Each folder would then have a "contents" array where all the contents are stored, recursively. The question here is: could this be a problem? In the case of a big number of files, the document would end up being huge.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reading issue #143 and comparing the proposed flat path-based documents with the single recursive JSON document described here. No implementation files or tests are named; this issue is complete only after the filesystem representation and its behavior for large numbers of files are defined.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript
Domain
backend, databases
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.