我是一个 CF 新手,关于 CF 的数据库使用,有几个问题想请教大家 我们现在使用的是 mysql 数据库,如果使用 CF 的 D1 的话,需要写一个 worker 读取 mysql 再写入 D1 吗? 如果不使用 D1 的话,按照使用传统云厂商的经验,购买同一个地域的服务器和数据库,服务器可以使用内网地址访问数据库,效率更高。那么在 CF 不提供 mysql 的前提下,购买哪个厂商的数据库更好一些?
1
echoless 238 天前 via Android
cf 并不能直接访问传统云数据库 d1 或者 neon 这种 severless 的才行
|
2
echoless 238 天前 via Android
更正 现在好像可以了 之前我记得不行
|
3
lekai63 238 天前
worker 可以用 D1
但貌似 D1 没有 [事务] ,你们要不要再斟酌下 |
4
epiloguess 238 天前 via Android
|
5
luckykelan OP @lekai63 确实... 事务到还好,只是数据迁移是个比较头疼的问题
|
6
luckykelan OP @epiloguess 这个好贵啊
|
7
epiloguess 238 天前
@luckykelan 是我理解错了抱歉,因为我一直在用 prisma...目前 prisma 没有边缘兼容的 mysql 驱动,但如果要连接到你们自己的 SQL,似乎是可行的,建议你还是看文档吧,https://developers.cloudflare.com/workers/databases/connecting-to-databases/
|
8
luckykelan OP @epiloguess 非常感谢!
|
9
codehz 238 天前
请先确定有没有必要用 worker ,是否有成本优势或者延迟优势,在有一个集中的数据库的情况下这些都不是很明朗
|
10
catchmeup 238 天前
worker 就是一个云函数,所有变量会在请求过程中一次性创建并在请求后销毁,传统数据库一般要在内存中保存一个数据库连接或者连接池,云函数不支持(也可以硬在每次请求时创建数据库连接,但开销和耗时会很大,且高并发时可用数据库连接可能会耗尽)。所以 worker 最好配合 serverless 数据库使用,例如 planetscale.com(mysql,无免费套餐,较贵),neon.tech(postgress,开源,有免费套餐),d1(sqlite,较便宜)等。
|