为大型遗留系统从RDBMS迁移到NOSQL

为大型遗留系统从RDBMS迁移到NOSQL,nosql,rdbms,Nosql,Rdbms,主题:使用NOSQL将非常复杂的传统客户机服务器应用程序迁移到支持SAS的web版本 我们计划将我们的两个系统从RDBMS迁移到NOSQL产品。我们正处于决定是采用完整的NOSQL还是混合实现的阶段 作为一个大系统,当前系统的表数量有数千个,表之间的关系复杂,触发器、存储过程和约束很多。我们知道,迁移并不容易,因为许多特定于DB或SQL的函数、group by、聚合函数、复杂联接、子/内部查询、限制、排序(order by)以及其他未使用的函数都在使用中。。!所以这是一个非常艰难的局面 数据可以

主题:使用NOSQL将非常复杂的传统客户机服务器应用程序迁移到支持SAS的web版本

我们计划将我们的两个系统从RDBMS迁移到NOSQL产品。我们正处于决定是采用完整的NOSQL还是混合实现的阶段

作为一个大系统,当前系统的表数量有数千个,表之间的关系复杂,触发器、存储过程和约束很多。我们知道,迁移并不容易,因为许多特定于DB或SQL的函数、group by、聚合函数、复杂联接、子/内部查询、限制、排序(order by)以及其他未使用的函数都在使用中。。!所以这是一个非常艰难的局面

数据可以以数百TB的速度增长,并将继续增长,我们需要以下几点:

  • 数据可靠性
  • 无单点故障,零停机
  • 如上所述,为系统更换RDBMS的最佳功能集
  • 更快的读、写和更新性能
我遇到了一个RDBMS,它与NOSQL竞争,NOSQL就是VOLTDB,你们有人试过吗

我认为Neo4j、Cassandra或HBase可以完成这项工作,我已经读到,它将在应用程序级别大量增加代码行,以取代SQL,但我们对此没有意见,但在实现类似SQL/RDBMS的结果时,它不应降低性能,因为它是我们的KSF(关键成功因素),而没有单点故障是健康因素。:)

能够轻松添加节点以管理可伸缩性也会很有帮助

考虑迁移像ERP、CRM或EMR这样的系统,在WEB上有几十万用户

您的输入将是有价值的,请提前感谢。

  • 数据可靠性
使用用Erlang编写的NoSQL(例如Riak、CouchDB),就像Erlang OTP多年来一直在做可靠性工作一样

  • 无单点故障,零停机
无论是否使用SQL,都没有零停机时间

通过分布式节点(位于不同电网中)上的仲裁读/写,不容易实现单点故障

  • 如上所述,为系统更换RDBMS的最佳功能集
没有任何NoSQL功能集将取代ACID事务。VoltDB不是NoSQL,它是内存中的SQL数据库,所以准备好内存的TBs

大多数现代NoSQL解决方案将允许您完成RDBMS可以完成的大部分仓储任务。但你将支付没有酸和痛苦的聚合。再次看看Riak和CouchDB,因为它们本质上也是容错的,所以至少你不必担心这一点

  • 更快的读、写和更新性能
比什么快?如果您进行复杂的聚合,SQL DB将比任何NoSQL快99.99%。如果给定正确的缓存量,NoSQL的写入速度可能相当快,具体取决于您的仲裁(一次写入应返回成功的节点数)。例如,Riak做了一个Google的LevelDB可插拔后端,它的写入速度非常快

说了这么多。除非您真的必须迁移到NoSQL,否则不要迁移到NoSQL。如果你真的需要,首先从最不重要的(最好是小的)组件开始,因为这是一种思维转移,需要重新开发

  • 数据可靠性
使用用Erlang编写的NoSQL(例如Riak、CouchDB),就像Erlang OTP多年来一直在做可靠性工作一样

  • 无单点故障,零停机
无论是否使用SQL,都没有零停机时间

通过分布式节点(位于不同电网中)上的仲裁读/写,不容易实现单点故障

  • 如上所述,为系统更换RDBMS的最佳功能集
没有任何NoSQL功能集将取代ACID事务。VoltDB不是NoSQL,它是内存中的SQL数据库,所以准备好内存的TBs

大多数现代NoSQL解决方案将允许您完成RDBMS可以完成的大部分仓储任务。但你将支付没有酸和痛苦的聚合。再次看看Riak和CouchDB,因为它们本质上也是容错的,所以至少你不必担心这一点

  • 更快的读、写和更新性能
比什么快?如果您进行复杂的聚合,SQL DB将比任何NoSQL快99.99%。如果给定正确的缓存量,NoSQL的写入速度可能相当快,具体取决于您的仲裁(一次写入应返回成功的节点数)。例如,Riak做了一个Google的LevelDB可插拔后端,它的写入速度非常快


说了这么多。除非您真的必须迁移到NoSQL,否则不要迁移到NoSQL。如果你真的需要,首先从最不重要的(最好是小的)组件开始,因为这是一种思维转移,需要重新开发

为什么要迁移到NoSQL?如果您的旧版应用程序和数据库依赖于传统的RDBMS,则似乎没有任何意义。我们正在从客户机/服务器桌面架构转向基于SAS的web版本。在C/S版本中,db驻留在每个客户机上,而在SAS中,所有内容都将托管在中央服务器网格/云上。确实如此,但根据我的阅读,一些NOSQL产品可以让我们在所有节点上设置/配置一致性,作为速度的折衷。我愿意接受关于由RDBMS+NOSQL组成的混合系统的建议。我很想知道是否有人观察到类似系统的大规模迁移,无论是混合迁移还是完整的NOSQL迁移。以及他们遇到的问题或挑战,以及他们能够设计什么样的解决方案?您所描述的不是迁移。这是对应用程序的完全重写和重新思考。预期ACID事务的代码在en中不起作用