代码之家  ›  专栏  ›  技术社区  ›  Industrial

存储产品信息的noSQL?

  •  3
  • Industrial  · 技术社区  · 16 年前

    我们将要解决客户对基于web的应用程序的需求,该应用程序具有 产品数量及其数据-包括价格、重量、实际体积等。

    除了价格以外的一切都是数据,这些数据将被存储一次,然后可能不会更改。另一方面,价格将每天至少更新一次,以适应不断变化的货币汇率。因此,我们考虑过使用noSQL数据库,但我还没有经验来决定它是一个好主意,还是仅仅是一个新奇的现代解决方案?

    它是?

    2 回复  |  直到 16 年前
        1
  •  6
  •   Community Mohan Dere    9 年前

    As Michael explained ,一个关系数据库就足够了,这取决于您的具体需求。然而,NoSQL数据库可能是一个更好的解决方案,这取决于您需求的两个方面: 数量 格式 所有的数据。

    数据量

    如果单个关系数据库服务器可以轻松处理大量的数据,那么请尽一切可能使用该关系数据库。但是,如果您处理的数据量太大,单个服务器无法有效地处理,那么NoSQL解决方案可能是更好的选择。NoSQL数据库更适合于 跨服务器分发 ,因为它们不必处理关系完整性和原子事务之类的事情。

    数据模型

    如果您的所有产品都大致包含相同的属性,并且所有这些属性都可以轻松地存储在一个表中,那么请使用关系数据库。但是,如果数据模型在每个产品类型上有很大的差异,并且/或者产品数据被规范化为多个表,并且不容易去规范化,那么 NoSQL解决方案,例如文档数据库,可能是更好的选择。这样就不必处理大量数据的连接操作。

    简而言之,如果您处理的是大量数据,或者是(部分)无模式的数据,NoSQL绝对是一个可行的解决方案。

    请记住,关系数据库也可以通过 sharding . 例如,可以根据SKU将产品拆分为单独的表。然后数据库只需要处理小表,而不是单个大表。这些表可以存储在不同的服务器上以分散负载。

    优化应用程序体系结构

    另一种选择是使用 CQRS architecture 在关系数据库之上。所有数据修改查询都发送到一个主数据库。然后将这些修改发布到只读数据库或缓存,其中包含 非规范化表示

    记住关系解决方案和NoSQL解决方案

    不是一个肯定/否定的答案,但希望能给你一些食物:)

        2
  •  2
  •   Michael Ekstrand    16 年前