{"id":13393904,"url":"https://github.com/tgres/tgres","last_synced_at":"2025-04-05T12:06:19.760Z","repository":{"id":144202197,"uuid":"50001820","full_name":"tgres/tgres","owner":"tgres","description":"Time Series in Go and PostgreSQL","archived":false,"fork":false,"pushed_at":"2021-12-22T23:37:19.000Z","size":2793,"stargazers_count":511,"open_issues_count":5,"forks_count":42,"subscribers_count":23,"default_branch":"master","last_synced_at":"2025-03-29T11:08:29.426Z","etag":null,"topics":["go","golang","grafana","graphite","postgresql-database","statsd","time-series"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tgres.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2016-01-20T03:31:43.000Z","updated_at":"2025-03-21T18:51:26.000Z","dependencies_parsed_at":"2023-06-18T05:15:36.703Z","dependency_job_id":null,"html_url":"https://github.com/tgres/tgres","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tgres%2Ftgres","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tgres%2Ftgres/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tgres%2Ftgres/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tgres%2Ftgres/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tgres","download_url":"https://codeload.github.com/tgres/tgres/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247332604,"owners_count":20921853,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["go","golang","grafana","graphite","postgresql-database","statsd","time-series"],"created_at":"2024-07-30T17:01:02.282Z","updated_at":"2025-04-05T12:06:19.726Z","avatar_url":"https://github.com/tgres.png","language":"Go","funding_links":[],"categories":["Go"],"sub_categories":[],"readme":"\nTgres is a program comprised of several packages which together can be\nused to receive, store and present time-series data using a relational\ndatabase as persistent storage (currently only PostgreSQL).\n\nYou can currently use the standalone Tgres daemon as Graphite-like API\nand Statsd replacement all-in-one, or you can use the Tgres packages\nto incorporate time series collection and reporting functionality into\nyour application.\n\nSee [GoDoc](https://godoc.org/github.com/tgres/tgres) for package\ndetails.\n\nWhether you use standalone Tgres or as a package, the time series data\nwill appear in your database in a compact and efficient format (by\ndefault as a view called `tv`), while at the same time simple to\nprocess using any other tool, language, or framework because it is\njust a table (or a view, rather). For a more detailed description of\nhow Tgres stores data see this\n[article](https://grisha.org/blog/2017/01/21/storing-time-seris-in-postgresql-optimize-for-write/)\n\n### Current Status\n\nFeb 7 2018: This project is not actively maintained. You may find\nquite a bit of time-series wisdom here, but there are probably still a\nlot of bugs.\n\nJul 5 2017: See this [status update](https://grisha.org/blog/2017/07/04/tgres-status-july-2017/)\n\nJun 15 2017: Many big changes since March, most notably data point\nversioning and instoduction of ds_state and rra_state tables which\ncontain frequently changed attributes as arrays, similar to the way\ndata points are stored eliminating the need to update ds and rra\ntables, these are now essentially immutable. Ability to delete series\nwith NOTIFY to Tgres to purge it from the cache.\n\nMar 22 2017: Version 0.10.0b was tagged. This is our first beta (which\nis more stable than alpha). Please try it out, and take a minute to\nopen an issue or even a PR if you see/fix any problems. Your feedback\nis most appreciated!\n\nFeb 2017 Note: A major change in the database structure has been made,\nTgres now uses the \"write optimized\" / \"vertical\" storage. This change\naffected most of the internal code, and as far overall status, it set\nus back a bit, all tests are currently broken, but on the bright side,\nwrite performance is amazing now.\n\nPhase 1 or proof-of-concept for the project is the ability to (mostly)\nact as a drop-in replacement for Graphite (except for chart\ngeneration) and Statsd. Currently Tgres supports nearly all of\nGraphite functions.\n\nAs of Aug 2016 Tgres is feature-complete for phase 1, which means that\nthe development will focus on tests, documentation and stability for a\nwhile.\n\nTgres is not ready for production use, but is definitely stable enough\nfor tinkering for those interested.\n\n### Getting Started\n\nYou need a newer Go (1.7+) and PostgreSQL 9.5 or later. To get the\ndaemon compiled all you need is:\n\n```\n$ go get github.com/tgres/tgres\n```\n\nNow you should have a tgres binary in `$GOPATH/bin`.\n\nThere is also a Makefile which lets you build Tgres with `make` which\nwill use a slightly more elaborate command and the resulting tgres\nbinary will be able to report its build time and git revision, but\notherwise it's the same.\n\nLook in `$GOPATH/src/github.com/tgres/tgres/etc` for a sample config\nfile.  Make a copy of this file and edit it, at the very least check\nthe `db-connect-string` setting. Also check `log-file` directory, it\nmust be writable.\n\nThe user of the PostgreSQL database needs CREATE TABLE permissions. On\nfirst run tgres will create three tables (ds, rra and ts) and two\nviews (tv and tvd).\n\nTgres is invoked like this:\n```\n$ $GOPATH/bin/tgres -c /path/to/config\n```\n\n### For Developers\n\nThere is nothing specific you need to know. If you'd like to submit a\nbug fix, or for anything else - use Github.\n\n### Migrating Graphite Data\n\nIncluded in cmd/whisper_import is a program that can copy whisper data\ninto Tgres, its command-line arguments are self-explanatory. You\nshould be able to start sending data to Tgres and then migrate your\nGraphite data retroactively by running whisper_import to avoid gaps in\ndata. It's probably a good idea to test a small subset of series first,\nmigrations can be time consuming and resource-intensive.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftgres%2Ftgres","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftgres%2Ftgres","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftgres%2Ftgres/lists"}