Project Name | Stars | Downloads | Repos Using This | Packages Using This | Most Recent Commit | Total Releases | Latest Release | Open Issues | License | Language |
---|---|---|---|---|---|---|---|---|---|---|
Pebble | 4,056 | 517 | a day ago | 54 | April 23, 2021 | 260 | bsd-3-clause | Go | ||
RocksDB/LevelDB inspired key-value database in Go | ||||||||||
Tbls | 2,604 | 7 | 4 days ago | 185 | July 26, 2023 | 27 | mit | Go | ||
tbls is a CI-Friendly tool for document a database, written in Go. | ||||||||||
Python Tabulate | 1,751 | 4,051 | 3,876 | a month ago | 27 | October 06, 2022 | 88 | mit | Python | |
Pretty-print tabular data in Python, a library and a command-line utility. Repository migrated from bitbucket.org/astanin/python-tabulate. | ||||||||||
Table_calendar | 1,587 | 21 | 9 | 2 months ago | 51 | January 06, 2023 | 81 | apache-2.0 | Dart | |
Highly customizable, feature-packed calendar widget for Flutter | ||||||||||
Livewire Datatables | 1,122 | 1 | 25 days ago | 40 | November 27, 2022 | 179 | mit | PHP | ||
Advanced datatables using Laravel, Livewire, Tailwind CSS and Alpine JS | ||||||||||
Formatter.nvim | 1,086 | a day ago | 60 | mit | Lua | |||||
Rows | 845 | 26 | 3 | 4 months ago | 10 | February 14, 2019 | 170 | lgpl-3.0 | Python | |
A common, beautiful interface to tabular data, no matter the format | ||||||||||
Pytablewriter | 571 | 39 | 38 | 6 days ago | 121 | March 21, 2022 | 6 | mit | Python | |
pytablewriter is a Python library to write a table in various formats: AsciiDoc / CSV / Elasticsearch / HTML / JavaScript / JSON / LaTeX / LDJSON / LTSV / Markdown / MediaWiki / NumPy / Excel / Pandas / Python / reStructuredText / SQLite / TOML / TSV. | ||||||||||
J | 341 | 100 | 23 | 6 years ago | 49 | December 05, 2017 | other | JavaScript | ||
:x: Multi-format spreadsheet CLI (now merged in http://github.com/sheetjs/js-xlsx ) | ||||||||||
Consoletableext | 286 | 13 | 4 | 9 months ago | 25 | July 10, 2022 | 5 | mit | C# | |
A fluent library to print out a nicely formatted table in a console application C# |
Pebble is a LevelDB/RocksDB inspired key-value store focused on performance and internal usage by CockroachDB. Pebble inherits the RocksDB file formats and a few extensions such as range deletion tombstones, table-level bloom filters, and updates to the MANIFEST format.
Pebble intentionally does not aspire to include every feature in RocksDB and is specifically targetting the use case and feature set needed by CockroachDB:
RocksDB has a large number of features that are not implemented in Pebble:
WARNING: Pebble may silently corrupt data or behave incorrectly if used with a RocksDB database that uses a feature Pebble doesn't support. Caveat emptor!
Pebble was introduced as an alternative storage engine to RocksDB in CockroachDB v20.1 (released May 2020) and was used in production successfully at that time. Pebble was made the default storage engine in CockroachDB v20.2 (released Nov 2020). Pebble is being used in production by users of CockroachDB at scale and is considered stable and production ready.
Pebble offers several improvements over RocksDB:
See the Pebble vs RocksDB: Implementation Differences doc for more details on implementation differences.
Pebble strives for forward compatibility with RocksDB 6.2.1 (the latest version of RocksDB used by CockroachDB). Forward compatibility means that a DB generated by RocksDB can be used by Pebble. Currently, Pebble provides bidirectional compatibility with RocksDB (a Pebble generated DB can be used by RocksDB) when using its FormatMostCompatible format. New functionality that is backwards incompatible is gated behind new format major versions. In general, Pebble only provides compatibility with the subset of functionality and configuration used by CockroachDB. The scope of RocksDB functionality and configuration is too large to adequately test and document all the incompatibilities. The list below contains known incompatibilities.
kTolerateCorruptedTailRecords
WAL recovery mode. Older versions of
RocksDB would automatically map incompatible WAL recovery modes to
kTolerateCorruptedTailRecords
. New versions of RocksDB will
disable WAL recycling.BlockBasedTableOptions::format_version
option. See #97.Pebble is based on the incomplete Go version of LevelDB:
The Go version of LevelDB is based on the C++ original:
Optimizations and inspiration were drawn from RocksDB:
package main
import (
"fmt"
"log"
"github.com/cockroachdb/pebble"
)
func main() {
db, err := pebble.Open("demo", &pebble.Options{})
if err != nil {
log.Fatal(err)
}
key := []byte("hello")
if err := db.Set(key, []byte("world"), pebble.Sync); err != nil {
log.Fatal(err)
}
value, closer, err := db.Get(key)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s %s\n", key, value)
if err := closer.Close(); err != nil {
log.Fatal(err)
}
if err := db.Close(); err != nil {
log.Fatal(err)
}
}