mysql – 如果HBase没有在分布式环境中运行,它是否有意义?

我正在构建一个数据索引,这将需要在表单(文档,术语,权重)中存储大量三元组.我将存储多达几百万行.目前我在MySQL中这样做是一个简单的表.我将文档和术语标识符存储为字符串值,而不是外键到其他表.我正在重新编写软件并寻找更好的存储数据的方法.

看看HBase的工作方式,这似乎很适合架构.我可以将文档映射到{term =>而不是存储大量的三元组.重量}.

我在一个节点上做这个,所以我不关心分布式节点等.我应该坚持使用MySQL,因为它有效,或者尝试HBase是明智的吗?我看到Lucene使用它进行全文索引(这类似于我正在做的事情).我的问题是,单个HBase节点如何与单个MySQL节点进行比较?我来自Scala,因此直接Java API可能比JDBC和MySQL解析等每个查询都有优势吗?

我主要关心的是插入速度,因为这是以前的瓶颈.在处理之后,我可能最终将数据放回MySQL进行实时查询,因为我需要做一些在MySQL中做得更好的计算.

我会尝试两种原型,但我相信社区可以给我一些有价值的见解.

解决方法:

使用正确的工具完成工作.

有许多反RDBMS或BASE系统(基本可用,软状态,最终一致),而不是从herehere中选择的ACID(原子性,一致性,隔离性,耐久性).

我使用过传统的RDBMS,虽然你可以存储CLOB / BLOB,但它们可以
没有专门为搜索这些对象而定制的内置索引.

你想做大部分的工作(计算加权频率)
插入文档时发现每个元组.

您可能还想做一些评分有用性的工作
每次搜索后每个(documentId,searchWord)对.

这样,您每次都可以提供更好,更好的搜索.

您还希望为每次搜索存储分数或权重并加权
与其他搜索相似的分数.

有些搜索可能比其他搜索更常见
尽管用户意味着用户没有正确地描述他们的搜索查询
做一个共同的搜索.

插入文档也会导致搜索权重发生一些变化
索引.

我想的越多,解决方案就越复杂.
你必须先从一个好的设计开始.你的因素越多
设计预期,结果越好.

上一篇:python – app引擎会自动缓存频繁的查询吗?


下一篇:MySQL磁盘满了后数据文件被损坏