【问题标题】:Need a solution to get rid of multiple database需要一个解决方案来摆脱多个数据库
【发布时间】:2016-03-23 01:23:03
【问题描述】:

在我的公司,我们在 SQL Server 中托管了多个数据库结构。 例如,每当有新客户与我们签约时,我们都会在 SQL Server 中创建一个新数据库来维护他们的数据。

现在我们的数据库服务器中已经有 2000 多个数据库。我们预计在不久的将来会有更多的客户注册,甚至可能超过 5000 多个。 拥有 5000 多个数据库和增加数据库数量可能不是一个可取的做法,有时我们会运行一些跨数据库运行的任务,如果我们要跨 5000 多个数据库运行任务,我们肯定会遇到性能问题。

避免为每个客户创建多个数据库并同时单独维护他们的数据的替代解决方案是什么?

我听说过 BigData 和其他数据库解决方案,但不清楚。

有人可以分享一下吗?

【问题讨论】:

  • 大数据是一个不错的选择,但是为每个客户创建一个数据库,即使将来使用大数据,也很难处理所有这些数据库..
  • 对于一个客户数据库,您平均有多少表/记录?
  • “我们肯定会遇到性能问题” - 试试看吧。看了一篇关于用1M数据库测试pg的文章,跑了。将租户分离到他们自己的数据库中,有利于安全性并且更容易备份

标签: sql-server database database-design bigdata nosql


【解决方案1】:

您应该考虑是否只存储数据并通过简单查询访问它,或者如果您通常执行复杂查询,如果您只是存储数据并通过简单查询访问它并且您的需求不是 100% 相关的,也许您应该考虑将部分数据移动到 HDFS 文件系统: https://en.wikipedia.org/wiki/Apache_Hadoop#HDFS 。 要在 hadoop 中处理数据,有很多工具,但可以肯定的是 spark: https://en.wikipedia.org/wiki/Apache_Spark

可能最好的解决方案是开始将您的历史数据移动到 HDFS 中,仅用于存储,其余部分保持原样,直到您对 hadoop 和 spark 范式充满信心

hadoop 是一个分布式的容错文件系统,spark 是一个批处理大量非结构化或结构化数据的引擎,考虑到 hadoop 中的数据通常不是结构化的,所以你必须改变处理数据的方式,如果你还想使用 sql 我建议检查 Impala 和 Hive:

http://impala.io/

https://hive.apache.org/

查看 cloudera 网站以获得更结构化的 IT 解决方案,而不是您需要组织的大量单一工具 http://www.cloudera.com/content/www/en-us/solutions.html

他们有一个快速启动虚拟机来尝试所有 hadoop 生态系统工具,这可能是开始试验的最佳方式:

http://www.cloudera.com/content/www/en-us/downloads/quickstart_vms/5-4.html

【讨论】:

    【解决方案2】:

    很大程度上取决于您如何构建信息以及所需的访问权限类型。您是否考虑过使用像 Apache Solr 这样的搜索引擎?

    【讨论】:

      【解决方案3】:

      我建议的一个解决方案是在每个客户的表名上使用前缀。然后,您可以通过限制每个客户每组表来解决安全问题。

      缺点是你必须重写你的应用程序,以便在每个表想要访问它时使用前缀。如果您有很多表,那将是一个问题。

      我认为这就是一些多 Wordpress 托管网站处理数据库问题的方式。

      【讨论】:

        【解决方案4】:

        如果数据库具有相同的架构,您可以将它们合并为一个。这样,每个客户的表现在将成为新数据库中的一组行。新客户可能会在存储客户资料的表中增加几行。

        您可以使用行级安全性来限制对客户数据的访问:- https://msdn.microsoft.com/en-us/library/dn765131.aspxpx

        有关在现有方法上使用此方法的优缺点,请参阅:Pros/Cons Using multiple databases vs using single databaseSingle or multiple databases

        使用其他选项提供了很好的学习机会,但即使有一些确实更好,也可能会产生巨大的过渡成本。

        【讨论】:

          【解决方案5】:

          听起来您在问如何从 SQLServer 中删除架构。如果是这样,这个问题已经在这里回答了:SQL Server 2008 delete all tables under special schema

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-09-24
            • 1970-01-01
            • 1970-01-01
            • 2020-09-26
            • 2013-09-09
            • 1970-01-01
            相关资源
            最近更新 更多