AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 12519
Accepted
iCode
iCode
Asked: 2012-02-09 19:51:21 +0800 CST2012-02-09 19:51:21 +0800 CST 2012-02-09 19:51:21 +0800 CST

高并发存储系统

  • 772

想象一下,您的要求是您有 3 个巨大的表(结构化数据),每个表有 300 亿行(总大小为 4TB),并且您的许多并发用户(它们是远程 LAN 机器上的并行操作系统线程)将需要读取其中的一部分通过他们的 SELELCT WHERE GROUPBY 查询和高度并发的数据,比如同时进行 10,000 次并发读取,并且用户需要将数据插入(不更新)高度并发的这些表中,就像 2000 个并发写入器(遍布数据中心 LAN 网络) . 用户希望从该存储中尽可能快地读取和插入,其中每次读取和写入将发生在 ms 到 1 秒的范围内。

你推荐什么技术来满足这样的要求?是否有任何数据存储或键值存储可以做到这一点?云不是一种选择。

一些说明:

用户不必立即看到数据,最终一致性是可以接受的。数据是通过存储可以提供的任何驱动程序访问的,用户再次只是在数据中心的远程机器上运行的线程。查询大多类似于 SELECT WHERE GROUPBY。

数据采用表格格式,每行约 60 字节。

没有云选项,我无法使用 DynamoDB 或类似的解决方案。我必须能够在数据中心内部托管它。

表的所​​有数据都可以随时读取,使用模式不可预测。没有连接或超长查询。不需要 DR,但需要合理的 HA,但不一定非得花哨。每个读者都会根据其 where 子句获取一批行,而这些行并不真正相关。我们可能可以为每一行设置固定长度,但我希望存储层会担心它。

此外,我最担心的是所有那些与并发读取同时发生的并发写入。

非常感谢您对此的见解。

更重要的是,我有三个这样的表,每 300 亿行包含不同的对象类型

architecture concurrency
  • 1 1 个回答
  • 458 Views

1 个回答

  • Voted
  1. Best Answer
    ConcernedOfTunbridgeWells
    2012-02-10T02:11:52+08:002012-02-10T02:11:52+08:00

    如果最终一致性是可以接受的并且您的所有查询都是聚合的,那么低延迟的 OLAP 系统可能适合您。您的要求听起来有点像算法交易平台。这种类型的架构通常用于需要对最新数据进行聚合统计分析计算的交易大厅系统。

    如果您可以按日期对数据进行分区并且旧行不会得到更新,那么您可以使用传统的 OLAP 服务器构建混合 OLAP 系统,例如由普通 RDBMS 平台支持的 Microsoft Analysis 服务。应该可以处理大约 4TB 的数据,并且 SQL Server 和 SSAS 都将执行共享磁盘集群。其他供应商也提供类似的 OLAP 系统(例如 Oracle/Hyperion Essbase)。

    OLAP 服务器通过将数据与聚合一起保存在本地存储中来工作。大多数将支持分区数据。此外,大多数也将在 ROLAP 模式下工作,在这种模式下它们对底层数据库发出查询。需要注意的重要一点是,存储策略可以在每个分区的基础上进行管理,您可以通过编程将分区从一个分区切换到另一个分区,

    在这个模型中,历史数据存储在 MOLAP 分区中,数据的聚合也被持久化。如果可以从聚合中满足查询,则服务器将使用它们。可以调整聚合以适应查询,正确的聚合将大大减少解析查询所需的计算量。这种类型的系统可以实现非常灵敏的聚合查询。

    实时数据可以通过维护一个小的前导分区来实现——如有必要,可以针对当前月、日甚至小时。OLAP 服务器将对数据库发出查询;如果这个分区足够小,DBMS 将能够快速响应。一个常规进程创建新的前导分区并将关闭的历史周期转换为 MOLAP。可以合并较旧的分区,从而允许以任何所需的粒度管理历史数据。

    写入数据库的客户端直接写出底层 RDBMS。如果历史数据保持静态,它们将只写入前导分区。如果您需要额外的 DBMS 性能,4TB 是使用 SSD 的实用卷。即使是主流供应商也有基于 SSD 的产品,可以选择更快的 SLC 单元。

    • 6

相关问题

  • 数据库请求可以在延迟后自动从队列中删除吗?

  • 在 VMWare 上成功运行 Oracle 的最佳架构是什么?

  • 将图像存储在 BLOB 中还是仅存储 URL 更好?[复制]

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何查看 Oracle 中的数据库列表?

    • 8 个回答
  • Marko Smith

    mysql innodb_buffer_pool_size 应该有多大?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    从 .frm 和 .ibd 文件恢复表?

    • 10 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    如何选择每组的第一行?

    • 6 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    pedrosanta 使用 psql 列出数据库权限 2011-08-04 11:01:21 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST
  • Martin Hope
    bernd_k 什么时候应该使用唯一约束而不是唯一索引? 2011-01-05 02:32:27 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve