什么是多模型数据库?
#初学者 #sql #database #surrealdb

在当今的数字时代,保持联系比以往任何时候都容易。社交媒体平台使我们能够与亲人保持联系,结识新朋友,并在世界新闻上保持最新状态。但是,当出现了重新连接或探索新目的地的冲动时,我们将毫不费力地预订航班或火车。您是否曾经想过所有这些在线和离线应用程序如何轻松搜索所有这些复杂信息?

为了解释,我们需要谈论有趣的数据库世界,其中不同的数据模型共存,就像繁华的地铁站中的火车一样。

但是什么是数据模型?

什么是数据模型?

数据模型本质上是一个概念框架,它决定了数据在数据库系统中的结构,存储和操纵的方式。就像地铁站的蓝图一样,定义了火车如何移动,乘客董事会以及货物卸载的位置。有几个types of data models,每个types of data models旨在独特地管理数据。

  • 关系模型

    Relational Model

    pros :它们非常适合处理结构化数据和复杂的查询,并提供了稳健的交易一致性(ACID properties)。他们还支持SQL,一种强大且广泛使用的查询语言。

    cons :由于架构的更改可能是复杂且破坏性的,因此它们的灵活性较小。它们的扩展可能更具挑战性,这可能会降低性能。

  • 文档模型

    Document Model

    专业人士:他们提供高灵活性,因为它们不需要预定义的模式。它们非常适合处理半结构化或非结构化数据,并且可以水平扩展以适应大量数据。

    cons :它们不太适合具有复杂关系,严格的模式执行和跨越多个文档的交易的查询。

  • 图形模型
    Graph Model

    pros :它们在处理复合物和互连数据方面表现出色。他们也非常快速地进行遍历和关系繁重的查询效率。

    cons :它们不太适合不涉及高度互连数据的用例。它们的成熟度也不如其他类型的数据库成熟,并且可以使用更少的工具和资源来支持它们。

  • 键值模型

    Key Value model

    pros :它们在读/写操作方面具有很高的性能,尤其是当访问模式主要由密钥访​​问时。他们可以处理大量数据并轻松地水平缩放。

    cons :他们提供有限的查询功能,关键通常是访问数据的唯一手段。它们也不适合处理多个密钥之间的复杂关系或查询。

这些只是一些最常用的模型,而更多的数据模型符合特定要求,例如时间序列数据模型,柱状数据模型等。

这些数据模型足以支持当今的复杂应用程序吗?

当今应用的复杂性与几年前的情况大不相同。以社交媒体平台为例。他们需要处理用户配置文件,连接,文本帖子,图像数据和用户交互,所有这些都有不同的数据要求。或考虑一个涉及库存,客户数据,订单历史记录,付款详细信息和客户评论的电子商务应用程序。

以下查询将检索有关订单的信息。

SELECT * FROM orders WHERE order_id = 123;

但是您将如何管理半结构化和非结构化数据?

a 文档数据库可以处理半结构化或非结构化数据,例如产品目录和客户评论。

以下查询将检索特定产品的所有评论。

db.reviews.find({ product_id : 789 })

a 图形数据库最佳处理基于用户行为或互连数据的建议系统。

查询购买产品的客户名称以及他们购买的产品的名称

MATCH (c:Customer)-[:BOUGHT]->(p:Product) 
RETURN c.name as customer_name, p.name as product_name

很明显,单个数据模型无法迎合电子商务应用程序的所有功能或当今大多数高级应用程序的所有功能。

您的第一个想法是使用多个数据库满足所有这些需求。 Polyglot persistence是一个主张使用不同的数据库来满足同一系统中不同数据建模需求的概念。

Polyglot Persistence

尽管这种方法可以帮助您解决处理不一致的数据的问题,但它将在开发方面引入多个挑战。其中一些将是:

  • 专门研究多个数据库产品并学习其查询语言
  • 建立一个独特的体系结构,用于维持这些数据库之间的关系
  • 系统设计不可重复使用多个产品
  • 数据一致性和重复问题跨多个数据库。
  • 复杂的部署和频繁升级。

多模型数据库提供了一种旨在解决这些挑战的替代方法。

什么是多模型数据库?

多模型数据库是一个数据库,该数据库具有内置在单个数据库中的多个数据模型和数据库的功能。它还具有单一的查询语言。

此查询语言可以根据您当前问题的最合适方法或数据库中存储的数据类型来以各种关系,基于文档或图形的方式运行查询。

是否处理文档,图形,关系数据,键值或其他数据格式,多模型数据库可以容纳您的数据,从而消除了对不同数据库之间的复杂转换和迁移的需求。

多模型数据库的美丽在于它们的适应性 - 它们塑造了您的数据需求,而不是强迫您的数据适应刚性结构。

当您需要处理多个数据模型时,通常选择多模型数据库作为主要数据库提供您想要的确切性能和功能的模型;由于多模型数据库可能无法涵盖每个数据模型的所有边缘情况。

SurseAldB,一种创新的多模型云数据库

SurrealDB’s体系结构以分层的方式构建,有效地将计算与存储区分开。这有助于根据需要进行计算的单个缩放(又称查询层)和存储层。

查询层负责从客户端处理查询。它可以明智地分析必须选择,创建,更新或删除哪些记录。

该过程涉及通过解析器,执行人,迭代器以及文档处理器运行超级Ql查询。每个组件都扮演关键角色,从解析查询到管理交易,从确定从存储引擎获取的数据到处理权限和更改。

另一方面,存储层管理查询层的数据存储。 SurseAlDB的灵活性在使用多个基础存储引擎的能力方面显而易见,每个存储引擎都为基于交易的方法提供了支持。根据SurseAldB操作的模式 - 嵌入,分布式或Web浏览器 - 分别使用RockSDB,TIKV或IndexedDB(例如RockSDB,TIKV或INDEXEDDB)的不同高性能的存储引擎。

回到我们的电子商务商店,SurreAldB将如何使用单个查询语言以及在同一数据库中处理所有这些要求。

SELECT * FROM orders:123;
  • 检索特定产品的所有评论。
SELECT reviews.* FROM product:789;
  • 获取购买产品和购买产品名称的客户的名称。
SELECT name as customer_name, ->bought->product.name as product_name
FROM customer

SurrealDB architecture

与其他数据库相比,使用SursteLDB的优点

SurreAlDB是一个数据库,它不仅仅是存储和查询数据。凭借全文搜索,实时查询和内置安全权限诸如SurreLDB可以充当完整的后端层。

这是advantages and features of SurrealDB的非排量列表。

  • SurreAldB用Rust写!这意味着没有内存问题的性能,用于查询语言的强大类型系统,以及将数据库放在任何设备上(包括浏览器)上的Web组件。
  • 旨在在处理多桌交易和文档记录ID时使用特殊技术在分布式环境中运行,没有表格或行锁。
  • 由于二进制的大小,SurroLEDB可以在IoT设备上工作并以独立或聚类的企业部署运行 - 与其他DBS相比,操作模式更多。
  • 基于高级表和基于行的可自定义访问权限允许使用不同类型的用户的粒状数据访问模式。削减后端代码以进行身份​​验证。
  • 全文索引,具有搜索表上的全文索引的功能。

SurreAldB确实是未来的数据库。它涵盖了旨在彻底改变您对数据库的方式的功能。您可以在网站上了解有关未来releases和SurreAldB的roadmap的更多详细信息,或者在SurrealDB World中直播我们,以帮助塑造数据库行业的未来!