标签: cardinality

什么是数据库中的基数?

我一直在网上搜索,但我似乎无法找到一个我能理解的答案.

亲切的,如果有人可以借助示例向我解释数据库中的基数是什么?

谢谢.

database oracle database-design cardinality

73
推荐指数
4
解决办法
10万
查看次数

是否可以确定c ++枚举类的元素数量?

是否有可能确定c ++的基数enum class:

enum class Example { A, B, C, D, E };
Run Code Online (Sandbox Code Playgroud)

sizeof但是,我尝试使用它返回枚举元素的大小.

sizeof(Example); // Returns 4 (on my architecture)
Run Code Online (Sandbox Code Playgroud)

有没有一种获得基数的标准方法(在我的例子中为5)?

c++ cardinality c++11 enum-class

64
推荐指数
7
解决办法
4万
查看次数

使用具有低基数的索引是否有意义?

我主要是一个Actionscript开发人员,绝不是SQL专家,但我不得不开发简单的服务器端.所以,我想我会在标题中向更有经验的人询问这个问题.

我的理解是,通过在一个包含很少不同值的列中设置索引,您不会获得太多收益.我有一个包含布尔值的列(实际上它是一个小的int,但我将它用作标志),并且此列用于我所拥有的大多数查询的WHERE子句中.在理论上的"平均"情况下,一半的记录值将为1而另一半为0.因此,在这种情况下,数据库引擎可以避免全表扫描,但无论如何都必须读取大量行(总行/ 2).

那么,我应该将此列作为索引吗?

为了记录,我正在使用Mysql 5,但是我更感兴趣的是一般的理由,为什么它有/无意义索引一个我知道将具有低基数的列.

提前致谢.

mysql sql indexing cardinality

38
推荐指数
3
解决办法
1万
查看次数

MySQL索引基数 - 性能与存储效率

假设您有一个包含1亿行的MySQL 5.0 MyISAM表,在两个整数列上有一个索引(主键除外).

从我对B树结构的不太了解,我认为较低的基数意味着索引的存储效率更好,因为父节点较少.而更高的基数意味着存储效率更低,但读取性能更快,因为它必须通过较少的分支导航才能获得所需的任何数据,以缩小查询的行数.

(注意 - "低"对"高",我并不是说例如100万对比99万对于1亿行表.我的意思是更像是9000万对比9500万)

我的理解是否正确?

相关问题 - 基数如何影响写入性能?

mysql indexing performance cardinality

20
推荐指数
1
解决办法
1万
查看次数

如何*真正*写UML基数?

我想一劳永逸地知道如何编写UML基数,因为我经常不得不对它们进行辩论(因此非常欢迎证明和来源:)

如果我想解释一个Mother可以有几个Child人,一个Child只有一个Mother,我应该写:

Mother * ---------- 1 Child
Run Code Online (Sandbox Code Playgroud)

要么

Mother 1 ---------- * Child
Run Code Online (Sandbox Code Playgroud)

oop uml data-modeling cardinality

20
推荐指数
2
解决办法
1万
查看次数

如何在Python中有效地计算非常大的数据集的基数?

我一直在玩一些非常庞大的数据集,通常是数十亿个元素,这些数据都保存在memcached云中并定期转储到文件中,对于我的一个任务,我正在尝试计算基数的基数.这一套.

对于某些上下文,每个项目包含一个IP和一些其他标识一个人的属性,并以base64编码,项目大小为20个字节.通过删除某些字段来减小项目的大小是不可能的.

这是一个模拟我的数据集作为内存版本的东西(感谢这篇文章生成字符串):

import base64, os

dataset_size = 10000000000 # that's 10 billion, be careful if you run it !
big_dataset = [base64.b64encode(os.urandom(10)) for i in range(dataset_size)]
Run Code Online (Sandbox Code Playgroud)

我的第一种方法是使用这样的hashset:

uniques = set(big_dataset)
print "Cardinality: %d" % len(uniques)
Run Code Online (Sandbox Code Playgroud)

虽然这在理论上适用于小型数据集,但您可以猜测有一个打嗝:

  • 我无法对数据的唯一性做出任何假设.我可以拥有50%的独特数据集,或者我也可以拥有100%的数据集.这是以固定的时间间隔动态生成的,并且根据很多因素(例如,时间)而变化
  • 数据集规模在10亿.以base 64编码的每个项目是20个字节,100亿次是平均几百GB.不幸的是,我无法访问具有那么多RAM的机器!

我完成了我的家庭作业,并发现了一些研究论文或一些不起眼的图书馆,但这部分目标的一部分是了解哪种方法有效以及为什么.

所以我打电话给你的Python用户,你知道任何能帮我估算基数的算法吗?复杂性我的意思是我并不关心运行时复杂性,但我更关注空间复杂性.我不介意牺牲一点准确性,如果它极大地提高性能(所以我不一定需要知道uniques的确切数量,即使这是理想的,但可能不是一个可行的方法).我会说高达5%是可以接受的.我正在为这个项目寻找专门用于Python的东西.

感谢您的任何帮助,您可以提供 !

正如一些人所指出的,我可以使用Hadoop/MR,但对于这个特定的项目,我们不想采用MR方式,并且希望探索算法在一台机器上有效地执行此操作,因为这可以应用于其他几个不同的项目.

python optimization memcached set cardinality

16
推荐指数
1
解决办法
4303
查看次数

对于高基数分组,为什么使用dplyr管道(%>%)比等效的非管道表达式慢?

我认为一般来说使用%>%不会对速度产生明显影响.但在这种情况下,它运行速度慢了4倍.

library(dplyr)
library(microbenchmark)

set.seed(0)
dummy_data <- dplyr::data_frame(
  id=floor(runif(10000, 1, 10000))
  , label=floor(runif(10000, 1, 4))
)

microbenchmark(dummy_data %>% group_by(id) %>% summarise(list(unique(label))))
microbenchmark(dummy_data %>% group_by(id) %>% summarise(label %>% unique %>% list))
Run Code Online (Sandbox Code Playgroud)

没有管道:

min       lq     mean   median       uq      max neval
1.691441 1.739436 1.841157 1.812778 1.880713 2.495853   100
Run Code Online (Sandbox Code Playgroud)

带管:

min       lq     mean   median       uq      max neval
6.753999 6.969573 7.167802 7.052744 7.195204 8.833322   100
Run Code Online (Sandbox Code Playgroud)

为什么%>%在这种情况下会这么慢?有没有更好的方法来写这个?

performance r cardinality dplyr magrittr

16
推荐指数
1
解决办法
1957
查看次数

SQL中基数的定义是什么?

我的学校书籍数据库系统将基数定义如下:

关系的基数是它包含的元组数.相反,元组的数量被称为关系的基数,并且随着元组的添加或删除而改变.高基数 - 许多元组,低基数 - 少数元组.

关于Cardinality(SQL语句)的维基百科文章,定义如下:

基数是指数据库表的特定列(属性)中包含的数据值的唯一性.基数越低,列中重复的元素越多.基数有3种类型:高基数,正常基数和低基数.

它们可能都是正确的,但我无法将这两个定义作为相关定义连接起来.一个改述将是适当的!

mysql sql cardinality statements

14
推荐指数
2
解决办法
2万
查看次数

索引中的NULL基数是一个问题 - MySQL 5.x.

我在系统的实时版本上遇到性能问题,我无法在本地重现.

在比较我的本地数据库副本上的一些EXPLAIN结果与实时数据时,我注意到多字段索引不在现场的某些地方使用,而是在本地,并且进一步的调查显示这些索引的基数为现场为NULL.

我猜这是问题所在,但NULL基数是什么意思,它会导致索引不被使用?Optimize会解决这个问题,是否有办法防止它再次发生?我没有完全访问实时MySQL数据库的权限,因此Analyze和Optimize超出了我的正常功能.

非常感谢任何回复!

mysql indexing null cardinality

12
推荐指数
2
解决办法
6304
查看次数

红宝石或铁轨中有一个主要功能吗?

我正试图找到一种更好的方式来表达我的黄瓜,所以我正在寻找一个序数到基数函数来转换这个:

When I fill up the first passenger field
Then I should see the passenger list update with the first passenger details
When I follow "Add Another Passenger"
Then I should see a second passenger field
When I fill up the second passenger field
Then I should see the passenger list update with the second passenger details
Run Code Online (Sandbox Code Playgroud)

更动态的东西(而不是为每一行创建单独的步骤)

这是我的网页步骤的示例

When /^I fill up the first passenger field$/ do
  fill_in("booking_passengers_attributes_0_first_name", :with => "Blah")
  fill_in("booking_passengers_attributes_0_last_name", :with => "blah")
  select("5' to 6'", :from …
Run Code Online (Sandbox Code Playgroud)

ruby ordinals ruby-on-rails cardinality cucumber

10
推荐指数
2
解决办法
4182
查看次数