我想:
Postgres一般表现很好,意思是:1-2 GB /分钟(使用java)。
当我在用于选择的4个参数上放置for item in my_list:
# First time you see an item create an empty list
if item not in my_dict:
my_dict[item] = []
# Otherwise, add the item to the list
else:
my_dict[item].append( item )
时,选择也很好。
但是,导入几百GB时需要“很长”的时间。
问题:使用像index
这样的noSQL
引擎尝试使用此功能是否值得?
我的意思是:
答案 0 :(得分:1)
Cassandra建立在查询驱动的建模之上。既然你知道了你的查询(假设你想要对四个参数进行相等检查),那么如果你对数据进行建模,你应该能够获得极快的查询速度。
Cassandra摄入也很快。但是,如果你有大量数据,通常的方法是将数据转换为SSTables(可能通过一些代码)和导入(这非常快)。如果这不可行,您可以执行并行异步权限。
COPY并非真正适用于大规模生产。编写一个使用java客户端对期货进行异步写入的导入器,或者使用SSTable路由。另一个好的选择是使用Spark和Spark Cassandra连接器将CSV rdds转发到cassandra表。当然,你需要一个火花集群才能工作(虽然取决于机器的功率/负载,你可以通过单个节点火花独立过程逃脱 - 在这种情况下你获得的是简单性)。火花代码看起来像:
sc.textFile("csv.csv").split(",").[...transforms..].saveToCassandra('ks', 'table');