【问题标题】:How to store the index separately from the data on Azure?如何将索引与 Azure 上的数据分开存储?
【发布时间】:2010-08-16 21:35:10
【问题描述】:

我读过很多网站将索引与数据分开存储。

特别是在 Azure 上,索引将存储在 Azure SQL 中,数据将存储在 Azure 表存储中

据说这会提高性能并允许您存储更多数据并有效地查询它。

我不确定如何构建一个系统来做到这一点。有人能解释一下这个过程以及外部索引是如何工作的吗?

当您希望在不同的列上有二级索引时会发生什么,它是如何工作的?

当您更新/删除/添加数据时会怎样?索引+实际数据如何更新?

【问题讨论】:

  • 这里的“单独”是什么——在单独的文件、单独的盒子或单独的大陆上?
  • 索引存储在Azure SQL中,数据存储在Azure Table Storage中。

标签: sql database architecture indexing azure


【解决方案1】:

如果您不希望在 Sql 中拥有索引,请尝试使用像 Lucene.Net 这样的索引引擎。在我的项目中,我将数据存储在 Azure 表存储中,并在 Lucene 索引中对其进行索引。 Lucene.Net 有一个wrapper,可在 Azure 中使用。 这样你就不需要 Sql。表存储比 Azure Sql 便宜。

【讨论】:

    【解决方案2】:

    对于常规聚集索引和非聚集索引也是如此。聚集索引保存表中的所有数据,非聚集索引只保存索引的列以及返回表的行定位器(如果它是堆(意味着没有聚集索引)或来自聚集索引的键)。

    您拥有的索引越多,更新、删除和插入的成本就越高,因为在插入表时必须维护所有这些索引

    因此,您可以将数据放在驱动器 D 上,并将索引放在驱动器 E 上的另一个文件组中

    此外,SQL Azure 数据库不支持堆表,表必须具有聚集索引。如果在没有聚集约束的情况下创建表,则必须先创建聚集索引,然后才能对表进行插入操作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-11-29
      • 1970-01-01
      • 1970-01-01
      • 2018-01-01
      • 2014-03-23
      • 2021-11-10
      • 2010-10-05
      相关资源
      最近更新 更多