为什么我构建了DDL to Data
Source: Dev.to
请提供您希望翻译的具体文本内容,我将为您翻译成简体中文。
问题
我一直看到的情况是:
管理层需要在周五前准备好演示。销售向客户承诺他们会看到带有“真实”数据的产品。于是有人建议直接从生产环境拉取数据。
现在 DevOps 很不满。安全团队想知道我们为什么需要在生产和预演之间进行 VPC 对等连接。有人必须赶紧对 PII 进行脱敏。DBA 被拉进会议。原本的“快速演示”变成了涉及三个团队和四个 Slack 频道的两周项目。
这一切都因为我们需要一些看起来真实的数据。
不仅仅是演示。每个新开发者入职都需要一个已填充的数据库。每个 QA 周期都需要全新的测试数据。每次预演环境的刷新都变成了生产环境的复制。
答案总是一样的:“我们能直接复制生产吗?”
不行。 你不能这样做。
替代方案糟透了
Faker 库
如果你有时间为每一列接线、编写样板代码并维护脚本,这倒是可以。你需要把 email 映射到 faker.email(),phone 映射到 faker.phone(),created_at 映射到 faker.date()。每个表都要这么做。每次模式变更都要重新处理。
在演示定在星期四的情况下,没人有这么多时间。
提示 LLM?
当然可以——但它每次的格式可能不一样,导致你的测试因为输出结构变化而频繁失效;又或者你为每次 CI 运行都要付费,流水线还要依赖 OpenAI 的可用性。
复制生产数据?
想要通过安全审查可真是好运。即使成功了,你仍然要为开发环境中存放的客户 PII 负责。一次意外的日志、一次错误报告中的截图,就可能引发合规事故。
这些方案都不适合这个简单的需求:“我需要真实的数据,但不能是生产数据”。
实现
架构已经定义了数据应有的样子。
email VARCHAR(100)→ 一个电子邮件phone VARCHAR(20)→ 一个电话号码created_at TIMESTAMP→ 一个时间戳first_name VARCHAR(50)→ 一个名字
结构就在 DDL 中。为什么要与安全对抗、请求 DevOps 并冒合规风险,只是为了获取架构本可以已经描述的数据?
我不需要生产数据。我需要 生产形态的数据。
我构建的内容
DDL to Data 可以读取你的 CREATE TABLE 语句,瞬间生成逼真的数据。
- 粘贴你的模式。
- 获得 JSON 结果。
- 邮箱看起来像邮箱,电话号码看起来像电话号码,姓名看起来像姓名——全部自动从列名推断。
- 不需要生产环境访问。
- 不需要 VPC 对等连接。
- 不涉及个人身份信息(PII)问题。
- 不需要安全审查。
- 确定性的模式匹配——相同的模式每次都会得到相同的输出。
- 足够快用于 CI/CD(毫秒级,而非秒级)。
CREATE TABLE users (
id SERIAL PRIMARY KEY,
first_name VARCHAR(50),
last_name VARCHAR(50),
email VARCHAR(100),
phone VARCHAR(20),
created_at TIMESTAMP
);
[
{
"id": 1,
"first_name": "Sarah",
"last_name": "Chen",
"email": "sarah.chen@techstartup.io",
"phone": "+1-555-234-5678",
"created_at": "2024-03-15T09:23:41"
},
{
"id": 2,
"first_name": "Marcus",
"last_name": "Johnson",
"email": "m.johnson@company.com",
"phone": "+1-555-876-5432",
"created_at": "2024-03-14T14:56:12"
}
]
无需设置。无需配置。无需向工程师提供提示。
适用对象
- 需要演示数据但不想处理安全麻烦的团队
- 不应触及生产环境的开发环境
- 需要真实数据而不是到处都是
test@test.com和John Doe的 QA 工程师 - 需要一致且快速生成数据的 CI/CD 流水线
- 曾经在会议上被管理层问“为什么不能直接复制生产数据?”的任何人
如果你曾经花更多时间获取测试数据,而不是实际进行测试,那么这篇内容适合你。
接下来
- Story Mode – 描述您想要的情景,数据会相应适配。示例:“一家快速增长的 B2B SaaS,拥有企业客户并有部分流失账户”,或“一个具有季节性假日趋势的电子商务店”。数据会讲述连贯的故事,而不是随机的。
- Direct Database Seeding – 跳过复制粘贴。将 DDL 直接连接到您的 PostgreSQL 数据库,并一键填充表格。无需触及生产环境即可为预演环境种子数据。
试一试
如果你曾经在“我们需要真实数据”和“我们不能触碰生产环境”之间左右为难,这正是我为此构建的工具。
免费层。无需信用卡。只需粘贴你的模式并查看输出。
由 Travis 构建。有问题或反馈?请通过 或在 X 上联系 @DDLTODATA。