目前我们正在使用MySQL数据库。数据库大小约为45 GB,并且不断增长。
我们正在考虑使用couchbase迁移到NoSQL技术。我不是数据库专家,在我进一步思考之前,我几乎没有问题
谢谢
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进行反应性写入/读取。
我还没有提到其他一些细节,但如果您有任何其他问题,请随时给我打电话。
https://www.dataversity.net/choose-right-nosql-database-application/#
您可以看到,couchbase带来了可用性和分区容错,但在一致性方面并不是很好,不像经典的RDBMS主要带来一致性和可用性功能。
因此,您的选择将取决于nosql数据库的类型。 Couchbase是面向文档的,您还有其他选择(键值,列和图形)。在您的情况下,文档或列可能更适合。
希望这能带给你一些见解。
选择使用SQL vs NoSQL vs Graph ..这是第一步。您的数据如何根据数据之间的关系进行组织。如果你需要对象之间的关系使用SQL / Graph DB,如果你需要的只是一个对象使用NoSQL。
如果你选择使用NoSQL,有很多选择。使用Erlang我使用过CouchDB和Elastic Search,但你可以选择MangoDB,Raik或其他东西。要考虑的最重要的事情是如何访问数据,清除/删除大量数据的容易程度(CouchDB是不行的),你需要ACID或最终一致性......
有时我使用MySQL并只在其中一个字段中存储json,它比将所有内容存储在字段中或使用两个数据库(一个用于相关数据,另一个用于json)更好。
Erlang将与任何数据库一起使用,只需弄清楚您的要求是什么。