-1

我有很多关于是否将我的数据存储到 SQL 或表存储以及存储它们以提高效率的最佳方式的问题。

用例:

我有大约 500 万行当前存储在 mysql 数据库中的对象。目前元数据仅存储在数据库中。(纬度、经度、ID、时间戳)。关于该对象的其他 150 列不常用的被移到表存储中。

  • 在表存储中,是否应该将这些全部存储在一行中,所有 150 列在一列而不是多行中使用不多?

对于数据库中这 500 万个对象中的每一个,都有关于它们的某些信息(温度读数、轨迹等)。轨迹数据过去存储在 SQL 中(约 300 行/对象),但为了成本效益而被移动到表存储中。目前它们以关系方式存储在表存储中,每行看起来像(PK:ID,RK:ID-Depth-Date,X,Y,Z)。

  • 目前,获取许多轨迹数据需要时间。在我们的例子中,表存储似乎很慢。我想提高获取的性能。数据是否应该存储在每个对象的轨迹有 1 行并且所有 XYZ 都以 JSON 格式存储在 1 列中的位置?而不是获取 300 行,它只需要获取 1 行。
  • 表存储是存储所有这些数据的最佳位置吗?如果我想在某个测量深度获得 X、Y、Z,我必须获取整行并解析 JSON。这可能是一种权衡。
  • 在可以有(5,000,000 x 300 行)轨迹数据的 sql 数据库中拥有轨迹数据、读数等是否可行。这里还有一些关于它可能存在的对象的信息(5,000,000 x 20,000 行)。这对于 SQL 数据库来说可能太多了,并且必须在 Azure 云存储中。如果是这样,JSON 选项会是最好的选项吗?权衡是,如果我想要一个 1000 行的部分,我将不得不获取整个表,但是,这并不比查询 20,000 行快。我大概可以将数据分成 1000 行的集合,并使用 sql 作为元数据来找出我需要从云存储中获得哪些数据集。

在为我的应用程序抓取数据时,我几乎无法理解如何将数据分组并将其格式化为 Azure 云表,以便高效、快速地获取数据。

这是我的数据示例以及我如何获取它: http: //pastebin.com/CAyH4kHu

4

1 回答 1

0

作为表存储的替代方案,您可以考虑使用 Azure SQL DB Elastic Sc​​ale 在多个 Azure SQL DB 之间传播轨迹数据(和关联的对象元数据)。这使您可以克服单个数据库的容量(和计算)限制。您将能够有效地执行特定于对象的查询或插入,并且可以选择跨多个数据库执行查询——假设您正在使用 .Net 应用程序层。您可以通过查看http://azure.microsoft.com/en-us/documentation/articles/sql-database-elastic-scale-get-started/了解更多信息

于 2015-01-24T05:16:57.473 回答