【问题标题】:Database selection for performance and scalability for C# APIs针对 C# API 的性能和可扩展性的数据库选择
【发布时间】:2019-05-14 05:23:04
【问题描述】:

我一直在开发一个类似约会的应用程序,有点火种/大黄蜂。我一直在争论使用 Cassandra 或 MongoDB 的数据库。到目前为止,我只有 MS SQL、mysql 和 Unidata 的经验......由于可扩展性,我一直在研究 Cassandra 和 MongoDB,但我听说 Tinder 的 MongoDB 有问题,因此他们不得不打电话寻求帮助。即使不是这两个中的任何一个,您还有什么建议?学习 DB 对我来说不是问题,但我正在寻找性能和可扩展性。主要编程语言将是 C#(如果有帮助的话),最好我正在寻找在云中构建它(Azure Cosmos DB、aws dynamoDB 或类似语言)。由于可扩展性,我的想法是 NoSQL DB,但如果有充分的理由,我不会反对选择 RDBMS。

建议、cmets、想法?

【问题讨论】:

  • 仅仅因为某个东西是 documentDB 或其 NoSQL 并不意味着它的快速或可扩展。如果您实现读/写副本,SQL 可以很好地扩展。之后,您可以开始实现缓存,您仍然拥有用于原子事务和存储的 sql server。以下面的例子/想法为例,假设您有数百万用户。当 x 登录时,检索 x 并存储在缓存中(例如 redis),x 所做的一切都存储在缓存中并写入数据库。当 X 注销或 x 有一段时间没有访问时,缓存失效并消失,直到他再次登录。
  • @Kris.J 添加副本,如果它不是异步副本,它会减慢您的插入/更新/删除查询。因为它必须首先提交到副本以完成 ACID。而且,如果您使用多种列进行全文搜索,则需要对这些列进行索引,这也会减慢您的写入/更新/删除查询。所以它并没有像你说的那样神奇地扩展。
  • @Emre Savcı,我知道,但除非副本位于远程位置,否则您不会使用异步副本。
  • 也从来没有暗示它的神奇之处,只是人们认为它不能扩展。

标签: database mongodb performance cassandra scalability


【解决方案1】:

Cassandra 比 mongodb 有一些优势。

  • cassandra 中没有主从。任何节点都可以接收任何 询问。如果 master 在 mongodb 上宕机,您将面临很少的宕机时间。
  • cassandra 很容易扩展,添加节点不是挑战。
  • 写入速度非常快。
  • 使用主键读取查询速度很快。

还有

所以你不能在每个用例中都使用 cassandra。如果您的数据模型不适合 cassandra,请考虑另一个符合您要求的数据库。

也可以看看:https://blog.pythian.com/cassandra-use-cases/

【讨论】:

  • @OP,您应该注意 Cassandra 也不会神奇地扩展,您需要了解使用 Lists 会对性能产生影响,因为它们的工作方式是 IIRC,当您将 List 保存回 Cassandra 时需要在写入之前进行读取。您选择的一致性级别和复制因子将对性能产生不利影响。还有其他事情,例如地图比集合慢等。
猜你喜欢
  • 2011-01-26
  • 2011-11-24
  • 2010-09-18
  • 2015-07-08
  • 2012-05-10
  • 2012-01-31
  • 1970-01-01
  • 2020-03-11
  • 1970-01-01
相关资源
最近更新 更多