Questions tagged «denormalization»

7
什么时候以及为什么数据库连接昂贵?
我正在对数据库进行一些研究,并且正在研究关系数据库的一些局限性。 我知道大表的联接非常昂贵,但是我不确定为什么。DBMS需要执行什么操作才能执行联接操作,瓶颈在哪里? 非规范化如何帮助克服这一费用?其他优化技术(例如,索引编制)如何提供帮助? 欢迎亲身经历!如果您要发布资源链接,请避免使用Wikipedia。我知道在哪里可以找到。 与此相关,我想知道BigTable和SimpleDB等云服务数据库使用的非规范化方法。看到这个问题。

4
数据非规范化如何与微服务模式一起使用?
我刚刚读了一篇有关微服务和PaaS体系结构的文章。在那篇文章中,作者大约说了三分之一,(在Denormalize像Crazy一样): 重构数据库架构,并对所有内容进行规范化,以允许数据的完全分离和分区。也就是说,请勿使用为多个微服务服务的基础表。不应共享跨越多个微服务的基础表,也不应共享数据。相反,如果多个服务需要访问相同的数据,则应通过服务API(例如已发布的REST或消息服务接口)进行共享。 从理论上讲,这听起来不错,但在实践中,有一些严重的障碍需要克服。其中最大的问题是,通常数据库是紧密耦合的,并且每个表与至少一个其他表都有某种外键关系。因此它可能是不可能的分区的数据库进Ñ通过控制子数据库Ñ微服务。 所以我问:给定一个完全由相关表组成的数据库,如何将其规范化为较小的片段(表组),以便可以由单独的微服务控制这些片段? 例如,给定以下(虽然很小,但示例)数据库: [users] table ============= user_id user_first_name user_last_name user_email [products] table ================ product_id product_name product_description product_unit_price [orders] table ============== order_id order_datetime user_id [products_x_orders] table (for line items in the order) ======================================================= products_x_orders_id product_id order_id quantity_ordered 不要花太多时间来批判我的设计,我是即时进行的。对我来说,关键是将这个数据库分为3个微服务是合乎逻辑的: UserService-用于在系统中添加用户;最终应该管理[users]表;和 ProductService-对系统中的产品进行填充;最终应该管理[products]表;和 OrderService-用于在系统中添加订单;最终应该管理[orders]和[products_x_orders]表 但是,所有这些表之间都具有外键关系。如果我们对它们进行非规范化并将其视为整体,它们将失去所有语义含义: [users] table ============= user_id user_first_name user_last_name user_email …
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.