2009-10-29 34 views
6

我是一个为我的公司SaaS产品构建Web应用程序的项目的首席开发人员。我们目前正在使用LDAP来存储用户数据,如ID,密码,连接细节,首选项和其他用户特定数据。如何划分LDAP和RDBMS之间的责任

我们正在构建的应用程序之一是报告服务,它将收集管理信息并向我们的最终用户呈现管理信息。显然这个服务需要一个RDBMS,但它也需要访问存储在LDAP中的用户数据。

在我看来,我们有两个基本的实施方案:在两个LDAP和RDBMS

  1. 复制用户数据。
  2. 让报告服务在需要用户数据时访问LDAP。

虽然复制数据(和实施机制,做到这一点),如选项1建议似乎是错误的路要走,我的直觉是,方案2将不执行不够好(你怎么“加入” LDAP数据与RDBMS数据一样有效,与纯RDBMS实现一样高效)。

我确实找到了related question,但我仍然不确定采取哪种方法。我有兴趣了解人们对这两种选择或其他选择的看法。

+0

这是一个问题的例子是我们可以实现用户登录报告的地方。我们想要一个登录事件列表和一些相关的用户数据,例如显示名称和电话号码。登录事件将存储在RDBMS中,但用户数据将在LDAP中。 – 2009-10-29 11:06:46

回答

2

为什么你会觉得重复的数据会是一个错误的路要走?报表工具(基于Web和其他)大多是围绕RDBMS构建的,所以任何mix'n'match都会带来不必要的复杂性。报告可能需要经常更改(从经验),所以您希望它们尽可能简单。您存储的关于用户的数据不可能经常更改其格式,因此一旦您的导入功能正常工作,您就不需要再次触摸它。

我可以看到的唯一障碍是延迟:您如何确保您的RDBMS副本是最新的?您可能需要确保您的更新代码写入两个目标。就个人而言,我也不一定将LDAP用于应用程序特定的个人首选项:LDAP无法处理事务,因此当数据从多个方向更新时会发生什么? (交易性当然也是让更新者写入两个商店的问题......)我宁愿让RDBMS成为大多数数据的主人,让LDAP只担心身份,证书和权利,这些很少变化,仅用于一组目的。对我自己而言,LDAP处理分层数据的能力并不是一个很好的卖点。

数据重复并不总是一件坏事,尤其是在使用场景不同的情况下。