首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Mysql:小主键,大问题

一、为什么需要主键 数据记录需具有「唯一性」(第一范式) 数据需要关联 「join」 数据库底层索引用于检索数据所需 以下废话连篇,可以直接跳过到下一节。...如果通过二级索引查询数据,流程如图上所示,先从二级索引树上搜索到「主键」,然后在聚簇索引上通过主键搜索到数据行。其中二级索引的叶子节点是直接存储的主键值,而不是主键指针。...业务 Key 的优点 Key 具有业务意义,在查询时可以直接作为搜索关键字使用 不需要额外的列和索引空间 可以减少一些 join 操作。...生成方案比较难 逻辑 Key 的优点 不会因为业务的变动而需要修改 Key 逻辑 操作简单,且易于管理 逻辑 Key 往往更小,性能更优 逻辑 Key 更容易保证唯一性 更易于优化 逻辑 Key 缺点 查询主键列和主键索引需要额外的磁盘空间...Cassandra TimeUUID Cassandra 使用下面规则生成一个唯一的 id:time + MAC + sequence 方案 Zookeeper 自增:通过 zk 的自增机制实现。

3.8K10

12.3 Cassandra数据定义

12.3.2 启动cqlsh cqlsh 12.3.3 Clusters 集群 集群是Cassandra集群部署的名称标志,避免集群A中的机器加入其它的集群(如B)。...12.3.6 Cloumns 列 列和关系型数据有类似的地方为可以定义字段类型,区别在还可以定义主键和静态。...在Cassandra中,主键的区别是,主键由两部分组成: 分区键(partition key),主键第一个或者第一组是分区键。...(就是说一个分区中,所有行的静态列的值相同) 静态的限制: 表中没有聚类键,不可以有静态(因为每一个分区都是唯一的行,所以每个列本质上是静态)的列。 主键的列,不可以是静态。...busuanzi.org案例表中,查询出,在同一分区中,静态列”comment”中,”new”替换了”old”,”nice”替换了”good”。

1.1K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    cassandra简单介绍与基本操作

    key2, key3  clusterKey,集群主键 ?...)     a) cluster_name:集群名,同一集群的多个节点,集群名要一致     b) seeds: 种子节点,集群中的全部机器的ip,以逗号隔开     c) storage_port:...Cassandra服务器与服务器之间连接的端口号,一般不需要修改,但要保证此端口上没有防火墙     d) listen_address: Cassandra集群中服务器与服务器之间相互通信的地址。...  7、查询表中全部数据:select * from user;     cassandra查询有很多限制,比如只能单表查询,不支持联表查询和子查询,查询条件只支持key查询和索引列查询,而且key有顺序的限制...;   10、索引列查询:select * from user where user_name='zhangsan';     若没有在name上创建索引,那么此查询会报错;   11、更新表中数据:update

    1.7K20

    【问底】许鹏:使用Spark+Cassandra打造高性能数据分析平台(一)

    1.1 高可靠性 Cassandra采用gossip作为集群中结点的通信协议,该协议整个集群中的节点都处于同等地位,没有主从之分,这就使得任一节点的退出都不会导致整个集群失效。...Cassandra数据模型 2.1 单表查询 2.1.1 单表主键查询 在建立个人信息数据库的时候,以个人身份证id为主键,查询的时候也只以身份证为关键字进行查询,则表可以设计成为: create table...clustering column) ((userid,fname),lname)一起称为复合主键(composite primary key) 2.1.2 单表非主键查询 如果要查询表person中具有相同的...Create index on person(fname); Cassandra目前只能对表中的某一列建立索引,不允许对多列建立联合索引。...Cassandra中针对二级索引是不支持范围查询的,一切的一切都在主键里打主意。 3.4.2 参数设置 Cassandra的配置参数项很多,对于新手来说主要集中于对这两个文件中配置项的理解。

    2.7K80

    Spring中国教育管理中心-Apache Cassandra 的 Spring 数据教程十二

    复合主键可能需要稍微不同的数据模型。 14.4.1.使用主键 Cassandra 需要至少一个 CQL 表的分区键字段。一张表可以额外声明一个或多个集群键字段。...当您的 CQL 表具有复合主键时,您必须创建一个@PrimaryKeyClass来定义复合主键的结构。在这种情况下,“复合主键”是指一个或多个分区列可选地与一个或多个集群列组合。...也就是说,复合主键可以由多个分区键、一个分区键和一个集群键或多个主键字段组成。 复合键可以通过 Spring Data for Apache Cassandra 以两种方式表示: 嵌入到一个实体中。...主键字段用 @PrimaryKeyColumn. 选择要求查询包含单个字段的谓词或使用MapId....@PrimaryKeyColumn:主键列的 Cassandra 特定注释,可让您指定主键列属性,例如用于集群或分区。可用于单个和多个属性,以指示单个或复合(复合)主键。

    1.8K40

    Apache Kudu入门学习

    四、架构 KUDU 中存在两个角色 Mater Server:负责集群管理、元数据管理等功能。...2、主键设计 同RDBMS一样,kudu的主键同样采用了唯一性约束。 一旦主键创建了之后便不能更改。 每个kudu表有且仅有一个由一列或多列组成的主键。...主键列必须不可为空,并且不能使用bool或者浮点类型。...通常,主键列用作散列的列,但与范围分区一样,可以使用主键列的任何子集。 数据的写入会被均匀的分散到各个 tablet 中,写入速度快。...分区修剪(调优) 当可以通过扫描谓词确定分区可以完全过滤时,Kudu扫描将自动跳过扫描整个分区。要删除哈希分区,扫描必须在每个哈希列上包含相等谓词。

    32230

    cassandra高级操作之索引、排序以及分页

    cassandra 一、索引和排序   Cassandra对查询的支持很弱,只支持主键列及索引列的查询,而且主键列还有各种限制,不过查询弱归弱,但它还是支持索引和排序的。...cassandra的查询具有以下约束:   第一主键 只能用=号查询   第二主键 支持= > = <=   索引列 只支持=号 ?...1、索引查询     Cassandra支持创建二级索引,可以创建在除了第一主键(分区键:partition key)之外所有的列上;不同的cassandra版本对集合列的索引的支持也是不同的,有的支持有的不支持...支持排序,但也是限制重重       a、  必须有第一主键的=号查询;cassandra的第一主键是决定记录分布在哪台机器上,也就是说cassandra只支持单台机器上的记录排序。       ...三、参考 cassandra的索引查询和排序 cassandra2.0 如何实现分页查询

    2.6K20

    一网打尽当下NoSQL类型、适用场景及使用公司

    每一个都拥有以下几个特性中的一个: 不再使用SQL语言,比如MongoDB、Cassandra就有自己的查询语言 通常是开源项目 为集群运行而生 弱结构化——不会严格的限制数据结构类型 NoSQL数据库的类型...你可以通过key来添加、查询或者删除数据,鉴于使用主键访问,所以会获得不错的性能及扩展性。...三、 列存储(Wide Column Store/Column-Family)数据库 列存储数据库将数据储存在列族(column family)中,一个列族存储经常被一起查询的相关数据。...举个例子,如果我们有一个Person类,我们通常会一起查询他们的姓名和年龄而不是薪资。这种情况下,姓名和年龄就会被放入一个列族中,而薪资则在另一个列族中。...如果我们分析Cassandra的数据结构,我们就会发现结构是基于我们期望的数据查询方式而定。在模型设计之初,我们根本不可能去预测它的查询方式,而一旦查询方式改变,我们就必须重新设计列族。

    1.3K50

    NoSQL 数据库的使用场景

    每一个都拥有以下几个特性中的一个: 不再使用SQL语言,比如MongoDB、Cassandra就有自己的查询语言 通常是开源项目 为集群运行而生 弱结构化——不会严格的限制数据结构类型 NoSQL数据库的类型...你可以通过key来添加、查询或者删除数据,鉴于使用主键访问,所以会获得不错的性能及扩展性。...三、 列存储(Wide Column Store/Column-Family)数据库 列存储数据库将数据储存在列族(column family)中,一个列族存储经常被一起查询的相关数据。...举个例子,如果我们有一个Person类,我们通常会一起查询他们的姓名和年龄而不是薪资。这种情况下,姓名和年龄就会被放入一个列族中,而薪资则在另一个列族中。...如果我们分析Cassandra的数据结构,我们就会发现结构是基于我们期望的数据查询方式而定。在模型设计之初,我们根本不可能去预测它的查询方式,而一旦查询方式改变,我们就必须重新设计列族。

    84220

    数据源管理 | 分布式NoSQL系统,Cassandra集群管理

    2、特点分析 弹性可扩展性 Cassandra是高度可扩展的;它允许添加更多的硬件以适应更多的客户和更多的数据根据要求,可以根据业务的数据流量轻松扩展集群规模。.../data/cassandra/log 5、集群配置 vim /opt/cassandra3.11/conf/cassandra.yaml # 配置集群名称 cluster_name: 'CasCluster...6、启动集群 # 集群下节点依次执行启动命令 cassandra -R # 查看节点状态 nodetool status 7、基础操作 进入命令行 cqlsh hop01 创建keyspace,并选择...UserInfo insert (UserInfo userInfo){ return cassandraTemplate.insert(userInfo) ; } // 根据主键查询...userInfoRepository.findById(id).get() ; } // 修改 public UserInfo update (UserInfo userInfo){ // 主键

    86920

    系统设计之分区策略

    不同分区可放在一个无共享集群的不同节点。这样的一个大数据集可分散在更多磁盘,查询负载也随之分布到更多处理器。...然后讨论rebalancing,若想添加、删除集群中的节点,则必须进行再rebalancing。最后,概述DB如何将请求路由到正确的分区并执行查询。...好的散列函数可处理倾斜数据并使其均匀分布。 数据分区目的的hash函数无需健壮的加密能力,如Cassandra 和 MongoDB 使用 MD5。...而Couchbase或Voldemort干脆直接不支持K的范围查询。 Cassandra在两种分区策略之间采取折中。 Cassandra的表可使用由多个列组成的复合主键。...尽管不支持复合主键的第一列的范围查询,但若第一列已指定固定值,则可对其他列执行高效的范围查询。 联合索引为一对多关系提供一个优雅的数据模型。如社交网站,一个用户可能发布很多消息更新。

    1.5K10

    12.4 Cassandra数据模型

    12.4 Cassandra数据模型 “卜算子·大数据”一个开源、成体系的大数据学习教程。...——每周日更新 没有JOIN操作 Cassandra没有表的连接操作,跟关系型数据库设计相比最好的方式是,反(非)规范化设计,设计为两个表连接后的结果表。...查询优先设计 设计表从查询的结果开始设计表(结果表)。 存储空间设计 Cassandra每个表都是存储在磁盘上的单独文件中,相关的列尽量保持在同一个表中(磁盘文件)。...搜索单个分区的查询性能最佳,优化最小搜索分区数量。 排序设计 Cassandra查询中的ORDER BY仅支持聚类列(Clustering columns)排序。...分区中的单元值计算方法: 分区中的单元值=静态列数+表的行数*(列数-主键列数-静态列数) Cassandra的限制是每个分区20亿。

    1.1K30

    独家 | 一文读懂Apache Kudu

    Kudu支持水平扩展,使用Raft协议进行一致性保证,并且与Cloudera Impala和Apache Spark等当前流行的大数据查询和分析工具结 合紧密。...在一个Kudu集群中可以定义任意数量的table,每个table都需要预先定义好schema。每个table的列数是确定的,每一列都需要有名字和类型,每个表中可以把其中一列或多列定义为主键。...可以提供 SQL-like 元数据给其他上层查询工具,比如BI工具。 读写操作 用户可以使用 Insert,Update和Delete API对表进行写操作。不论使用哪种API,都必须指定主键。...用户可以通过指定过滤条件来获取自己想要读取的数据,但目前只提供了两种类型的过滤条件:主键范围和列值与常数的比较。由于Kudu在硬盘中的数据采用列式存储,所以只扫描需要的列将极大地提高读取性能。...Kudu会将数据按列存储,数据被切分成多个page,并使用B-tree进行索引。除了用户写入的数据,Kudu还会将主键索引存入一个列中,并且提供布隆过滤器来进行高效查找。

    3.1K60

    主流NoSQL和应用场景详解

    每一个都拥有以下几个特性中的一个: 不再使用SQL语言,比如MongoDB、Cassandra就有自己的查询语言 通常是开源项目 为集群运行而生 弱结构化——不会严格的限制数据结构类型 NoSQL数据库的类型...你可以通过key来添加、查询或者删除数据,鉴于使用主键访问,所以会获得不错的性能及扩展性。...三、 列存储(Wide Column Store/Column-Family)数据库 列存储数据库将数据储存在列族(column family)中,一个列族存储经常被一起查询的相关数据。...如果我们分析Cassandra的数据结构,我们就会发现结构是基于我们期望的数据查询方式而定。在模型设计之初,我们根本不可能去预测它的查询方式,而一旦查询方式改变,我们就必须重新设计列族。...Cassandra 所用语言:Java 特点:对大型表格和 Dynamo支持得最好 使用许可:Apache 协议:Custom, binary (节约型) 可调节的分发及复制(N, R, W) 支持以某个范围的键值通过列查询

    1.1K20

    DDIA 读书分享 第六章 :分区索引和分区均衡

    分区和次级索引 次级索引(secondary index),即主键以外的列的索引;由于分区都是基于主键的,在针对有分区的数据建立次级索引时,就会遇到一些困难。...首先会根据其主键 id 进行分区,其次为了方便查询,需要对汽车颜色( color )和制造商(make)字段(文档数据库中称为field,字段;关系型数据库中称为 column,列,图数据库中称为 property...但如果 n 比较大,如 Cassandra 默认是 256,则新节点会比较容易均摊负载。 为什么? 是因为可以从每个节点选同样数量的分区吗?...如 Dynamo 、Cassandra 和 Riak 使用流言协议(Gossip Protocol),在集群内所有机器节点间就路由信息进行传播,并最终达成一致。...并行查询执行 大部分 NoSQL 存储,所支持的查询都不太负载,如基于主键的查询、基于次级索引的 scatter/gather 查询。如前所述,都是针对单个键值非常简单的查询路由。

    24720
    领券