官术网_书友最值得收藏!

Materialized views

Data modeling principles in Cassandra compel us to denormalize data as much as possible. Prior to Cassandra 3.0, the only way to query on a non-primary key column was to create a secondary index and query on it. However, secondary indexes have a performance trade-off if they contain high cardinality data. Often, high cardinality secondary indexes have to scan data on all the nodes and aggregate them to return the query results. This defeats the purpose of having a distributed system.

To avoid secondary indexes and client-side denormalization, Cassandra introduced the feature of materialized views, which does server side denormalization. You can create views for a base table and Cassandra ensures eventual consistency between the base and view. This lets us do very fast lookups on each view following the normal Cassandra read path. Materialized views maintain a correspondence of one CQL row each in the base and the view, so we need to ensure that each CQL row that is required for the views will be reflected in the base table's primary keys. Although a materialized view allows for fast lookups on non-primary key indexes, this comes at a performance hit to writes. Also, using secondary indexes and materialized views increases the disk usage by a considerable margin. Thus, it is important to take this into consideration when sizing your cluster.

主站蜘蛛池模板: 黄山市| 镇坪县| 胶州市| 通山县| 元氏县| 庆云县| 南丹县| 视频| 玉龙| 台南市| 阿尔山市| 南昌市| 县级市| 张家口市| 玉山县| 南京市| 裕民县| 东乡族自治县| 赣榆县| 张北县| 黄平县| 乐安县| 宣化县| 株洲市| 金门县| 静宁县| 张家界市| 宁陵县| 抚宁县| 安阳县| 轮台县| 古田县| 江油市| 石柱| 固原市| 九台市| 湾仔区| 依安县| 夹江县| 和硕县| 玛沁县|