小编Ale*_*lex的帖子

保持 protobuf 规范与关系数据库(例如 PostgreSQL)同步的最佳实践

1.我们有一个 Google 的 Protocol Buffers 格式的模式定义,我们用它来为不同的 gRPC 实现(Python、PHP)生成代码

2.我们有一个数据库 (PostreSQL),它从映射 Protocol Buffers 结构的 SQL 文件初始化。

问题: protobuf 规范经常发生变化。这必须反映在数据库中,这是一项繁琐的任务,手动完成时容易出错。

我们最近转移到 Alembic 迁移,以便在我们更新协议缓冲区规范时将持续更新迁移到(实时)数据库结构。但是,我们仍然觉得我们需要维护两个基本相同或至少非常相似的结构:ProtoBuf 和 SQL-Code(通过 Alembic Migrations 或在纯 *.sql 文件中管理)。

我一遍又一遍地搜索,关于其他人如何解决这个问题的信息很少。理想情况下,我们希望建立一个 CI/CD 流程,将 protobuf 规范(例如,消息名称从 更改teaspoonknife)转换为 SQL 模式定义(例如CREATE TABLE teaspoon (...);)或从中创建 SQL 迁移代码(例如ALTER TABLE teaspoon RENAME TO knife;)。

我知道它实际上比我的简单示例更复杂,但我什至找不到支持半自动和人工监督转换的代码。有什么建议吗?

到目前为止我发现了什么:

  • 从 SQL 文件,我们可以创建一个 PostgreSQL 数据库(例如在 Docker 中)并使用sqlacodegen自动创建一个 SQLAlchemy 模型
  • 从 SQLAlchemy 模型,我们可以使用 Alembic 迁移来创建(半)自动模式迁移代码
  • 我们回到零点:我们需要维护基本的 SQL 文件和 protobuf 规范
  • 有 …

postgresql schema-migration

10
推荐指数
1
解决办法
1862
查看次数

Postgres:插入的元组和实时元组之间的区别

提前很多道歉,但我自己无法找到:

活元组和插入 postgres 统计的元组有什么区别?

有这个帖子,但它没有回答这个问题:pg_stat_get_live_tuplesRepresenting the number of live [...] rows (tuples) in the table.但什么是“活”?

Postgres文档也不提供答案:

  • pg_stat_get_live_tuples(oid) Number of live rows in table
  • pg_stat_get_tuples_inserted(oid) Number of rows inserted into table

为什么我的统计数据显示 213,324,422 个插入的元组,但只有 124,510,280 个活动元组?(3,087,919 个死元组)

PG Admin文档对此也不清楚。它还说Tuples Inserted displays the number of tuples inserted into the database within the last week.

我想知道我的数据库中现有条目的总数。这是活动行还是插入行?

postgresql pgadmin

5
推荐指数
1
解决办法
1万
查看次数

标签 统计

postgresql ×2

pgadmin ×1

schema-migration ×1