我需要一个高性能数据库,用于在大型数据表上进行多个并发读/写操作,我不知道Cassandra是否是一个好的候选者。因此,如果你能帮助我澄清我的下面的问题,那就太棒了。假设我有一个包含500万行和500万列的表格。
1. cassandra的性能是否与硬件的处理能力成线性关系?
2.当我需要搜索1列以查看它是否存在时,如果没有,那么我想在当前表中插入一个新列。这个操作快了吗?
3.如果读/写操作的当前响应时间很慢,我可以在不改变当前表结构的情况下改进它的可能方法是什么?
其他信息:
一个。交易控制并不重要。
湾复制取决于用例。对于具有多个并发读/写操作的表,不需要复制。对于具有多个并发读取的表,需要进行复制。
非常感谢你。
答案 0 :(得分:5)
1. cassandra的性能是否与硬件的处理能力成线性关系?
Cassandra整体表现与机器数量相当线性。对于1台机器,如果您使用旋转磁盘,正式建议不要超过1Tb /机器。 SSD的限制更高,约为3Tb /机器。至少这是Cassandra 2.1和2.2的推荐。使用Cassandra 3.0和存储引擎重写,这些数字可能会更高,因为服务器密度已得到改善。
2.当我需要搜索1列以查看它是否存在时,如果没有,那么我想在当前表中插入一个新列。这个操作快了吗?
使用主键查找数据非常快,这得益于大量数据结构以优化磁盘访问(布隆过滤器,分区键缓存,分区示例...请参阅http://www.slideshare.net/doanduyhai/cassandra-introduction-apache-con-2014-budapest/48)
如果您没有通过主键访问数据,则会导致对大量数据进行顺序扫描,然后无法保证性能
3.如果读/写操作的当前响应时间很慢,我可以在不改变当前表结构的情况下改进它的可能方法是什么?
应该是相反的方式。设计您的表结构和数据模型以便快速读取(使用Cassandra,写操作总是很快)。适当的硬件(SSD)和内存(用于页面缓存)也将改善读/写操作。除了上面的那些参数,其他调整旋钮(键高速缓存大小,布隆过滤器fp机会......)只能提供微小的改进
湾复制取决于用例。对于具有多个并发读/写操作的表,不需要复制。
如果没有复制,可能会因硬件故障而丢失数据,您确定数据丢失对于应该提供读取和读取的表是可接受的吗?写?