配置 Online Archive
Overview
您可以通过指定存档规则来配置集合中要存档的数据。存档规则:
针对时间序列集合,它是用于确定何时存档数据的时间和表示 Atlas 集群存储数据的天数的数值的组合。
标准集合可以是下列其中一项:
用于确定何时存档数据的日期和表示 Atlas 集群存储数据的天数的数值的组合。
用于选择要存档的文档的自定义查询。
要配置 Atlas 集群以进行在线存档,请执行以下操作:
通过提供集合命名空间,以及用于选择要存档的集合数据的条件,来创建存档规则。
(可选)指定常用查询字段对存档数据进行分区。
在集群上配置 Online Archive 时,Atlas 会在您的集群上创建 2 个联合数据库实例,一个仅用于您的存档,一个用于您的集群和存档。
注意
在启动 Online 存档之前, Atlas 集群必须正常运行。 示例,如果一个节点关闭,它将保持 PENDING
状态。
必需的访问权限
要创建在线存档,您必须具有该项目的 Project Data Access Admin
或更高访问权限。
要查看存档是否可用,您必须拥有 Project Read Only
或更高级别的访问权限。
通过 Atlas CLI 配置 Online Archive
注意
7 天后,在线存档不会存档大小低于 5 MiB 的数据。Atlas 创建存档后 7 天内,Atlas 会立即存档所有数据。7 天后,Atlas 仅当您的数据大小达到 5 MiB 时才会存档数据。
要使用 Atlas CLI 为集群创建在线存档,请运行以下命令:
atlas clusters onlineArchives create [options]
如需使用 Atlas CLI 观察特定在线存档是否可用,请运行以下命令:
atlas clusters onlineArchives watch <archiveId> [options]
要详细了解先前命令的语法和参数,请参阅 Atlas CLI 文档了解 atlas clusters onlineArchives create 和 atlas clusters onlineArchives watch。
通过 API 配置 Online Archive
注意
7 天后,在线存档不会存档大小低于 5 MiB 的数据。Atlas 创建存档后 7 天内,Atlas 会立即存档所有数据。7 天后,Atlas 仅当您的数据大小达到 5 MiB 时才会存档数据。
要通过 API 配置在线存档,请向 OnlineArchives 端点发送 POST
请求。
注意
如果使用 DATE
标准,则必须指定分区键包含 date
字段。
如果集群已有 Active
Atlas Online Archive ,对同一数据库和集合具有相同的存档规则,则操作将失败。 但是,如果现有Atlas Online Archive处于 Paused
或 Deleted
状态,则会创建新的Atlas Online Archive并将其状态设置为 Active
。 要了解有关语法和选项的更多信息,请参阅API。
通过用户界面配置 Online Archive
注意
7 天后,在线存档不会存档大小低于 5 MiB 的数据。Atlas 创建存档后 7 天内,Atlas 会立即存档所有数据。7 天后,Atlas 仅当您的数据大小达到 5 MiB 时才会存档数据。
要配置在线存档,请在Atlas 用户界面中:
AtlasGoClusters在Atlas中,Go项目的 页面。
如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含所需项目的组织。
如果尚未显示,请从导航栏的Projects菜单中选择所需的项目。
如果尚未出现,请单击侧边栏中的 Clusters(集群)。
会显示集群页面。
Go集群的Online Archive 页面。
单击集群的名称。
单击 Online Archive 标签页。
显示Online 存档 (在线存档)页面。
查看 Online Archive Overview并单击 Next继续。
Archiving Rule通过提供以下信息来创建 。
在 Namespace 字段中指定集合命名空间,其中包括数据库名称、点 (
.
) 分隔符和集合名称(即<database>.<collection>
)。Online Archive 一旦创建,就无法修改命名空间。
选择您要存储存档数据的云提供商地区。
提示
我们建议您尽可能选择与集群相同的区域,因为如果选择不同的区域,可能会产生更高的数据传输成本。
Atlas 根据部署集群的云提供商显示云提供商地区。对于多云集群,Atlas 显示最高优先级提供商的云提供商地区。Atlas 会在与您的集群部署地区相近或完全匹配的地区旁边显示 。
对于部署在 AWS 上的 Atlas 集群,您可以选择以下地区之一:
Data Federation 区域AWS 区域Virginia, USA
us-east-1
美国俄勒冈州
us-west-2
巴西圣保罗
sa-east-1
爱尔兰
eu-west-1
英国伦敦
eu-west-2
德国法兰克福
eu-central-1
Tokyo, Japan
ap-northeast-1
印度孟买
ap-south-1
新加坡
ap-southeast-1
澳大利亚悉尼
亚太东南部-2
加拿大蒙特利尔
ca-central-1
对于在Azure上部署的Atlas集群,只有当集群上没有使用其他云提供商的其他在线存档时,您才能选择Azure地区。 如果集群上的现有 Online 存档使用Amazon Web Services或Google Cloud Platform存储存档数据,则您只能为该集群上的任何新 Online Archive 选择Amazon Web Services或Google Cloud Platform地区。
注意
对于在Azure上部署的集群,如果您有使用Amazon Web Services或Google Cloud Platform的现有 Online Archive,并且您将其删除,则必须等待五天才能创建使用Azure的新 Online 存档 。 在此五天内,任何创建新 Online 存档的尝试仍默认为您最初选择的云提供商。
对于部署在 Azure 上的 Atlas 集群,您可以选择以下地区之一:
Data Federation 区域Azure 地区Virginia, USA
US_EAST_2
荷兰
EUROPE_WEST
AtlasGoogle Cloud Platform对于部署在Google Cloud Platform 上的 集群,只有当集群上没有使用其他云提供商的其他 Online Archive 时,您才能选择 地区。如果集群上的现有 Online 存档使用Amazon Web Services或Azure来存储存档数据,则您只能为该集群上的任何新 Online Archive 选择Amazon Web Services或Azure区域。
注意
对于部署在Google Cloud Platform上的集群,如果您有使用Amazon Web Services或Azure的现有 Online Archive,而您将其删除,则必须等待五天才能创建使用Google Cloud Platform的新 Online 存档 。 在此五天内,任何创建新 Online 存档的尝试仍默认为您最初选择的云提供商。
Atlas对于部署在 上的Google Cloud Platform 集群,您可以选择以下区域之一:
Data Federation 区域Google Cloud 地区比利时
europe-west1
Iowa, USA
us-central1
注意
Atlas 创建在线存档后,您将无法修改存储区域。
为要存档的收藏类型指定选择要存档的文档所依据的标准。
对于标准集合,请在 Atlas 用户界面的 Date Match 或 Custom Criteria 标签页下指定选择要存档的文档的条件。
要使用自定义过滤从集合中选择文档,请指定要运行的有效JSON过滤。 Atlas将指定的自定义过滤与db. 集合.find(过滤) 命令。 不能使用空文档参数 (
{}
) 返回所有文档。 您可以使用MongoDB Atlas操作符(例如$expr )来利用所有聚合操作符,如以下示例所示。注意
以下示例假定所有文档都包含具有日期时间值的
bucket_end_date
字段。 在以下示例中, Atlas存档所有不包含bucket_end_date
字段的文档以及bucket_end_date
不是日期时间值的所有文档。例子
在此自定义过滤示例中,当当前日期超过文档中
bucket_end_date
字段中的日期时, Atlas会从当前日期中减去 30 天(以毫秒为单位),然后在经过这么多天、小时和分钟后存档数据。{ "$expr": { "$lte": [ "$bucket_end_date", { "$subtract": [ "$$NOW", 2592000000 ] } ] } } 在此自定义过滤示例中,当当前日期超过
objectId
内的日期时, Atlas会从当前日期中减去 30 天(以毫秒为单位),然后在经过这么多天、小时和分钟后存档数据。{ "$expr": { "$lte": [ {"$toDate": "$_id"}, { "$subtract": [ "$$NOW", 2592000000 ] } ] } } 如果您在自定义过滤中使用$expr ,有时Atlas 集群可能无法使用索引来存档数据。
注意
$NOW
仅在运行MongoDB 4.2或更高版本的Atlas集群上支持。注意
Atlas 运行索引充分性查询以确定存档过程的效率。如果扫描的文档数与返回的文档数之间的差值为 10 个或更多个,则查询结果会触发
Index Sufficiency Warning
(索引充分性警告)。此警告表明您的索引不足,无法实现有效的存档过程。对于基于日期的存档,您必须为日期字段创建索引。对于使用表达式的自定义条件,Atlas 可能会先转换一个值,然后再根据查询对其进行评估。
指定您希望在在线存档中存储数据的天数,以及您希望Atlas运行存档作业的时间窗口。
(可选)指定 Deletion Age Limit(删除期限限制)。
默认情况下,Atlas 不会删除存档数据。但是,如果您指定 Deletion Age Limit(删除期限限制),则可以在
7
到9125
天(25 年)的范围内指定存档数据保留期限。Atlas 会在您在指定的天数后删除存档数据。该数据过期规则在您设置 Deletion Age Limit(删除期限限制)的24
小时后生效。警告
Atlas 删除数据后,您将无法恢复数据。
(可选)指定 Schedule Archiving Window(删除期限限制)。
默认情况下,Atlas 会定期运行查询来存档数据。不过,您可以切换Schedule Archiving Window以明确安排您希望 Atlas 存档数据的时间窗口。您可以指定以下内容:
频率。您可以选择每天、一周中的特定日期或每月的特定日期运行作业。如果您希望将数据存档作业安排在每月 29 日、30 日或 31 日,则 Atlas 在没有这些日期的月份(例如二月)不会运行存档作业。
时间窗口,以小时为单位。选择您希望 Atlas 运行数据归档作业的时间段。您必须指定至少两个小时。如果正在运行的作业在时间窗口内未完成,Atlas 会继续运行作业直到完成。
指定集合中两个最常查询的字段,以在 Online Archive 中创建分区。
注意
存档必须至少有一个分区字段。
分别在Second most commonly queried field和Third most commonly queried field字段中输入集合中最多两个最常查询的字段。 要指定嵌套字段,请使用点表示法。 请勿在使用点表示法指定的嵌套字段两边包含引号 ( ""
)。
警告
不能指定包含句号 (.
) 的字段名进行分区。
所指定的字段用于对存档数据进行分区。分区类似于文件夹。对于 Date Match 条件,日期字段默认处于分区的第一个位置。如果您经常按另一个字段进行查询,则可以将此字段移动到分区的第一个位置。
此路径中所列字段的顺序与其在复合索引中的顺序同样重要。指定路径中的数据会先按第一个字段的值进行分区,接着按下一字段的值进行分区,依此类推。Atlas 支持使用分区对指定字段进行查询。
例如,假设您正为 sample_mflix
数据库中的 movies
集合配置在线存档。如果已存档字段为 released
日期字段,而您已将其移至第三个位置,则第一个被查询的字段为 title
,而第二个被查询字段则为 plot
,同时您的分区将如下所示:
/title/plot/released
Atlas 首先为 title
字段创建分区,然后为 plot
字段创建分区,最后为 released
字段创建分区。Atlas 使用分区来处理对以下字段的查询:
title
字段。title
字段和plot
字段,title
字段、plot
字段和released
字段。
Atlas 还可以使用分区来支持对 title
和 released
字段的查询。但是,在这种情况下,Atlas 在支持查询方面的效率不如查询仅针对 title
和 plot
字段。分区按顺序解析;如果查询省略特定分区,Atlas 在使用该分区之后的任何分区时效率会降低。由于对 title
和 released
的查询省略了 plot
,因此 Atlas 使用 title
分区比 released
分区更有效地支持此查询。
Atlas 无法使用分区策略来有效支持对此处未指定字段的查询。此外,Atlas 无法使用分区来支持包含以下字段但不包含 title
字段的查询:
plot
字段。released
字段,或plot
和released
字段。
分别在Most commonly queried field和Second most commonly queried field字段中输入文档中最多两个最常查询的字段。 要指定嵌套字段,请使用点表示法。 请勿在使用点表示法指定的嵌套字段两边加上引号 ( ""
)。
指定字段用于对存档数据进行分区。 分区类似于文件夹。 路径中列出的字段顺序很重要,就像在复合索引中一样。 指定路径中的数据首先按第一个字段的值进行分区,然后按下一个字段的值进行分区。 Atlas支持使用分区对指定字段进行查询。
示例,假设您正在为sample_mflix
数据库中的movies
集合配置在线存档。 如果查询次数最多的字段是genres
字段,第二次查询的字段是title
,则分区将如下所示:
/genres/title
Atlas首先为genres
字段创建分区,然后为title
字段创建分区。 Atlas使用分区对以下字段进行查询:
genres
字段。genres
字段和title
字段。
Atlas还可以使用分区来支持仅对title
字段的查询。 但是,在这种情况下, Atlas在支持查询方面的效率不如查询仅针对genres
字段或针对genres
和title
字段。 按顺序解析分区;如果查询省略了特定分区, Atlas在使用该分区之后的任何分区时效率会降低。 由于对title
的查询省略了genres
, Atlas不使用genres
分区来支持此查询。 此外, Atlas在使用分区支持对title
字段和genres
字段进行查询时,效率较低。
Atlas 无法使用分区来支持此处未指定字段的查询。
分别在Second most commonly queried field和Third most commonly queried field字段中输入集合中最多两个最常查询的字段。 要指定嵌套字段,请使用点表示法。 请勿在使用点表示法指定的嵌套字段两边包含引号 ( ""
)。
警告
不能指定包含句号 (.
) 的字段名进行分区。
所指定的字段用于对存档数据进行分区。分区类似于文件夹。对于 Date Match 条件,日期字段默认处于分区的第一个位置。如果您经常按另一个字段进行查询,则可以将此字段移动到分区的第一个位置。
此路径中所列字段的顺序与其在复合索引中的顺序同样重要。指定路径中的数据会先按第一个字段的值进行分区,接着按下一字段的值进行分区,依此类推。Atlas 支持使用分区对指定字段进行查询。
例如,假设您正为 sample_mflix
数据库中的 movies
集合配置在线存档。如果已存档字段为 released
日期字段,而您已将其移至第三个位置,则第一个被查询的字段为 title
,而第二个被查询字段则为 plot
,同时您的分区将如下所示:
/title/plot/released
Atlas 首先为 title
字段创建分区,然后为 plot
字段创建分区,最后为 released
字段创建分区。Atlas 使用分区来处理对以下字段的查询:
title
字段。title
字段和plot
字段,title
字段、plot
字段和released
字段。
Atlas 还可以使用分区来支持对 title
和 released
字段的查询。但是,在这种情况下,Atlas 在支持查询方面的效率不如查询仅针对 title
和 plot
字段。分区按顺序解析;如果查询省略特定分区,Atlas 在使用该分区之后的任何分区时效率会降低。由于对 title
和 released
的查询省略了 plot
,因此 Atlas 使用 title
分区比 released
分区更有效地支持此查询。
Atlas 无法使用分区策略来有效支持对此处未指定字段的查询。此外,Atlas 无法使用分区来支持包含以下字段但不包含 title
字段的查询:
plot
字段。released
字段,或plot
和released
字段。
选择仅包含Amazon Web Services支持的字符的字段。 要详细学习;了解应避免使用的字符,请参阅 创建对象键名称 。Atlas会跳过且不会存档包含不受支持的字符的文档。
选择不包含多态数据的字段。Atlas 从集合中抽取 10 个文档,以确定分区字段的数据类型。如果文档中指定的字段值与同一集合中其他文档中的值不匹配,则 Atlas 不会将文档存档。
选择您经常查询的字段,并从第一个位置查询次数最多的字段到最后一个位置查询次数最少的字段进行排序。 例如,如果您经常查询日期字段,则将日期字段保留在第一个位置。但如果您经常查询另一个字段,则该字段应该位于第一个位置。
注意
对于 6 月2023之前创建的在线存档,MongoDB 不建议具有较高关联基数的string
类型字段作为在线存档的查询字段。 对于具有高关联基数的string
类型的字段,Atlas 会创建大量分区。 这不适用于 6 月2023之后创建的在线存档。 要了解更多信息,请阅读MongoDB Blog文。
Atlas支持以下分区属性类型:
date
double
int
long
objectId
string
boolean
如需详细了解支持的分区属性类型,请参阅分区属性类型。
虽然分区可以提高查询性能,但不包含这些字段的查询需要对所有存档文档进行全面集合扫描,这将花费更长时间并增加成本。 要了解有关分区如何提高 Atlas Data Federation 查询性能的更多信息,请参阅 S3 中的数据结构。
单击 Next 以查看并确认在线存档设置。 您可以查看以下存档规则设置:
数据库和集合的名称
云提供商名称和云提供商区域
日期字段的名称(仅适用于Date Match)
在 Atlas 集群上保留数据的天数(仅适用于 Date Match)
删除存档数据的天数
存档数据的频率和时间窗口
用于识别存档数据的自定义查询(仅适用于 Custom Criteria)
分区字段
如果需要,请单击Back编辑这些设置。
(可选)在mongosh
中复制并运行显示的查询,以创建所需的索引。这可确保对数据进行索引以获得最佳性能。
验证并确认存档规则。
在 Confirm an online archive 标签页中单击 Begin Archiving。
单击 Begin Archiving(开始存档)窗口中的 Confirm(确认)。
注意
一旦您的文档进入存档队列,就无法再编辑该文档。要将存档数据移回实时 Atlas 集群,请参阅恢复存档数据。
限制
每个集群最多可以创建 50 个在线存档,每个集群中最多可以有 20 个在线存档处于活动状态。适用以下限制:
您可以在同一命名空间中配置多个 Online Archive,但在任何给定时间只能有一个处于活动状态。
您不能在同一集合的相同字段上创建多个在线存档。
在以下情况下,您无法访问在线存档:
集群的主要区域完全中断。
存储存档数据的 AWS S3 发生中断。
存档规则不能用于多个集合。
注意
如果您的目标是将多个集合中的数据存档,则必须为每个集合创建存档规则。
7 天后,您无法存档大小低于 5 MiB 的数据。Atlas 创建存档后 7 天内,Atlas 会存档所有数据。7 天后,仅当您的数据大小达到 5 MiB 时,Atlas 才会存档数据。
Atlas存档数据时,避免更新或插入符合存档条件的文档。 否则, Atlas可能会在存档运行期间捕获不一致的数据快照。 如果发生更新,则存档文档的版本不确定。