Tigris is a modern, scalable backend for building real-time websites and apps.

Overview

Tigris Data

Go Report Build Status Contributor Covenant

Getting started

These instructions will get you through setting up Tigris Data locally as Docker containers.

Prerequisites

Running locally

The docker/local directory contains the docker-compose.yaml which describes the configuration of Tigris Data components. You can run Tigris Data in a local environment by executing:

cd docker/local
docker-compose up -d

Connecting using CLI

Install the CLI:

go install github.com/tigrisdata/[email protected]

Make sure to include the installed binary in your PATH.

Test that Tigris is up and running locally:

export TIGRIS_URL=http://localhost:8081
tigris-cli db list databases

More elaborate example of CLI usage can be found here.

Golang client example can be found here.

Documentation

Roadmap

Community & Support

License

This software is licensed under the Apache 2.0.

Issues
  • feat: basic prometheus metrics for GRPC calls

    feat: basic prometheus metrics for GRPC calls

    • Expose basic metrics on GRPC calls on /metics in prometheus format.
    • Introduce make run_full, which will also start prometheus and grafana on top of tigris_server and fdb, where the metrics are visible.
    released on @alpha 
    opened by pboros 5
  • Database creation in parallel

    Database creation in parallel

    Describe the bug For tests, I run several requests to create databases in parallel. Sometimes the error for database creation is nil however database is absent. Sometimes the error does appear.

    To Reproduce

    1. put files in one folder, run go mod tidy
    2. run go test -count=1 ./...

    Expected behavior Expected 3 databases to be present:

    skydancer:~/tigriscli$ tigris list databases
    testthree
    testtwo
    testone
    

    Screenshots Instead, the error appears:

    skydancer:~/tigriscli$ go test -count=1 ./... 
    --- FAIL: TestThree (0.01s)
        tigriscli_test.go:37: recreate db testthree
        tigriscli_test.go:40: 
            	Error Trace:	tigriscli_test.go:40
            	            				tigriscli_test.go:25
            	Error:      	Received unexpected error:
            	            	database already exist
            	Test:       	TestThree
    FAIL
    FAIL	tigriscli	0.054s
    FAIL
    

    and the databases list if not full,

    skydancer:~/tigriscli$ tigris list databases
    testthree
    testtwo
    

    The name of the absent database testone is not the testthree that appeared in the error message.

    Desktop (please complete the following information): Linux skydancer 5.11.0-49-generic #55-Ubuntu SMP Wed Jan 12 17:36:34 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux

    Additional context

    • cli tigris version v1.0.0-alpha.8
    • tigris container date docker inspect --format '{{ .Created }}' tigrisdata/tigris:latest 2022-05-04T01:53:00.992143876Z
    • github.com/tigrisdata/tigris-client-go v1.0.0-alpha.10
    opened by seeforschauer 5
  • fix: installing dependencies on x64_64 macOS

    fix: installing dependencies on x64_64 macOS

    Fix installing dependencies for x86_64 macOS:

    • wget is not available on macOS by default, use curl instead
    • mktemp has different parameters
    • SHA512 is calculated by different command

    The modified version works on a fresh install of macOS.

    released on @alpha 
    opened by pboros 4
  • feat: Initial /search req/resp stub

    feat: Initial /search req/resp stub

    /search interface with stubbed response.

    Request

    {
        "q": "tunnel",
        "search_fields": [
            "first_name",
            "last_name"
        ],
        "filter": {
            "last_name": "Steve"
        },
        "facet": {
            "facet stat": 0
        },
        "sort": [
            {
                "salary": "$asc"
            }
        ],
        "fields": [
            "employment",
            "history"
        ]
    }
    

    Response

    {
        "result": {
            "hits": [
                {
                    "meta": {}
                }
            ],
            "facets": {
                "myField": {
                    "counts": [
                        {
                            "count": 32,
                            "value": "adidas"
                        }
                    ],
                    "stats": {
                        "avg": 40,
                        "count": 50
                    }
                }
            },
            "meta": {
                "found": 1234,
                "page": {
                    "current": 2,
                    "per_page": 10
                }
            }
        }
    }
    
    opened by adilansari 3
  • chore: initial Docker file for fdb arm64 builds

    chore: initial Docker file for fdb arm64 builds

    Adds a simplified FDB docker build process.

    This enables us to build support images for platforms that are currently not supported by upstream and provide FDB docker images for M1 (arm64) processors.

    Upstream uses CentOS 7 which does not yet support arm64 with the proper kernel page sizes so this build uses Ubuntu for the sake of simplicity.

    This is just an initial commit. More layers will be added soon to optimize the build for deployment.

    opened by rbarabas 3
  • Parser for complex read operations

    Parser for complex read operations

    • Complex read operation parser supporting aggregations (accumulators operators, arithmetic operators, etc)
    • Consolidate parsing of filters, aggregations using expressions
    • Avoid parsing again by removing the use of structpb completely and use json parsing on the fly
    released on @alpha 
    opened by himank 3
  • Custom marshaler for replace/update/delete, integration tests for delete/update

    Custom marshaler for replace/update/delete, integration tests for delete/update

    • Custom marshaler for replace/update/delete.
    • Integration tests for Delete (BadRequest, deleting a single row, deleting multiple rows using filter).
    • Integration tests for Update (BadRequest only).
    • Testing basic replace rows.
    released on @alpha 
    opened by himank 3
  • Integration test suite and tests for the server

    Integration test suite and tests for the server

    • Integration Test Suite for the Server
    • Added integration tests for database creation/drop, collection creation/drop, and basic insert and read functionality
    released on @alpha 
    opened by himank 3
  • Add rest custom error code to customize the error message and to not return gRPC message to http clients

    Add rest custom error code to customize the error message and to not return gRPC message to http clients

    • To not return gRPC error codes to HTTP clients
    • Unify both error code handling by introducing RestError struct in our code
    • Remove validator interceptor and rather do it in the server layer as interceptor returns gRPC error code
    released on @alpha 
    opened by himank 3
  • Minor fixes to Docker files and test script

    Minor fixes to Docker files and test script

    • Move test related files to test directory
    • Improve scripts/install* scripts
    • Docker compose should always build for linux/amd64 platform
    • In docker-compose pass the cluster file via environment variable as that's how we will expose the file in real deployment
    released on @alpha 
    opened by ovaistariq 3
  • Local development image build

    Local development image build

    • Add docker file for building monocontainer development image.
    • Used docker compose plugin for local builds
    • Makefile improvements:
      • Only rebuild and restart changed containers
      • Cache tests results (only run changed tests) (all caches, volumes still can be clean and all containers restart by make clean)
    opened by efirs 1
  • Expose the size of the collection

    Expose the size of the collection

    Is your feature request related to a problem? Please describe. It's a feature request to let know the collection size

    Describe the solution you'd like

    • Approximate or precise size of the collection in the in a new method totalSize in a /api/v1/databases/{db}/collections/{collection}/ namespace
    • Includes all: indexes, keys, fields, etc.
    • Implementations in the tigrisdb and support it in the client

    Describe alternatives you've considered

    • Just to start a 0 value can be returned. The actual size value can be added later.
    • Give a size value in the ListCollectionsResponse method is not really meant for presenting the size information

    Additional context

    enhancement api 
    opened by seeforschauer 0
  • Request stickiness for transactional APIs

    Request stickiness for transactional APIs

    The requests in the context of a transaction must go to the same app worker.

    Forwarding logic will be implemented on the server so that the request is forwarded to the correct app worker.

    enhancement api 
    opened by ovaistariq 0
Releases(v1.0.0-alpha.20)
Owner
Tigris Data Inc
Building the next generation data infrastructure
Tigris Data Inc
Resilient, scalable Brainf*ck, in the spirit of modern systems design

Brainf*ck-as-a-Service A little BF interpreter, inspired by modern systems design trends. How to run it? docker-compose up -d bash hello.sh # Should p

Serge Zaitsev 138 Apr 22, 2022
Go-github-app - Template for building GitHub Apps in Go.

Template for GitHub Apps built with Golang Blog Posts - More Information About This Repo You can find more information about this project/repository a

Martin Heinz 39 May 21, 2022
Simple Kubernetes real-time dashboard and management.

Skooner - Kubernetes Dashboard We are changing our name from k8dash to Skooner! Please bear with us as we update our documentation and codebase to ref

null 950 Jun 22, 2022
Nba-simulation - Golang will be simulating nba match and streaming it real time

NBA Simulation golang in-memory To build and run go build ./nbaSimulation To ru

null 1 Feb 21, 2022
Reconstruct Open API Specifications from real-time workload traffic seamlessly

Reconstruct Open API Specifications from real-time workload traffic seamlessly: Capture all API traffic in an existing environment using a service-mes

null 280 Jun 24, 2022
A simple go application that uses Youtube Data API V3 to show the real-time stats for a youtube channel such as the subs, views, avg. earnings etc.

Youtube-channel-monitor A simple go application that uses Youtube Data API V3 to show the real-time stats for a youtube channel such as the subs, view

null 0 Dec 30, 2021
Flexible HTTP command line stress tester for websites and web services

Pewpew Pewpew is a flexible command line HTTP stress tester. Unlike other stress testers, it can hit multiple targets with multiple configurations, si

Ben Gadbois 339 Jun 17, 2022
LinkPage is a FOSS self-hosted alternative to link listing websites such as LinkTree and Campsite.bio

LinkPage LinkPage is a FOSS self-hosted alternative to link listing websites such as LinkTree and Campsite.bio Features Self hostable and open source

Rohan Verma 47 Jun 22, 2022
Taina backend Backend service With Golang

taina-backend Backend service Getting Started Essential steps to get your backend service deployed A helloworld example has been shipped with the temp

Commit App Playground 0 Nov 17, 2021
Acropolis Backend is the Go backend for Acropolis - the central management system for Full Stack at Brown

Acropolis Backend Acropolis Backend is the Go backend for Acropolis — the centra

Full Stack at Brown 1 Dec 25, 2021
Go-backend-test - Creating backend stuff & openid connect authentication stuff in golang

Go Backend Coding Practice This is my practice repo to learn about creating back

Pratik Raut 2 Feb 5, 2022
Austin See 0 Feb 5, 2022
CPU usage percentage is the ratio of the total time the CPU was active, to the elapsed time of the clock on your wall.

Docker-Kubernetes-Container-CPU-Utilization Implementing CPU Load goroutine requires the user to call the goroutine from the main file. go CPULoadCalc

Ishank Jain 1 Dec 15, 2021
A Golang based high performance, scalable and distributed workflow framework

Go-Flow A Golang based high performance, scalable and distributed workflow framework It allows to programmatically author distributed workflow as Dire

Vanu 576 Jun 20, 2022
FaaSNet: Scalable and Fast Provisioning of Custom Serverless Container Runtimes at Alibaba Cloud Function Compute (USENIX ATC'21)

FaaSNet FaaSNet is the first system that provides an end-to-end, integrated solution for FaaS-optimized container runtime provisioning. FaaSNet uses l

LeapLab @ CS_GMU 31 Jun 26, 2022
Next generation recitation assignment tool for 6.033. Modular, scalable, fast

Next generation recitation assignment tool for 6.033. Modular, scalable, fast

Jay Lang 1 Feb 3, 2022
Grafana Mimir provides horizontally scalable, highly available, multi-tenant, long-term storage for Prometheus.

Grafana Mimir Grafana Mimir is an open source software project that provides a scalable long-term storage for Prometheus. Some of the core strengths o

Grafana Labs 2.1k Jun 20, 2022
k6 is a modern load testing tool for developers and testers in the DevOps era.

k6 is a modern load testing tool, building on our years of experience in the load and performance testing industry. It provides a clean, approachable scripting API, local and cloud execution, and flexible configuration.

k6 16.9k Jun 22, 2022