将部分数据库暴露给第三方的最佳做法

时间:2016-04-06 22:55:52

标签: mysql ruby-on-rails xml csv xslt

我在CentOS上使用MariaDB运行一个私有的Rails 3.2 Web应用程序,用于不同的客户,他们通常不应该彼此了解,并且绝对不能访问彼此的数据。

我的应用程序有大约80个表,其中大多数都有client_id列来指定特定客户端的所有权。没有的表通常可以连接在一个表上。

使用Rails我已经编写了一个安全抽象层,根据登录的客户端分离这些记录。

但是,现在我需要将客户端的所有数据公开给第三方应用程序,以便在该第三方程序中进行报告。 (QlikView的)

实现这一目标的好方法是什么?我已经考虑过以下选项:

  1. 通过Rails导出CSV:换行和转义内容和性能的问题。
  2. 通过Rails导出XML:性能问题。每个客户大约500k记录的大表需要大约10-20分钟。
  3. 使用INTO OUTFILE通过MariaDB导出CSV:换行和转义内容时出现问题。
  4. 通过MariaDB导出XML:近乎完美,但读取XML的程序Qlikview无法处理<field name="username"/>命名标记,而使用XSLT进行翻译对于大型表格来说再次非常慢。
  5. 通过ODBC启用对数据库的直接远程访问:不,只是不!
  6. 将Mysqldump与where查询一起使用并安装本地MySQL以恢复:相当严格,但我目前只能想到有效的解决方案。然后,Qlikview将通过ODBC直接从本地MySQL安装中提取数据。
  7. 想知道遇到这个问题的其他人是如何解决它的!我不可能是唯一一个。

    补充要点:

    • 数据需要有效。需要在应用程序中进行更改,并且应立即反映在任何转储/转移中或下载到报告工具中。例如,每24小时调度一次转储不是一种选择。

    • 最好我也可以限制某些模型的某些列,例如hashed_password表格中的User

0 个答案:

没有答案
相关问题