Mal*_*dog 9 mysql postgresql distributed database-design hadoop
您好,在SO,
我想对你们尊敬和尊敬的一些人提出一些想法/意见.
我有100M记录需要处理.我有5个节点(在岩石群中)来做这件事.数据非常有条理,并且很好地适用于关系数据模型.我希望并行处理,因为我的处理需要一些时间.
我看到它有两个主要选择:
在每个节点上安装mysql,并在每个节点上放置20M记录.使用头节点将查询委派给节点并聚合结果. 查询功能++,但是当我选择分区策略等时,我可能会冒一些头痛的风险.(问:这就是他们所谓的mysql/postgres集群吗?).真正糟糕的是,记录的处理现在由我来处理(如何跨机器分发等)...
或者安装Hadoop,Hive和HBase(请注意,这可能不是存储数据的最有效方法,因为HBase是面向列的)并且只是定义节点.我们在MapReduce范例中写下了所有内容,而且,从此以后,我们幸福地生活着.这里的问题是我们失去了"实时"查询功能(我知道你可以使用Hive,但这不建议用于实时查询 - 我需要) - 因为我还有一些正常的sql查询有时执行" select*from wine where color ='brown'".
请注意,理论上 - 如果我有100M机器,我可以立即完成所有事情,因为对于每个记录,处理是独立于另一个.另外 - 我的数据是只读的.我没有想到会发生任何更新.我不需要/想要一个节点上的100M记录.我不希望有冗余数据(因为它有很多)所以保持它在两个mysql/postgres和Hadoop/HBase/HDFS.不是一个真正的选择.
非常感谢
你能证明MySQL是瓶颈吗?100M记录并不多,看起来你没有执行复杂的查询.在不知道究竟是什么类型的处理的情况下,我将按以下顺序执行此操作:
在你的情况下,我会抵制跳出MySQL的诱惑,除非绝对必要.
你好,
我遇到过这样的情况:我有许多使用 sqlalchemy 和 python 多处理库并行创建的表。我有多个文件,每个表一个,并使用并行 COPY 进程加载它们。如果每个进程对应一个单独的表,那就很好了。对于一张表,使用 COPY 会很困难。我猜你可以在 PostgreSQL 中使用表分区。如果您有兴趣,我可以提供更多详细信息。
问候。
| 归档时间: |
|
| 查看次数: |
11215 次 |
| 最近记录: |