我正在制作一项服务,允许其用户定义自己的表(其中的列)并将数据(行)保存到它们。像电子表格或Airtable.com这样的东西。
我想知道什么是保存这些数据的最佳架构,以便它可以轻松支持这些表之间的选择,连接以及一些全文搜索。我想出了这两个解决方案,你能给我一些优点和缺点吗?谢谢。
1)有一个表格列表(表格)及其架构(作为JSON)。第二个表包含原始数据。该表有三列--id,id_sheet(表单的外键)和数据(JSONB中的原始表)。由于JSONB,它很容易并且非常适合选择。但是,对于许多用户和许多表,表数据可能会变得非常大,并且由于JSONB,它将进行优化。
2)有一个表格列表(表格)及其架构(作为JSON)。然后,这些工作表中的每一个都表示为数据库中的新表,其中的列基于其模式。这会很好,但我不确定是否可以通过应用程序创建太多小表。
我知道让应用程序在数据库中创建表格通常是一个坏主意,但它可以使我的网站更快更容易开发。更容易搜索,选择,加入......
我希望有数千名用户,每人有10-20张(“桌子”),其中有数百行。然后,可能会有少数用户拥有甚至数百万行,并且它也可能减慢其他用户的速度。每个表都真正定义为Postgre表,这不是问题。你觉得怎么样?