首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我们能用PostgREST和CockroachDB吗?

我们能用PostgREST和CockroachDB吗?
EN

Stack Overflow用户
提问于 2021-03-03 21:35:23
回答 2查看 343关注 0票数 2

PostgREST从任何现有的PostgreSQL数据库中提供完全的PostgreSQL API。

CockroachDB具有分布式SQL优势。

CockroachDB在很大程度上是与PostgreSQL兼容的。这是一个关于这方面的详细博客

如果我们能把这两者结合在一起那就是一个强大的组合。我们可以使用RESTful为CockroachDB自动生成PostgREST API。

PostgREST与CockroachDB兼容吗?

有人在生产应用程序中使用过这个组合吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-03-04 15:37:29

正如Steve评论的那样,PostgREST目前与CockroachDB不兼容,因为CockroachDB不支持SET LOCAL。有关更多详细信息,请参阅https://github.com/cockroachdb/cockroach/issues/32562#issuecomment-662105805

票数 3
EN

Stack Overflow用户

发布于 2022-07-03 10:37:34

有一个叫做通用数据库代理rest的项目。它非常类似于PostgREST,但它更简单,依赖于数据库元数据。它与CockroachDB和PostgresDB兼容。

下面是一个如何与Docker一起使用的示例。

创建一个具有以下内容的docker-compose.yml:

代码语言:javascript
复制
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的文件,其内容如下:

代码语言:javascript
复制
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

代码语言:javascript
复制
{
  "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 updocker-compose up (取决于您的对接设置)

在浏览器转到http://localhost:8010/docs时,您将看到Swagger和可用的端点。你可以在浏览器上试用。昂首阔步

如果您想了解更多关于此项目的信息,请访问:https://github.com/mcadecio/universal-database-proxy-rest

请随时提供任何反馈。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66465258

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档