我目前对我的MySQL数据库感到有点沮丧,所以我一直在思考我希望在未来的数据库中看到的所有内容。但我觉得听到其他人的想法也很有趣 - 我不是一个职业选手。
答案 0 :(得分:9)
我认为当前数据库使用中缺少的很多东西都不在数据库本身中;它位于与数据库交互的ORM,框架和应用程序中。看到代码只是不知道如何以利用数据库功能的方式与数据库进行交互,这是非常常见的。
转过来试着回答你的问题;我认为数据库中缺少的是在数据库和使用它的应用程序之间创建实际API的简单方法。 SQL实际上并不是一个有用的API,因为它意味着将应用程序与数据库的结构紧密结合在一起。有用API的一个示例是为应用程序需要执行的每个操作创建存储过程/函数,但目前在应用程序中需要大量额外工作。
我还希望看到数据库中更强大的过程语言仍然可以很容易地与数据库进行交互。 Postgres允许您在数据库中使用Perl和Python等语言,但语言和数据库之间的交互远不像plpgsql那样干净简单。另一方面,plpgsql不是一种非常强大的语言;唯一真正的好处是与数据库交互是多么容易。拥有更强大的plpgsql之类的东西可以更容易地创建数据库API,至少在数据库方面是这样。
答案 1 :(得分:8)
放弃SQL并正确实现关系模型!
答案 2 :(得分:4)
你有什么沮丧?性能?我想如果你对当前关系数据库的错误更清楚,我们可能会进行讨论(虽然这不是堆栈溢出的真正含义,所以可能更好的问题是“一个特性是什么?当前关系数据库中最缺乏的是什么?“)
答案 3 :(得分:2)
当前数据库系统(imho)的最大问题是您必须考虑数据库系统的表和结构。您无法在对象中工作或直接保存它们(是的,您可以在它们上方和周围构建抽象)。我认为数据库的未来可能会更加以对象为中心(像序列化一样)。我希望花更多的时间来思考我的问题空间对象,而不是如何规范关系系统......
答案 4 :(得分:2)
我将答案分成两部分:
First-order predicate calculus,其中relational algebra来之不易消失。从概念上讲,这种代数在形式化任何和所有“对象模型”,层次结构和网络数据结构方面都没有问题 这里的改进空间仍然存在,它走向更高阶逻辑和类型理论。
这与平面文件,xml,SQL,对象,ORM或任何实现细节无关(并且永远不会有)。这个事实非常重要(SQL基于关系,但SQL 不等于关系;即使SQL失败,关系代数的概念也会存在)。
SQL数据库管理系统有许多可以实现改进的领域。
数据库系统的最初卖点 - 让数据库决定如何存储和检索数据仍然是件好事,但它(平均)无法识别使用场景的广泛性(MySQL的唯一原因,在正确的时间认识到整个行业并不关心数据的完整性和一致性;而且历史上SQL数据库实际上主要是数据捕获系统,人们未能意识到大多数读取系统的重要性。 /> 索引或更广泛的数据存储和检索应该比当前更灵活,允许优化以下任何一项:读取速度,写入速度,一致性,持久性(在内存事务中),原子性,完整性,具有非常精细的粒度和细节(特别是在读写场景下)。
对象关系集成也可以有很多改进 - 即使差异不是那么大;数据库实体本质上是对象,因此它主要归结为工具。 (大多数ORM悲伤都存在,因为很多人不确定他们的对象类是行还是表)
时间数据库管理系统绝对更接近我们人类存储我们处理的数据的方式;在这方面,在各个层面的数据设计和管理上实现更高水平的心理人体工程学将是一件好事。支持完整历史并自然地与时间概念和时间相关操作一起工作的任何系统的可用性都会大大增加。
此时间方面不仅适用于数据,还适用于元数据,包括完整性规则。
此外,数据和元数据的分离有点过分强调 - 换句话说 - 设计数据库系统(并维护它们)是对元数据的操纵,为此目的,如果管理这些数据将是有益的使用与常规数据相同的概念(在我看来,这指向高阶逻辑)。
为了使这成为可能,数据库管理系统需要更强大的表达式符号操作,这再次指向lambda演算等概念。
不幸的是,由于数据和系统的惯性(成本),SQL标准不太可能大幅改变,直到可以证明或至少可以证明充分的节约。
答案 5 :(得分:2)
未来不是SQL,它是功能语言瘫痪的最低标准。好吧,至少它有点标准化了。
尝试对象普遍性(cl-prevalence,Hibernate)或磁盘上对象数据库(例如Elephant)。
答案 6 :(得分:2)
时态数据库会很好。 不再需要手工加入时间了。 自动审核。叹息。
对于进度预测/报告......不会那么好。
我有一个开放的错误来实现像我自己的准确进度条。 我要记录命令对象执行时间。 我们还会记录参考系统的命令执行时间,这样用户就可以看到“似乎是否有问题”。
我所要做的就是以一种简洁的方式来参数化查询以预测GUI的执行结果。也许是多项式。在完美的世界中,它可以自适应实际数据。
(我已经做了类似的事情来预测打印进度。)
答案 7 :(得分:2)
像SQL Server数据服务这样的解决方案可能是存储范例的未来
答案 8 :(得分:2)
平面文件!
答案 9 :(得分:1)
我认为NoSQL数据库显示数据库的未来将比现在更加异质。关系数据库不会在短视角和长视角中消失。毕竟,如果你的数据是自然关系的(即表格),就像经济数据一样,关系模型非常方便。
但是,对于某些类型的数据:分层,多对多关系等,关系模型不太有用。或者,它很有用,但数据库模型变得相当扭曲。这就是键值存储,文档数据库,图形数据库的用武之地。
通常,组合可以是最有效的。过度简化,您可以通过两种方式使用数据库:
关系数据库可以同时执行这两种操作,但是根据数据的结构可能不会很好。在这种情况下,您最好使用文档数据库进行存储,并使用Lucene等外部搜索索引进行搜索。
不幸的是,我不认为语义数据库(又称三重存储和关联数据库)将被广泛使用。但是,如果我错在这里更好,因为关联数据模型是IMO最直观和最具表现力的。
答案 10 :(得分:0)
分贝:当你说他们不知道如何与数据库交互时,你会特别谈论哪些ORM和框架?当我与其中一些人合作时,我会非常有兴趣听取你的意见。
答案 11 :(得分:0)
云计算可能很有趣 和对象数据库(ODBMS)
答案 12 :(得分:0)
根据应用程序的不同,您可以使用全文搜索引擎(apache lucene / apache solr)来存储您的数据。使用此解决方案,您可以配置索引哪些“列”或数据字段,并只需一次调用即可搜索所有字段。不再根据数据对象中的属性值生成sql语句。
此外,如果要向数据索引(或存储)添加其他字段,只需添加字段并重新编制索引即可。您可能不需要更改任何代码来为搜索添加其他字段。
这些全文搜索引擎通常都内置了某种类型的分页系统,这也很方便。
答案 13 :(得分:0)
我希望我能说OODB,但没有OODB真正在市场上取得突破。
答案 14 :(得分:0)
我更喜欢Oracle,并认为MySQL是一个玩具数据库,尽管MySQL已经(很少)有用的功能在Oracle中不存在。
我最喜欢的功能是PL / SQL,这是一种非常强大的编程语言,可用于存储过程,触发器和“包”,程序单元和DB内部的其他内容。与此同时,我倾向于编写代码,主要在数据库内部进行海量数据处理,而不需要在Db和app之间进行昂贵的交互。
我不相信我们会很快看到切换到面向对象的数据库,因为关系数据库可以很好地完成90%的所有应用程序,并且可以为其他应用程序工作。
顺便说一下,Oracle支持平面文件,就像Shog9在这里要求的那样。您可以将它们安装为“外部表”。我用它进行海量数据导入,效果很好。
答案 15 :(得分:0)
未来的数据库取决于您的需求。我认为我们将看到比使用传统关系数据库更广泛的选择。新技术,如用于实时查询的数据流管理系统,用于存储以文档为中心的文档的xml数据库,列存储,数据仓库等。
但关系模型还远未消亡。如果您可以提供有关您的挫折的更多详细信息,那么我们可以找到您的问题的未来,而不仅仅是整个数据库范围。
答案 16 :(得分:-4)
WebCould是另一项新技术。云计算将改变我们处理后端系统的方式,或者在大多数情况下,我们可能不需要用于下一代(云感知)应用程序的数据库。
当然,我不是在谈论企业级业务应用程序。