然而,所有这些工作仍然导致一个有缺陷的模型,我的数据库只是sql模仿我实际对象的最佳尝试。使用文档数据库,不再是这样的情况,因为对象成为文档本身,而不是仅通过表和列模拟对象。
在这一点上,我真的开始怀疑为什么要再次需要sql?
我知道这有点像一个苹果到橘子的比较,特别是当你考虑到具有广泛不同的功能集的各种类型的Nosql数据库时,但是为了这个参数,它基于Nosql数据库的概念可以固有地正确地查询对象而不是关键价值商店的限制。另外,不要在OLAP数据库中通常处理报表方面,除非您的答案包含特定的原因,否则不会为其使用OLAP数据库。
我也用了大量的数据。 sql中的表的结构为数据提供了优秀的长期文档。数据库比较容易直接使用,数据的结构是有意义的。有些人是管理数据的结构和完整性的工作。
我担心Nosql数据库缺乏明确的结构,可能会缓慢地获取所有代码的恶意品质。最终将填补从没有人真正了解的旧建筑物的数据,并成为大部分无用垃圾的拼凑。
我看到sql数据库的主要优点是维护数据库结构和一致性规则所需的强制文档。这些好处没有一个简单的短期措施,如查询速度或事务一致性。它们是长期的好处,它会在长时间内影响到您的数据的有用性。
作为第二个相关点,我发现它更有用,当使用ORM等来映射我的数据,然后决定如何将它转化为我正在写的应用程序中的对象。数据及其关系代表了可用于各种目的的长期存档结构。
应用程序中的对象关系的结构是为了该应用程序的目的。在sql表和关系约束中表示的一组给定的数据将在应用程序中具有许多可能的对象模型,并且每个对象模型将反映该特定应用程序的目标。但数据及其结构独立于任何可能由它们产生的临时用途。
我看到人们对“报告”的观点是不同应用程序可以以非常不同的方式有效地查看同一组数据的论据。
就个人而言,我认为sql是一种很好的模型,可以直接用于存档数据,不经常修改的数据或具有极高一致性要求的数据。我认为,即使我将它存储在Nosql数据库中,我也将继续使用关系代数来定义我的数据的整体结构。而且我不会改变Nosql数据库中的数据结构,而不用先修改描述它的关系结构。这将允许我将我的Nosql数据库映射回sql,所以我仍然可以使用sql进行长期存储和仓储,并强制我以良好的文档格式维护数据结构。
这样做的事情也可以帮助我,当我必须从Nosql数据库中提取数据,以便在创建数据库时没有想到的应用程序中使用。
当然,有一些数据,谁的结构自然适合Nosql,而为其生成关系模式将是毫无意义的。例如,存储实际文档,存储图片或其他媒体,或其他大型数据库,这些数据没有可能对代表有用的结构。这个区别是非常棘手的。图片和电影确实有它们的结构,通常不需要将其存储在数据库中。如果您有一个设计用于阅读和理解它的系统,那么博客文章也可能具有结构,并且可能是要保留记录的结构。