Iva*_*nov 2 cassandra cassandra-3.0
我使用Apache Cassandra来存储大部分时间序列数据.我正在根据某些条件对数据进行分组并对其进行聚合/计数.目前我在Java 8应用程序中执行此操作,但随着Cassandra 3.0和用户定义函数的发布,我一直在问自己是否将分组和聚合/计数逻辑提取到Cassandra是一个好主意.据我所知,这个函数类似于SQL中的存储过程.
我担心的是,这是否会影响计算性能和数据库的整体性能.我也不确定它是否还有其他问题,如果这个新功能类似于Cassandra中的二级索引 - 你可以这样做,但根本不建议这样做.
你在Cassandra中使用过用户定义的函数吗?你对表现有什么看法吗?这个新功能有哪些好处和坏处?它适用于我的用例吗?
您可以将其与使用count()或avg()类型的聚合进行比较.它们可以通过让协调器只发送结果来节省大量的网络流量和对象创建/ GC,但它很容易被带走并使协调员做很多工作.这项额外的工作会使正常的C*职责失去作用,并且可能会增加GC以减少它们.
如果你在一个分区中聚合100行可能很好,如果你的聚合10000可能不是世界末日,如果非常罕见的话.如果你的问题只是一秒钟就召唤一次.如果你的总量超过1000我会非常小心.
如果您绝对需要经常执行此操作并且需要大量数据,则可能需要创建专用代理协调器(-Djoin_ring = false)以承受负载,而不会影响正常的C*读/写.此时,为它或其他东西创建专用工作负载DC同样容易(对于密钥空间,RF = 0,并使用DCAwareRoundRobinPolicy将应用程序设置为该DC的一部分).这也是使用Spark可能是正确的事情.
| 归档时间: |
|
| 查看次数: |
440 次 |
| 最近记录: |