从mysql迁移到couchbase。这是个好主意吗?

问题描述 投票:4回答:3

目前我们正在使用MySQL数据库。数据库大小约为45 GB,并且不断增长。

  1. 每秒大约有4000个数据被写入数据库。
  2. 同时,几个用户从数据库中获取数据。这意味着读取和写入将持续在数据库中进行。

我们正在考虑使用couchbase迁移到NoSQL技术。我不是数据库专家,在我进一步思考之前,我几乎没有问题

  1. NoSQL技术在速度,性能和灵活性方面是否可行,当数据库大小太大且每秒读取和写入次数过多时?
  2. 谁不应该使用Couchbase?
  3. 我们还使用Erlang,它每秒将数千条记录写入数据库。 Erlang是否支持NoSQL Couchbase?

谢谢

mysql erlang couchbase
3个回答
4
投票

Couchbase员工在这里,

1 - 就写入吞吐量而言,考虑到couchbase的体系结构以及如何自动分片/分发数据,可以轻松实现此性能。考虑到数据库可以扩展到单个集群中的数百个节点(理论上为1024个节点),数据的大小也应该不是问题,但即使是最大的客户端也拥有少于100个节点的集群。

如果您通过其密钥获取数据,CB将作为键值存储工作,区别在于默认情况下写入是异步的,并且它顶部还有一个托管缓存(您甚至可以使用CB作为托管缓存btw ),所以如果你不得不一遍又一遍地读取相同的数据,那么这些数据将自动保留在缓存中。

如果需要大量查询数据,只需向集群添加更多索引/查询节点并创建一些索引即可。

2 - 在这个确切的时刻(可能会在不久的将来发生变化),如果您需要在单个事务中更新多个文档,RDBM仍然是一个更好的解决方案。但是,文档更新是原子的,由于您在文档存储中建模数据的方式,您可能根本不需要事务。

3 - 尽管CB的某些模块是用erlang编写的,但我们还没有Erlang SDK还有https://docs.couchbase.com/server/6.0/sdk/overview.html。但是,由于CB本身被设计为具有反应性,因此如果您确实需要获得最大吞吐量,您仍然可以使用node或java进行反应性写入/读取。

我还没有提到其他一些细节,但如果您有任何其他问题,请随时给我打电话。


3
投票
  1. Nosql数据库的设计旨在通过提供横向可扩展性来回答您的第一个问题,该横向可扩展性允许您轻松且经济高效地扩展数据库集群以管理越来越多的数据。这种水平可扩展性并不是免费的,因为它通常会影响数据的可用性或一致性,这部分可以决定您选择正确的解决方案。
  2. 如何选择正确的nosql数据库将取决于您的应用程序约束。人们通常会在CAP三角形上找到不同的解决方案(一致性,可用性,分区容差)。你可以在这里找到参考:

https://www.dataversity.net/choose-right-nosql-database-application/#

您可以看到,couchbase带来了可用性和分区容错,但在一致性方面并不是很好,不像经典的RDBMS主要带来一致性和可用性功能。

因此,您的选择将取决于nosql数据库的类型。 Couchbase是面向文档的,您还有其他选择(键值,列和图形)。在您的情况下,文档或列可能更适合。

  1. 最后选择标准是查询API和支持的语言。这些非常重要,因为如果nosql db查询语言无法提供所有必需的内容,那么移植现有查询可能会非常困难。此外,如果没有针对couchbase的全功能erlang客户端,也可以将其链接到db客户端本身。

希望这能带给你一些见解。


2
投票

选择使用SQL vs NoSQL vs Graph ..这是第一步。您的数据如何根据数据之间的关系进行组织。如果你需要对象之间的关系使用SQL / Graph DB,如果你需要的只是一个对象使用NoSQL。

如果你选择使用NoSQL,有很多选择。使用Erlang我使用过CouchDB和Elastic Search,但你可以选择MangoDB,Raik或其他东西。要考虑的最重要的事情是如何访问数据,清除/删除大量数据的容易程度(CouchDB是不行的),你需要ACID或最终一致性......

有时我使用MySQL并只在其中一个字段中存储json,它比将所有内容存储在字段中或使用两个数据库(一个用于相关数据,另一个用于json)更好。

Erlang将与任何数据库一起使用,只需弄清楚您的要求是什么。

© www.soinside.com 2019 - 2024. All rights reserved.