https://github.com/firmfoundation/dbquery
API Service for Query Statistics
https://github.com/firmfoundation/dbquery
analytics postgresql query statistics
Last synced: 6 months ago
JSON representation
API Service for Query Statistics
- Host: GitHub
- URL: https://github.com/firmfoundation/dbquery
- Owner: firmfoundation
- Created: 2023-06-22T05:30:13.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2023-07-15T20:41:02.000Z (almost 3 years ago)
- Last Synced: 2024-06-21T02:10:15.225Z (about 2 years ago)
- Topics: analytics, postgresql, query, statistics
- Language: Go
- Homepage:
- Size: 9.81 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# API Service for Query Statistics
This is a Golang API service that allows you to connect to any PostgreSQL database and retrieve query statistics. The service supports filtering by query type, pagination, and sorting by slowest or fastest queries. The service is designed to handle high loads of API calls and uses Redis for caching to improve performance.
You can easily analyze your all query performance and identify areas for optimization with single API call. And with Redis caching, the service can handle high loads of API calls without sacrificing performance.
## Getting Started
To run the code, use the following command:
go run ./cmd/dbquery/app.go
Before using the API service, make sure that the PostgreSQL database you are connecting to has the pg_stat_statements extension loaded correctly. You also need to configure postgresql.conf with shared_preload_libraries = ‘pg_stat_statements’. Additionally, you need to have a local running Redis server.
## Usage
To use the API service, you can send HTTP requests to the API endpoint with the appropriate parameters.
### Connecting any PostgreSQL Database
To connect to any PostgreSQL database, use the following endpoint:
POST /connect
you will get `database_instance_id` and you need it for query api.
The request body should be in JSON format and include the following fields:
```
{
"DBHost": "127.0.0.1",
"DBUserName": "postgres",
"DBUserPassword": "password123",
"DBName": "dbname",
"DBPort": "5432"
}
```
### Retrieve Query Statistics
To retrieve query statistics, use the following endpoint:
GET /querystate?page=1&page_size=50&sort=slowest&filter_query=all&database_instance_id=d96fceb7-c576-404d-b8ab-c46db4fd1422
You can use query parameters to filter and paginate the results. The available query parameters are:
- page: The page number to retrieve (default is 1).
- page_size: The number of query statistics to retrieve per page (default is 50).
- sort: The sorting order for the query statistics. You can sort by slowest or fastest (default is slowest).
- filter_query: The query type to filter by. You can filter by all, select, insert, update, or delete (default is all).
- database_instance_id: The database connection. You will get this id from database connect api.
## Testing
To run the tests, you will need to have Redis and PostgreSQL databases running. You can use Docker to easily set up these databases:
# Start a Redis container
docker run --name my-redis -d -p 6379:6379 redis
# Start a PostgreSQL container
docker run --name my-postgres -e POSTGRES_PASSWORD=password123 -d -p 5432:5432 postgres
Once the databases are running, you can run the tests with the following command:
go test ./...
## Conclusion
This API service provides a fast and efficient way for clients to retrieve query statistics from any PostgreSQL database. With support for filtering, pagination, and sorting, clients can easily analyze their query performance and identify areas for optimization. And with Redis caching, the service can handle high loads of API calls without sacrificing performance.
## CI-CD Jenkies
Jenkins pipeline is configured to build and deploy the application.
## Screenshot

## To do soon
frontend 🤩️