为大数据和多用户设计数据库



我正在设计一个项目,每个管理员可能需要数千条记录(我估计在几年内,我将在数据库中看到超过100000条记录(,所有记录对每个管理员来说都是唯一的。(我不应该访问你的数据,你也不应该访问我的(。每个管理员都可以创建多个用户,这些用户可以访问特定的数据,但只能访问属于其权限组的数据最好的组织策略是什么;"大数据";在这个意义上

想象一下,我的项目是帮助一位财务顾问和一位客户跟踪他们的所有购买情况。财务顾问可以查看其所有客户的信息,每个子客户只能查看其信息(除非另有许可(。并且多个财务顾问可以使用在集中式服务器上运行的相同软件。我们必须做出的唯一假设是,每个Purchase都是一个可能包含大量数据的对象。

我可能会有一个数据库用于登录和证书信息。但一旦用户登录,就让我们假设他们有一个UserID。

使用该UserID,我知道我可以跟踪对象权限(服务器端(。但是,如果我有超过100000条记录,我可以在尝试检索特定用户登录时可以访问的所有记录时看到性能问题。我可能会将React与Redux存储一起使用,这样一旦我检索了一次所有数据,我就不需要担心始终如一地检索数据(我还可以在数据库中添加一个标志,让用户知道他们的数据是否是最新的(。

这是我的想法:

  • 1个数据库,用于保存用户登录和证书信息
    • 这是出于安全目的
    • 将为所有登录请求运行一个唯一的服务器
  • 1个数据库,用于保存可访问的数据
    • 此数据库包含:
      • 1个资源表(可配置的用户信息,est 5000条记录(
        • 可以这样排序,即每个管理员都有一组保留的记录
      • infoObject的1个表(100000多条记录(
      • infoObject无关的其他可访问数据的附加表(每个est 5000条记录(
    • 使用UserId检索其特定资源
      • 包含该用户有权查看其信息的所有UserId
    • 检索与其ID关联的所有记录以及它们可以访问的所有ID

注意:我曾想过为此使用SQL数据库,如果你不这么认为,请说明!

谢谢!

对于大型数据集,我建议进行表分区和索引。检查Oracle数据库的分区表和索引,其他SQL数据库也可以做到这一点。

最新更新