{"repo":"ssbc/margaret","free":true,"listed":false,"github":"https://github.com/ssbc/margaret","clone":"git clone https://github.com/ssbc/margaret.git","description":"a flume-like persisted append-only log implementation","language":"Go","stars":19,"topics":["append-only","golang","go","database"],"license":"MIT","category":"databases-storage","readme_excerpt":"Margaret ](https://github.com/ssbc/margaret/actions/workflows/go.yml/badge.svg) Margaret is go-ssb 's append-only log\\ provider, and greatly inspired by flumedb. Compatible with Go 1.13+. the project name is inspired by Twin Peaks's character Margaret aka the log lady Margaret has the following facilities: an append-only log interface .Append(interface{}) , .Get(int64) queries .Query(...QuerySpec) for retrieving ranges based on sequence numbers e.g. .Gt(int64) , or limiting the amount of data returned .Limit(int64) a variety of index mechanisms, both for categorizing log entries into buckets and for creating virtual logs (aka sublogs) Margaret is one of a few key components that make the go implementation of ssb tick, for example: ssb/sbot uses margaret for storing each peer's data Log storage Margaret outputs data according to the offset2 format, which is inspired by (but significantly differs from) flumelog-offset . In brief: margaret stores the data of all logs in the three following files: data stores the actual data (with a length-prefix before each entry) ofst indexes the starting locations for each data entry in data jrnl an integrity checking mechanism for all three files; a checksum of sorts, more details More details There are a few concepts that might be tough to digest for newcomers on first approach: multilogs, a kind of tree -based index, where each leaf is a margaret.Log in other words: it creates virtual sublogs that map to entries in an offset log (see log st","default_branch":null,"files":null,"tree":[],"storefront":"/r/ssbc","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/ssbc/margaret/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}