用于php程序的快速大规模键值存储
我正在为我的项目开发一个全文索引系统.作为索引页面的过程的一部分,它将数据分成非常大量的非常小的部分.
我已经将这些部分的大小设置为低至20-30字节的常量,并且可能更小,它基本上是2个8字节的整数和构成实际数据的浮点数. 由于我正在寻找的规模和创建的数量,我正在寻找一个替代mysql的替代品,它在价值集上显示出远远低于我的目标的重大问题. 我目前的想法是,键值存储将是最佳选择,我已相应地调整了我的代码. 我试过一个数字,但由于某种原因,它们似乎都比mysql更小. 我希望存储数亿或数十亿或更多键值对的顺序,所以我需要的东西不会有大的性能下降. 我已经尝试了memcachedb,membase和mongo,虽然它们都很容易设置,但是没有一个能够很好地适应我. 由于所需的密钥数量和可用的内存有限,membase的问题最多.写入速度在这里非常重要,因为这是一个非常接近均匀的工作负载,我写了一次,然后读了几次并存储它以便最终更新. 我不需要在删除方面有太多性能,我更喜欢可以集群的东西,因为我希望最终能够跨机器扩展,但它现在需要在一台机器上工作. 我也希望这个项目易于部署,因此简单的设置会更好.该项目是用PHP编写的,因此需要从php轻松访问. 我不需要有行或其他更高级别的抽象,在这种情况下它们通常是无用的,我已经从我的其他一些测试中得到了代码,以获得一个键值存储,这似乎可能是最快的,因为我只有2个东西可以从一行键入第三个,所以几乎没有额外的工作来使用键值存储.有谁知道任何易于使用的项目可以像这样扩展? 我正在使用这个商店来存储三个数字的单个集合(大小基于它们在mysql中的存储方式,在其他存储位置可能不正确)2个8字节整数,一个用于文档的ID和一个对于单词的ID和该单词的文档比例的浮动表示(工作出现的次数除以文档中的单词数).此数据的索引是单词id和文档id所属的范围,每次我需要检索此数据时,它将是给定单词id的所有结果.我目前将单词id,范围和该单词/范围组合的计数器分别转换为数字的二进制表示形式,并将它们连接起来形成键以及一个2位数字来表示我存储的那个键的值,文档ID或浮点值. 性能测量在某种程度上主观地看待将数据放入存储器或从存储器中取出数据的过程的输出,并查看处理文档的速度以及快速刷新我的统计计数器,以便跟踪系统工作速度的更准确统计数据并在查看使用每种存储方法时的差异. 解决方法
你需要提供一些关于你真正想做的事情的更多数据……
根据您如何定义快速大规模,您有几个选择: > memcache 和sooo … ..列表变得相当大.. 编辑1: 根据这篇文章评论,我会说你看看cassandra或伏地魔. Cassandra本身并不是一个简单的KV存储,因为你可以存储比K更复杂的对象 – > V 如果您想用PHP检查cassandra,请查看phpcassa.但如果您设置副本,redis也是一个不错的选择. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |