我正在为我的一个项目(医疗保健语义搜索引擎)使用三重存储数据库,它工作得很好。我正在考虑通过在三重存储之上使用一层键值存储来提高性能。三重存储查询速度较慢,因为我们进行了深度语义处理。
这就是我计划提高性能的方式:
1) 每天通过查询三重存储为所有查询词运行 Hadoop 作业。2) 将这些结果缓存在集群中的键值存储中。3)当用户搜索查询词时,将首先搜索键值存储,而不是搜索三重存储。只有在键值存储中找不到查询词时才会搜索三重存储。
我计划保存的键值对是“字符串”到“POJO 映射列表”。我可以将其保存为 BLOB。
我对使用哪个键值存储感到困惑。我主要寻找故障转移和负载平衡支持。我所需要的只是一个提供上述功能的简单键值存储。我不需要在值或任何其他功能中进行排序/搜索。
如果我错了,请纠正我。我假设 memcached 和 Redis 会更快,因为它在内存中。但是我不知道 Redis(Jredis) 或 memchaced(Spymemcached) 的 Java 客户端是否支持故障转移。我不确定是使用内存还是持久存储。我也在考虑 Voldemort、Cassandra 和 HBase。总体密钥值将在 2GB 到 4GB 左右。对此的任何指示都会非常有帮助。
我对 nosql 和键值存储非常陌生。如果您需要更多详细信息,请告诉我。