Questions tagged «db.databases»

数据库中的理论问题

5
考虑到答案查找的理论指数复杂性(以查询的大小为单位),为什么关系数据库根本无法工作?
似乎已经知道,要在关系数据库上找到查询的答案,一个人需要时间,而一个人不能摆脱指数。D | D | | 问| | 问|问QQdDD| D || 问||D||Q||D|^{|Q|}| 问||Q||Q| 由于可能非常大,我们想知道为什么数据库实际上根本不起作用。dDD 仅仅是普通查询在实际应用程序中根本不占很大的问题吗?(然后,很有趣的是知道关系数据库系统所执行的查询的通常大小是多少,以及实际上期望由DB系统有效回答的查询的“最大”大小是多少。) 关于指数注释 不可移动| 问||Q||Q| 显示指数不可移动,可以使用查询来查询数据库给出的图中是否存在大小为的团。检查图是否具有 -clique是NP完全问题。而且,它不是固定参数可处理的,具有参数。细节可以在例如 Libkin,L .:有限模型理论的元素中找到。Springer(2004) 或 Papadimitriou,CH,Yannakakis,M .:关于数据库查询的复杂性。J.计算机 Syst。科学 58(3),407–427(1999)n n n| 问||Q||Q|ñnnñnnñnn

5
是否可以测试可计算数字是有理数还是整数?
是否可以通过算法测试可计算数是有理数还是整数?换句话说,将有可能为图书馆实现可计算数提供的功能isInteger还是isRational? 我猜测这是不可能的,并且这在某种程度上与以下事实有关:无法测试两个数字是否相等,但是我看不出如何证明这一点。 编辑:可计算的数字xxx由函数给出,该函数fx(ϵ)fx(ϵ)f_x(\epsilon)可以返回精度为ϵ的的有理近似值:| x − f x(ϵ )| ≤ ε,对于任何ε > 0。鉴于这样的功能,就是可以测试,如果X ∈ Q或X ∈ ž?xxxϵϵ\epsilon|x−fx(ϵ)|≤ϵ|x−fx(ϵ)|≤ϵ|x - f_x(\epsilon)| \leq \epsilonϵ>0ϵ>0\epsilon > 0x∈Qx∈Qx \in \mathrm{Q}x∈Zx∈Zx \in \mathrm{Z}
18 computability  computing-over-reals  lambda-calculus  graph-theory  co.combinatorics  cc.complexity-theory  reference-request  graph-theory  proofs  np-complete  cc.complexity-theory  machine-learning  boolean-functions  combinatory-logic  boolean-formulas  reference-request  approximation-algorithms  optimization  cc.complexity-theory  co.combinatorics  permutations  cc.complexity-theory  cc.complexity-theory  ai.artificial-intel  p-vs-np  relativization  co.combinatorics  permutations  ds.algorithms  algebra  automata-theory  dfa  lo.logic  temporal-logic  linear-temporal-logic  circuit-complexity  lower-bounds  permanent  arithmetic-circuits  determinant  dc.parallel-comp  asymptotics  ds.algorithms  graph-theory  planar-graphs  physics  max-flow  max-flow-min-cut  fl.formal-languages  automata-theory  finite-model-theory  dfa  language-design  soft-question  machine-learning  linear-algebra  db.databases  arithmetic-circuits  ds.algorithms  machine-learning  ds.data-structures  tree  soft-question  security  project-topic  approximation-algorithms  linear-programming  primal-dual  reference-request  graph-theory  graph-algorithms  cr.crypto-security  quantum-computing  gr.group-theory  graph-theory  time-complexity  lower-bounds  matrices  sorting  asymptotics  approximation-algorithms  linear-algebra  matrices  max-cut  graph-theory  graph-algorithms  time-complexity  circuit-complexity  regular-language  graph-algorithms  approximation-algorithms  set-cover  clique  graph-theory  graph-algorithms  approximation-algorithms  clustering  partition-problem  time-complexity  turing-machines  term-rewriting-systems  cc.complexity-theory  time-complexity  nondeterminism 

1
关系代数/演算与范畴论之间是否存在关系?
我知道了解关系数据库的至少两种不同的理论方法:Codd的关系代数/演算和范畴论。 这两种方法之间有什么关系?它们在某种意义上是等效的吗?是否有介绍性工作解释这两个框架如何解释关系数据库? 背景: 前一阵子,我读过戴维·斯皮瓦克(David Spivak)的“科学家分类理论”,其中花了很多时间讨论如何将分类理论应用于理解关系数据库的理论。但是,对于什么是关系数据库或为什么有用,我几乎没有个人经验,当时我还没有完全理解本书中发现的深刻见解。 但是,最近我一直在学习SQL查询和两个用于数据处理的R包:dplyr和data.table。SQL显然可以表达Codd的关系代数/演算/模型的大部分思想,但不是全部。此外,dplyr的作者Hadley Wickham 明确表示,他的软件包基础的哲学是基于Codd在关系代数上的工作,并且data.table的基本命令与SQL和dplyr中的命令映射得相当好。 我也知道类别理论会影响使用Haskell之类的函数式编程语言的许多程序员。但是,除了Hadley Wickham 针对R 的purrr软件包,Apache Spark用Scala编写的事实以及与MapReduce相关的技术外,我还没有真正意识到功能编程可用于数据处理或数据科学。 所有这些都向我暗示类别理论和Codd的关系代数/演算之间应该存在某种联系,但是我从未听说过有人明确指出这种联系或解释其如何构成流行数据处理中的设计决策。和关系数据库技术。所以我也怀疑我可能完全错了。 编辑:显然,大卫·斯皮瓦克(David Spivak)致力于“ 函子查询语言(FQL) ”。如果存在,这听起来可能是这种理论联系的一种应用。 注意:我不确定“关系结构”是否适合讨论关系数据库或关系代数/演算。这篇Wikipedia文章建议它们可能是连接的,但最终我不知道“关系结构”是什么意思。请随时重新标记。



1
数据库聚合如何形成一个monoid?
在cs.stackexchange上,我询问了github上的algebird scala库,推测他们为什么可能需要抽象的代数包。 github页面有一些线索: Monoid的实现用于有趣的近似算法,例如Bloom过滤器,HyperLogLog和CountMinSketch。这些使您可以像想数字一样思考这些复杂的操作,然后将它们加到hadoop或在线中以生成强大的统计信息和分析数据。 并在GitHub页面的另一部分中: 它最初是作为Scalding的Matrix API的一部分开发的,其中矩阵的值是Monoids,Groups或Rings的元素。随后,很明显,该代码在Scalding和Twitter的其他项目中具有更广泛的应用。 甚至Twitter的Oskar Boykin也赞叹道: 主要的答案是,通过利用半群结构,我们可以构建可以正确并行化的系统,而无需了解底层操作(用户有望实现关联性)。 通过使用Monoid,我们可以利用稀疏性(我们处理许多稀疏矩阵,其中在某些Monoid中几乎所有值都是零)。 通过使用Rings,我们可以对数字以外的东西进行矩阵乘法(有时我们做过)。 algebird项目本身(以及发行历史)非常清楚地解释了这里发生的事情:我们正在构建许多用于聚合大型数据集的算法,并且利用操作的结构使我们在系统方面取得了成功(这通常是尝试在1000个节点上生产算法时的痛点)。 为任何Semigroup / Monoid / Group / Ring解决一次系统问题,然后您可以插入任何算法,而无需考虑Memcache,Hadoop,Storm等。 怎么样Bloom filters/ hyperloglog/ countminsketch同样的数字? 数据库聚合如何具有单调结构? 这个半身像是什么样的?他们曾经有过小组组织吗? 参考文献会有所帮助。

2
数据结构允许基于标签的高效查找
我正在寻找一种类似于以下内容的高效数据结构来存储数据。 ID标签Order1 Order2 -------------------------- 1 1,2 1 1 2 2,5 2 3 3 1,7 4 7 4 6 3 0 我需要能够以这样的方式来查询这个结构,它会给我含标签表达式中的所有ID的列表-支持AND和OR和NOT操作。例如。(((1或2)而不是7) 我还需要能够指定结果的顺序(Order1或Order2),并且能够指定带有可选偏移量的最大返回行数。获取前30-100个结果的性能至关重要。 最后,我需要一种便宜的方法来查找“标签关系”,例如,我想知道哪些标签与标签(1或2)“相关”以及以什么频率“关联”。表示哪些标签与1 OR 2 ...出现在同一集合中,并按频率排序。 关于哪种数据结构(或结构集)对于此类工作会非常有效的任何想法? (我想以此为概念证明来重新设计SE系列网站的标记页面)


1
数据库查询语言可实现高效查询
在关系数据库的流行查询语言中,似乎可以创建需要大量资源来回答的查询。在实践中,数据库管理员通过限制每个查询的内存量并检查是否存在长时间运行的查询(如果数据库速度变慢)来进行管理。这似乎是临时的,是否有TCS解决方案? 是否存在只能实现高效查询的查询语言? 如果没有这种语言,是否有理论上的原因? 我可能希望这类事物存在或至少存在的一些原因是有道理的: 我们有专门设计用于仅实现有效计算的编程语言(通常通过在其类型系统中使用一些限制性逻辑) 流行的查询语言(例如SQL)已经受到逻辑的启发,因此对于数据库用户来说,考虑使用更多限制性逻辑似乎并不困难。 一个非恶意数据库用户已经尝试准备快速执行的查询,因此我们应该期望这些限制性更强的查询语言只会阻碍恶意用户。 这个问题的灵感来自于前面两个问题的交集: 用于高效计算的编程语言 考虑到答案查找的理论指数复杂性(以查询的大小为单位),为什么关系数据库根本无法工作?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.