我是一个项目的首席开发人员,该项目正在为我的公司SaaS产品构建Web应用程序。我们目前正在使用LDAP来存储用户数据,例如ID,密码,联系方式详细信息,首选项和其他用户特定数据。
我们正在构建的一个应用程序是一个报告服务,它将收集并向最终用户提供管理信息。显然,这项服务需要一个RDBMS,但它还需要访问存储在LDAP中的用户数据。
正如我所看到的,我们有两个基本的实现选项:
虽然选项1中建议的重复数据(以及实现实现这一目标的机制)似乎是错误的方法,但我的直觉是选项2的表现不够好(你如何'加入'LDAP数据到RDBMS数据与纯RDBMS实现一样有效吗?)。
我找到了related question,但我仍然不确定采取哪种方法。我有兴趣看到人们对任何选项或其他选项的看法。
答案 0 :(得分:2)
为什么你觉得重复数据是错误的方法?报告工具(基于Web和其他)主要是围绕RDBMS构建的,因此任何mix'n'match都会引入不必要的复杂性。报告可能需要相当频繁地更改(来自经验),因此您希望它们尽可能简单。您存储的有关用户的数据不太可能经常更改其格式,因此一旦您的导入功能正常工作,您将无需再次触摸它。
我能看到的唯一障碍是延迟:您如何确保您的RDBMS副本是最新的?您可能需要确保更新代码写入两个目标。就个人而言,我也不一定将LDAP用于特定于应用程序的个人首选项:LDAP无法处理事务,那么当从多个方向更新数据时会发生什么? (交易性当然也是让更新者写入两个商店的问题......)我宁愿让RDBMS成为大多数数据的主人,让LDAP只担心身份,凭据和权利,这些很少被改变,仅用于一组目的。对我自己来说,LDAP处理分层数据的能力并不是一个很好的卖点。
数据复制并不总是坏事,尤其是当使用场景不同时。