LevelDB, RocksDB and BoltDB support
Mantenedores costumam responder em até 1 dia
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 5/5
- Tempo estimado
- Mais de uma semana
- Facilidade para iniciantes
- 35/100
Direção de pesquisa
Start by locating the registry plugin architecture and reading how existing database integrations are organized. Then assess support for reading LevelDB and RocksDB directories, read-only access by default, byte-oriented key/value views, prefix filtering and range scans, and RocksDB column families. Done means these requirements are covered; the issue names no files or tests, so identify the relevant entry points and validation approach in the project first.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
Problem
None of the embedded key-value stores LevelDB, RocksDB and BoltDB is supported, so inspecting an application's local data means writing a throwaway program. They run in-process with no server, so the only way in is to open the files, the way TablePro opens a SQLite file today. Folds in #524.
Proposed solution
A registry plugin that opens a local store:
- Point at a LevelDB or RocksDB directory, or a BoltDB file. Read-only by default, since these formats hold a single-process lock and opening one under a running app is unsafe. When another process holds the lock, say so plainly instead of waiting on it.
- Keys and values in the grid, with a hex and a text view, since all three stores are byte-oriented.
- Prefix filtering and range scans, since there is no query language to fall back on.
- The sidebar shows column families for RocksDB and buckets, nested ones included, for BoltDB. LevelDB has one flat keyspace.
Reading the files
- LevelDB and RocksDB: link their C APIs as static libraries published through
apple/Libs/, or read the on-disk format (sorted table files, the manifest and the write-ahead log, with their compression) in Swift. The C APIs are the smaller risk. - BoltDB (bbolt, which etcd uses) is Go only, with no C library, but its file is one B+tree of fixed-size pages, small enough to read in Swift.
Open question
Whether writes ever come after the read-only version, and for which store first.
Alternatives considered
A throwaway script per inspection.
Platform
macOS
Related database type
N/A / General
- Linguagem predominante
- Swift
- Estrelas
- 6.2k
- Forks
- 412
- Merge médio
- 3h 56min
- PRs com merge (30d)
- 669
Preparar o ambiente
Este projeto não oferece contêiner de desenvolvimento, Dockerfile nem guia de contribuição, então a configuração fica por sua conta: comece pelo README e veja nosso guia da primeira contribuição para os passos gerais.
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de TableProApp/TablePro
-
Linux: Remember Password fails silently when there is no default keyringTalvez já em andamento @datlechin assumiu hoje. Abertabug platform-linux
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
TableProApp/TablePro#4098 ·
Mantenedores costumam responder em até 1 dia
-
bug platform-linux
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 35/100
TableProApp/TablePro#4101 ·
Mantenedores costumam responder em até 1 dia
-
bug platform-linux
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 48/100
TableProApp/TablePro#4099 · 3 comentários ·
Mantenedores costumam responder em até 1 dia
-
enhancement platform-macos
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 25/100
TableProApp/TablePro#4071 ·
Mantenedores costumam responder em até 1 dia
-
enhancement platform-macos
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 66/100
TableProApp/TablePro#4070 ·
Mantenedores costumam responder em até 1 dia
Todas as issues de TableProApp/TablePro
Issues semelhantes
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 83/100
OneBusAway/vehicle-positions#260 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 85/100
eliasstravik/herdr-projects#789 · 1 comentário ·
-
follow-up needs-triage S3: minor
Dificuldade 1/5 1-3 horas Facilidade para iniciantes 85/100
manaflow-ai/cmux#38032 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 67/100
arkavo-org/ArkavoKit#70 ·
Mantenedores costumam responder em até 1 dia
-
bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 70/100
vorssaint/vorssaint-utils#3933 · 1 comentário ·
Mantenedores costumam responder em até 2 dias