PostgREST从任何现有的PostgreSQL数据库中提供完全的PostgreSQL API。
CockroachDB具有分布式SQL优势。
CockroachDB在很大程度上是与PostgreSQL兼容的。这是一个关于这方面的详细博客
如果我们能把这两者结合在一起那就是一个强大的组合。我们可以使用RESTful为CockroachDB自动生成PostgREST API。
PostgREST与CockroachDB兼容吗?
有人在生产应用程序中使用过这个组合吗?
发布于 2021-03-04 15:37:29
正如Steve评论的那样,PostgREST目前与CockroachDB不兼容,因为CockroachDB不支持SET LOCAL。有关更多详细信息,请参阅https://github.com/cockroachdb/cockroach/issues/32562#issuecomment-662105805。
发布于 2022-07-03 10:37:34
有一个叫做通用数据库代理rest的项目。它非常类似于PostgREST,但它更简单,依赖于数据库元数据。它与CockroachDB和PostgresDB兼容。
下面是一个如何与Docker一起使用的示例。
创建一个具有以下内容的docker-compose.yml:
version: '3.9'
services:
crdb:
image: cockroachdb/cockroach:v22.1.0
ports:
- "26257:26257"
command: start-single-node --insecure
volumes:
- ./init-cockroach.sql:/docker-entrypoint-initdb.d/init.sql
healthcheck:
test: cockroach sql --insecure
interval: 1s
timeout: 3s
retries: 5
db-rest-api:
environment:
CRB_PASSWORD:
image: mcadecio/universal-database-proxy-rest:0.0.6
depends_on:
crdb:
condition: service_healthy
ports:
- "8010:8010"
volumes:
- ./config.json:/usr/database-proxy/config.json这个码头组合只有两个服务。将由DB中的表生成的CockroachDB和Rest。
创建一个名为init-cockroach.sql的文件,其内容如下:
CREATE SCHEMA vehicles;
CREATE TABLE vehicles.cars
(
car_id bigint primary key not null
constraint cars_car_id_uindex unique,
manufacturer varchar(50) not null,
doors bigint default 5
);
INSERT INTO vehicles.cars
VALUES (1, 'BMW', 5),
(2, 'BMW', 3),
(3, 'MERCEDES', 5),
(4, 'MERCEDES', 3);
CREATE TABLE vehicles.wheel
(
wheel_type varchar(50) primary key not null
);我们将使用这个预置我们的数据库与一些数据。
接下来,使用以下内容创建一个文件名config.json:
{
"cockroachApi": {
"enabled": true,
"host": "0.0.0.0",
"port": 8010,
"openApiFilePath": "crbOpenApi.yaml",
"database": {
"host": "crdb",
"port": 26257,
"username": "root",
"password": "CRB_PASSWORD",
"databaseName": "defaultdb"
}
}
}这里,我们只是设置我们希望公开REST和数据库连接细节的端口。
现在一切都安排好了。只需做:docker compose up或docker-compose up (取决于您的对接设置)
在浏览器转到http://localhost:8010/docs时,您将看到Swagger和可用的端点。你可以在浏览器上试用。昂首阔步
如果您想了解更多关于此项目的信息,请访问:https://github.com/mcadecio/universal-database-proxy-rest
请随时提供任何反馈。
https://stackoverflow.com/questions/66465258
复制相似问题