Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database design 将MySQL表移动到AWS DynamoDB-如何设置?_Database Design_Amazon Web Services_Amazon Dynamodb - Fatal编程技术网

Database design 将MySQL表移动到AWS DynamoDB-如何设置?

Database design 将MySQL表移动到AWS DynamoDB-如何设置?,database-design,amazon-web-services,amazon-dynamodb,Database Design,Amazon Web Services,Amazon Dynamodb,我在RDS实例上有一个表: +--------------+---------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +--------------+---------------------+------+-----+---------+----------------+

我在RDS实例上有一个表:

+--------------+---------------------+------+-----+---------+----------------+
| Field        | Type                | Null | Key | Default | Extra          |
+--------------+---------------------+------+-----+---------+----------------+
| id           | bigint(20)          | NO   | PRI | NULL    | auto_increment |
| match_id     | bigint(10) unsigned | NO   | MUL | NULL    |                |
| prop_type_id | bigint(10) unsigned | NO   |     | NULL    |                |
| title        | varchar(45)         | NO   | MUL | NULL    |                |
| odds         | double              | YES  |     | NULL    |                |
| status       | tinyint(4) unsigned | YES  |     | 1       |                |
| selection_id | bigint(15)          | YES  | MUL | NULL    |                |
| market_id    | bigint(15)          | YES  | MUL | NULL    |                |
| date_time    | datetime            | NO   |     | NULL    |                |
| available    | int(11)             | NO   |     | NULL    |                |
| source       | tinyint(4)          | YES  |     | NULL    |                |
+--------------+---------------------+------+-----+---------+----------------+
我们为索引找到的最佳设置是在匹配id、属性类型id、选择id和市场id上设置它们

此时数据库的大小约为1.5GB,我们可以每秒对该表进行100到500次查询,很快,查询速度将大大提高。其中大约75%是选择,其他是更新和删除。数据非常不稳定。这导致MyISAM挂起,InnoDB出现大量死锁

我已经尝试过SimpleDB,除了花大约18个小时来修改Rails代码来使用它之外,现在一个简单的select需要1到6秒,而且并不总是一致的。我不得不对它进行大量内存缓存,但这是一个主要的缺点——我们希望数据在数据库中更新,并且最多每8秒左右在屏幕上更新一次

希望在DynamoDB上实现这一点,它有望在高流量场景中表现得更好

现在的挑战是,我们需要基于以下内容进行搜索: -id(可以是任何东西,只要它们是唯一的,但我们在查询时并不总是使用它) -匹配id -道具类型标识 -头衔 -选择标识 -市场标识 -状态(0..2)

通常我们查询匹配id和属性类型id,或者查询匹配id、属性类型id、市场id和选择id。基于标题的查询很少,但无法避免。身份也一样

我们有没有办法为DynamoDB建模?

我知道它们只支持5个索引,而且它们还要求ID在任何时候都是已知的。我不知道,但也许我做错了整件事,我怎么能不先查数据就知道ID呢


谢谢

正如您所注意到的,本地二级索引不适合您的查询模式


此时,您需要使用多个DynamoDB表构建自己的索引,这意味着您的应用程序需要同时写入主表和作为主表索引的表。例如,主表的散列键可能是“id”,索引表的散列键可能是“match_id”,范围键可能是“id”。

正如您所注意到的,本地二级索引不适合您的查询模式


此时,您需要使用多个DynamoDB表构建自己的索引,这意味着您的应用程序需要同时写入主表和作为主表索引的表。例如,主表的散列键可能是“id”,索引表的散列键可能是“match_id”,范围键可能是“id”。

但我认为您的情况适合DynamoDB

可以这样做:

match_id
prop_type_id
放入一个复合属性,并将该属性设置为范围键。同时,让
Id
作为散列键

然后,您可以在
market\u id
上使用
selection\u id
“projected”设置二级本地指数。
然后,您可能还想在
标题上设置另一个二级本地索引。

但我认为您的案例适合DynamoDB

可以这样做:

match_id
prop_type_id
放入一个复合属性,并将该属性设置为范围键。同时,让
Id
作为散列键

然后,您可以在
market\u id
上使用
selection\u id
“projected”设置二级本地指数。
然后,您可能还想在
标题
上设置另一个二级本地索引。

编辑以确保问题(因为这是一个问题)以粗体标记,以便可以轻松查看,这样我的帖子就不会因为不是问题而被垃圾。事实就是这样。谢谢:)编辑以确保问题(因为这是一个问题而存在)以粗体字体标记,这样可以很容易地看到,这样我的帖子就不会因为不是问题而被垃圾。事实就是这样。谢谢:)是的。看起来我们根本不能用DDB。是的。看来我们根本不能用DDB。