Overview
您可以通过指定存档规则来配置要存档的时间序列集合中的数据。存档规则是时间字段和数值的组合,该数值表示Atlas 集群在存档数据之前存储数据的天数。
MongoDB将时间序列数据存储在存储桶文档中。Online 存档仅对完整存储桶文档进行操作,从而保留了列压缩效率。
要配置 Atlas 集群以进行在线存档,请执行以下操作:
通过提供集合命名空间、
timeField以及在集群上保留数据的天数来创建存档规则。(可选)指定常用查询字段对存档数据进行分区。
在集群上配置 Online Archive 时,Atlas 会在您的集群上创建 2 个联合数据库实例,一个仅用于您的存档,一个用于您的集群和存档。
有关应用于所有在线存档的限制,请参阅限制。
先决条件
在配置 Online 存档之前,请确保您的Atlas 集群运行正常。如果一个节点关闭,存档将保持 PENDING 状态,直到集群完全正常运行。
必需的访问权限
要创建在线存档,您必须具有该项目的 Project Data Access Admin 或更高访问权限。
要查看存档是否可用,您必须拥有 Project Read Only 或更高级别的访问权限。
通过Atlas CLI配置
要使用 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。
通过Atlas Administration API配置
要通过 API 配置在线存档,请向 OnlineArchives 终结点发送 POST 请求。
如果集群已具有针对同一数据库和集合具有相同存档规则的 Active在线存档,则操作失败。但是,如果现有在线存档处于 Paused 或 Deleted 状态,则会创建新的在线存档并将其状态设立为 Active。要学习;了解有关语法和选项的更多信息,请参阅API。
通过用户界面配置
要为时间序列集合配置在线存档,请在Atlas用户用户界面中:
在Atlas中,转到项目的 Clusters 页面。
如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含所需项目的组织。
如果尚未显示,请从导航栏的Projects菜单中选择所需的项目。
在侧边栏中,单击 Database 标题下的 Clusters。
会显示集群页面。
查看 Online Archive Overview并单击 Next继续。
通过提供以下信息来创建 Archiving Rule。
在 Namespace 字段中指定集合命名空间,其中包括数据库名称、点 (
.) 分隔符和集合名称(即<database>.<collection>)。Online Archive 一旦创建,就无法修改命名空间。
在
[control.closed, control.min.<date_field>]上为根本的system.bucket.<collection>创建复合索引,以确保最佳性能。选择您要存储存档数据的云提供商地区。
重要提示:我们建议您尽可能选择与集群相同的地区,因为如果选择不同的地区,可能会产生更高的数据传输费用。
Atlas 根据部署集群的云提供商显示云提供商地区。对于多云集群,Atlas 显示最高优先级提供商的云提供商地区。Atlas 会在与您的集群部署地区相近或完全匹配的地区旁边显示 。
对于部署在 AWS 上的 Atlas 集群,您可以选择以下地区之一:
Data Federation区域Amazon Web Services地区Atlas 区域美国北弗吉尼亚州
us-east-1US_EAST_1美国俄勒冈州
us-west-2US_WEST_2巴西圣保罗
sa-east-1SA_EAST_1爱尔兰
eu-west-1EU_WEST_1英国英格兰伦敦
eu-west-2EU_WEST_2德国法兰克福
eu-central-1EU_CENTRAL_1Tokyo, Japan
ap-northeast-1AP_NORTHEAST_1Seoul, South Korea
ap-northeast-2AP_NORTHEAST_2印度孟买
ap-south-1AP_SOUTH_1新加坡
ap-southeast-1AP_SOUTHEAST_1澳大利亚悉尼
ap-southeast-2AP_SOUTHEAST_2加拿大魁北克省蒙特利尔
ca-central-1CA_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 区域Atlas 区域Virginia, USA
eastus2US_EAST_2巴西圣保罗
brazilsouthBRAZIL_SOUTH荷兰
westeuropeEUROPE_WESTAtlasGoogle 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 区域Atlas 区域Iowa, USA
us-central1IOWA_USA比利时
europe-west1BELGIUM_EU重要提示: Atlas创建在线存档后,您将无法修改存储地区。
选中 This is a Time Series Collection 复选框并指定以下内容:
在Atlas 集群中保留数据的天数。
指定日期字段的日期格式。 日期字段值必须采用ISODate格式。
重要
Atlas在第一次存档运行期间运行索引充分性查询,以确定存档进程的效率。如果扫描的文档数与返回的文档数之间的差值为 10 或更多,则查询结果将触发
Index Sufficiency Warning。此警告表明您的索引不足,无法实现有效的存档进程。对于基于日期的存档,必须为日期字段索引。对于使用表达式的自定义条件, Atlas可能会先转换一个值,然后再根据查询对其进行评估。在检测到足够的索引后,索引充分性查询将停止运行。如果集合上的索引后来被删除并导致存档过程变慢,Atlas 不会发出
Index Sufficiency Warning。
指定您希望在在线存档中存储数据的天数,以及您希望Atlas运行存档作业的时间窗口。
(可选)指定 Data Retention Period(删除期限限制)。
默认情况下,Atlas 不会删除存档数据。但是,如果您指定 Data Retention Period(删除期限限制),则可以在
7到9125天(25 年)的范围内指定存档数据保留期限。Atlas 会在您在指定的天数后删除存档数据。该数据过期规则在您设置 Data Retention Period(删除期限限制)的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字段。
选择仅包含Amazon Web Services支持的字符的字段。要学习;了解有关应避免使用的字符的更多信息,请参阅创建对象键名称。Atlas会跳过且不会存档包含不受支持的字符的文档。
选择不包含多态数据的字段。Atlas 从集合中抽取 10 个文档,以确定分区字段的数据类型。如果文档中指定的字段值与同一集合中其他文档中的值不匹配,则 Atlas 不会将文档存档。
选择您经常查询的字段,并从第一个位置查询次数最多的字段到最后一个位置查询次数最少的字段进行排序。
重要提示:对于 6 月 2023之前创建的在线存档, MongoDB不建议使用关联基数较高的 string 类型字段作为在线存档的查询字段。对于具有高关联基数的 string 类型的字段, Atlas会创建大量分区。这不适应用6 月 2023之后创建的在线存档。要学习;了解更多信息,请阅读MongoDB 博客帖子。
Atlas支持以下分区属性类型:
datedoubleintlongobjectIdstringboolean
如需详细了解支持的分区属性类型,请参阅分区属性类型。
重要提示:您可以使用explain命令返回用于满足查询的数据分区的信息。要学习;了解详情,请参阅 explain。
虽然分区可以提高查询性能,但不包含这些字段的查询需要对所有存档文档进行全面集合扫描,这将花费更长时间并增加成本。 要了解有关分区如何提高 Atlas Data Federation 查询性能的更多信息,请参阅 S3 中的数据结构。
(可选)在mongosh中复制并运行显示的查询,以创建所需的索引。这可确保对数据进行索引以获得最佳性能。
验证并确认存档规则。
在 Confirm an online archive 标签页中单击 Begin Archiving。
单击 Begin Archiving(开始存档)窗口中的 Confirm(确认)。
警告:文档进入存档队列后,就无法再编辑该文档。请参阅从在线 存档恢复特定文档,将存档数据移回实时Atlas 集群。