【问题标题】:Which DB type would be more suitable for high performance purposes?哪种数据库类型更适合高性能目的?
【发布时间】:2012-10-14 11:32:54
【问题描述】:

我希望设计一个具有以下数据功能的系统:

  1. 多源高写入率,每秒 50K - 100K 记录(来自 )。
  2. 单源快读,单IO取操作。

这是基本的数据库表/集设计:

  Type name
--------------
Date
Amount
  • 对于每个新的Type,都会创建一个新表/集。
  • 唯一的提取操作是SELECT 按日期(应该是集群主键或类似的东西)。
  • 超过 1 个月的表格将被归档。

目前我收到的解决方案有:

  • 纯 DB 引擎,例如 BerkeleyMS Jet
  • NoSQL,例如 Mongo DB

P.S - 系统将用 C# 编写。

【问题讨论】:

  • 100K 记录/秒意味着约 90 亿条记录/天。是你所追求的吗?
  • 是的,但这是我需要的最大容量,大多数情况下它将每秒运行 80-40K 条记录。
  • 是否有记录在写入后可立即查询?我的想法是在内存中连续写入记录,而另一个并行处理使用块将它们持久化。您的用例看起来像一个信号采集过程。
  • 不,它不一定是即时的,即使可以容忍的数据丢失也是可以接受的。
  • 该图的分辨率是多少?也许您不需要实际上存储所有数据点 - 也许您可以平均出几个比图形分辨率更接近的数据点,从而降低大量的 INSERT 涌入?

标签: c# database database-design nosql database-engine


【解决方案1】:

查看 C# 的 RedisServiceStack

这是Comparison of NoSQL DB's的链接。

【讨论】:

  • 谢谢,您能否解释一下为什么我应该选择 NoSQL 而不是 Berkeley 等 DB 引擎?
  • 我不需要让所有的信息都“活着”,我只需要一个月/一周的信息来查询,而其余的数据将被存档。伯克利可能更适合我,不是吗?
  • 伯克利是一个本地数据库引擎。你说的“多源高写率”是在同一台机器上还是分布在网络上?
【解决方案2】:

Redis 将是完美的解决方案,但要求比这要简单得多,而且看起来 Berkeley DB 就可以了。

【讨论】:

    【解决方案3】:

    如果您所做的只是从多个写入器写入并按顺序读取一次,那么您不需要数据库,而是需要队列系统。 ZeroMQ 非常快。

    【讨论】:

    • 读取将由监视器/查看系统执行。用户将选择一个类型和日期范围来获取数据。这不会是一次性操作。
    • P.S - 向阿米问好 ;-)
    猜你喜欢
    • 1970-01-01
    • 2013-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-22
    • 2021-11-16
    相关资源
    最近更新 更多