从优惠中匹配产品的最佳数据库存储

Best database storage for matching products from offers

我有以下问题。我有产品、报价及其参数(在 MySQL 中大约 300 000 000 行)。基于报价参数及其费率(参数是动态的,每个参数类型都有不同的费率),我必须将报价加入产品。当然会有很多更新,删除或插入(例如大约5000req/s)。

第二个功能是通过 api 发送这些连接信息。有人对 NoSQL、关系数据库或类似的东西有什么建议用于存储吗?

编辑

我将在 MySQL:

中用一小部分数据展示我的示例
Offer

+----------+-----------------+
| offer_id |      name       |
+----------+-----------------+
|        1 | iphone_se_black |
|        2 | iphone_se_red   |
|        3 | iphone_se_white |
+----------+-----------------+

Parameter_rating
+--------------+----------------+--------+
| parameter_id | parameter_name | rating |
+--------------+----------------+--------+
|            1 | os             |     10 |
|            2 | processor      |     10 |
|            3 | ram            |     10 |
|            4 | color          |      1 |
+--------------+----------------+--------+


Parameter value
+----+--------------+----------------+
| id | parameter_id |     value      |
+----+--------------+----------------+
|  1 |            1 | iOS            |
|  2 |            2 | some_processor |
|  3 |            3 | 2GB            |
|  4 |            4 | black          |
|  5 |            4 | red            |
|  6 |            4 | white          |
+----+--------------+----------------+

Parameter_to_value
+----------+--------------------+
| offer_id | parameter_value_id |
+----------+--------------------+
|        1 |                  1 |
|        1 |                  2 |
|        1 |                  3 |
|        1 |                  4 |
|        2 |                  1 |
|        2 |                  2 |
|        2 |                  3 |
|        2 |                  5 |
|        3 |                  1 |
|        3 |                  2 |
|        3 |                  3 |
|        3 |                  6 |
+----------+--------------------+

基于此数据,我必须 return 出价 1,2 和 3 是一种产品。 最大的问题是数据经常变化。比如改价格,去掉offer等等。所以,我觉得MySQL不是最合适的技术,我尝试选择其他的。

平台

any recommendations what NoSQL, relational database or something similar to use for storage?

Therefore, I do not think that MySQL is the most suitable technology and I try to choose another.

所有这些都是关系数据库的普通费用。成千上万的银行运行 交易和定价系统在这样的系统上非常活跃,来自数十万用户。每天。您提到的更改在此类系统上是正常的(例如,定价和定价基础,随时更改,以响应买卖)。

但他们使用正版 SQL 平台。 Freeware/shareware/vapourware/nowhere 套件,例如 MySQL 和 PostgreSQL 既不符合 SQL 标准,也不是高吞吐量 OLTP 系统的可行平台(无服务器架构;无 ACID 事务;等) .他们仍在实施 SQL 平台自 1984 年以来的基础知识,这非常困难(不可能!),因为他们没有服务器架构。

因此MySQL和PostgreSQL不适合,因为性能太差;零并发;等等,而不是为了任何数据库设计问题。

要了解真正的 OLTP 服务器架构 的价值,请参阅 Oracle vs Sybase ASE。尽管本文明确针对 Oracle,但它适用于所有免费软件,因为所有免费软件都具有与 Oracle 相同的非体系结构。实际上,甚至比 Oracle 还少。一分钱一分货。

数据分析

此答案仅限于关系数据库; SQL,其指定的数据子语言;和一个真正的、商业上可行的 SQL 平台。

系统似乎支持某种拍卖,这意味着您必须维护 available/sold 项的库存。所需的数据库设计很普通。

但是,您的问题不够明确,无法回答。你在做很多假设,我们不参与。请允许我提出一些您需要考虑和回答的主要问题(更新您的问题):

  • 系统处理操作的基本事物是什么?
    (手机等产品?)

  • 那些东西是怎么鉴定的?
    (不是 ID,而是人类如何识别每一件事)

  • 这些东西的属性是什么?
    (请不要 "parameter" ... 也许 OS; RAM; Processor; Colour) ?
    那么属性值就可以理解
    (除非你持有和维护一个东西,否则你不能弄乱一个东西的属性)

  • 针对这些东西操作交易是什么

    • (a) 内部或管理交易
      (例如,AddProperty;AddPropertyValue;AddProduct;等)
    • (b) 外部或在线用户交易
      (例如 BidProduct [购买报价];CloseBid;等)
  • 谁是运营商,允许这些交易?
    (例如,管理员;产品供应商;在线投标人等)

  • 我看不懂你的Parameter_to_value,请解释一下

  • 什么是rating? 属性 与其他属性的某种权重,或者投标人声明的某些权重?

数据库设计 • 暂定

  • 这可能需要几次迭代。
  • 不必担心每个文件上的 ID 字段:首先我们必须了解数据,它与其他数据的关系,以及它是如何被识别的。我们可以在末尾添加 ID 个字段。

备注

  • 我所有的数据模型都在 IDEF1X 中呈现,这是自 1993 年以来的关系数据库建模标准
  • 我的IDEF1X Introduction是初学者必读的
  • IDEF1X Anatomy是对那些逝去的人的复习。
  • 如果您在阅读数据模型中的谓词时遇到问题,请告诉我,我将以文本形式生成它们。