前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >salesforce零基础学习(九十七)Big Object

salesforce零基础学习(九十七)Big Object

作者头像
Zero-Zhang
发布于 2020-10-30 02:32:57
发布于 2020-10-30 02:32:57
1.3K00
代码可运行
举报
运行总次数:0
代码可运行

本篇参考:

https://developer.salesforce.com/docs/atlas.en-us.224.0.bigobjects.meta/bigobjects/async_query_overview.htm

https://trailhead.salesforce.com/content/learn/modules/big_objects

https://developer.salesforce.com/docs/atlas.en-us.salesforce_large_data_volumes_bp.meta/salesforce_large_data_volumes_bp/ldv_deployments_infrastructure_indexes.htm

我们在salesforce学习工作中,接触到很多的 标准的 object ,自定义 object 以及外部object。我们使用SOQL / SOSL 进行搜索,熟知他们的各种limitation,查询50000,DML 10000等等。 当数据量很多时,salesforce推荐我们where查询时要适当使用索引字段增快查询效率。我们做自定义开发开始效率都很好,随着数据越来越多,performance问题可能慢慢的出来。所以设计表的时候,表潜在的数据量可能会达到多少也是一个很重要的思考。 salesforce有一个 Big Object的概念,针对特别庞大的数据,可以使用 Big Object进行存储。所以问题来了?多少数据量算是庞大?

十万? 百万? 千万? 再往上好像很难在想象。不过在实际的一些特殊的业务场景这些数据量可能是远远不够的。举个例子,金融 / 保险等对钱敏感企业,可能会关心每一步的履历操作,针对每一步都需要记录,后期便于审计和追踪。这种数据通常会达到数以亿计。在salesforce中,Big Object 为十亿或更多记录提供一样的性能,并且可以通过一组标准api访问org或外部系统。也就是说如果潜在数据量可能达到10亿及以上,推荐使用 Big Object。

一. 应用场景与Big Object创建

在Salesforce中通常会有以下几种场景可能用到Big Object:

Customer 360:您有很多想要存储的客户信息。从忠诚度计划到交易、订单和账单信息,使用一个Big Object来跟踪每一个细节。 审计和追踪:salesforce提供了 field tracking的功能,每个表最多可以20个字段进行tracking,保留最多18个月,如果标准的满足不了审计和追踪的需要,可以考虑使用 big object实现。 历史归档:需要保持对历史数据的访问,以便进行大数据分析等目的情况下,可以考虑使用Big Object。

一. Big Object创建

1. Setup 搜索 big objects 以后选择Big Objects既可以查看当前的所有的 Big Objects,我们点击 new就可以新建一个 Big Object. 下图中是我们创建的一个 big object。可以看到目前的状态是 In Development,只有存在自定义索引字段才可以变成 development。

接下来我们按照要求创建一些自定义的字段,因为需要索引字段,索引字段前提是自定义字段要求勾选 required,所以真实的项目需要设计好哪些字段必填,哪些字段需要成为索引字段,一旦设计完索引字段便无法进行修改,想要修改只能重新创建 big object. 当我们创建完自定义字段以后创建自定义索引,索引最多只允许5个自定义的字段,最少也需要1个。

创建完字段接下来我们就需要编辑当前的 big object,将 object的 deployment status修改成 Deployed,则 一个Big Object创建完成。

这里创建和普通的 object创建还是有一些区别的:

1. 后缀不同,普通的是 __c, big object是 __b. 2. 可选择的字段类型不同。 big object所能选择的类型更少,只可以选择 Lookup, Date/time, Email, Number, Phone, Text, TextArea(Long),URL.

二. 数据创建删除和查询

在聊如何创建和查询数据以前,先聊一下上面提到的序列 index。 我们以前学习SQL server等关系型数据库时,也接触过序列的概念。一言以蔽之:索引是对数据库表中一个或多个列的值进行排序的结构。索引是经过某种算法优化的,所以在针对某个索引字段查询时,查询次数会少很多,查询性能自然得到提升,我们可以将数据库索引好比是一本书前面的目录,能加快数据库的查询速度。salesforce object很多标准字段带了索引,可以查看上面的链接进行详细查看。

数据库索引有三种类型: 唯一索引 / 主键索引 / 聚集索引。 salesforce big object 应该是基于唯一索引来实现的。唯一索引是不允许其中任何两行具有相同索引值的索引。根据上面的表结构,索引使用 Rider_Account__c 以及 Start_Time__c 两个值共同作用,所以当有两条记录的这两个值均相同情况下,数据库只会创建一条数据。

big object可以通过 bulk api以及apex来创建, bulk api也是一个很大的章节,这里不做讲解,后期争取单独讲一下,这里的创建使用apex方式来进行。

apex通过 insertImmediate方法去插入数据,如果索引对应的字段值都是相同的,则只会生成一条数据,后面的会覆盖前面的值。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Datetime now = System.now();
List<Rider_History__b> riderHistoryList = new List<Rider_History__b>();
Rider_History__b riderHistory1 = new Rider_History__b();
riderHistory1.Start_Time__c = now;
riderHistory1.Rider_Account__c = 'test';
riderHistory1.Rider_Rating__c = 12.1;
riderHistory1.Service_Type__c = 'test';
riderHistory1.Start_Location_Latitude__c = 12.123;
riderHistory1.Start_Location_Longitude__c = 123.12;
riderHistoryList.add(riderHistory1);
Rider_History__b riderHistory2 = new Rider_History__b();
riderHistory2.Start_Time__c = now;
riderHistory2.Rider_Account__c = 'test';
riderHistory2.Rider_Rating__c = 13.2;
riderHistory2.Service_Type__c = 'test';
riderHistory2.Start_Location_Latitude__c = 12.123;
riderHistory2.Start_Location_Longitude__c = 123.12;
riderHistoryList.add(riderHistory2);
Database.insertImmediate(riderHistoryList);

可以查看到数据库的内容如下

删除时使用 deleteImmediate方法。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
List<Rider_History__b> historyList = [SELECT Id,Rider_Account__c,Start_Time__c from Rider_History__b WHERE Rider_Account__c = 'test' ];
Database.deleteImmediate(historyList);

展示结果:

说完创建和删除接下来说查询。big object支持两种查询,同步 SOQL以及异步的SOQL。

如果 可以确定查询出来的数据量少想要在 apex中使用,我们可以使用SOQL进行查询,但是不是所有的SOQL语法可以使用。如果想要使用这种同步的SOQL,有以下的限制:

  • 当构建 序列的query时, query的第一个字段和最后一个字段间不要有空隙;
  • !=, LIKE, NOT IN, EXCLUDES, and INCLUDES 不支持;
  • 聚合函数不支持;
  • 不要使用Id字段进行查询;
  • 查询时必须包括索引字段,非索引字段不能作为where后查询的条件。

部分截图

异步SOQL以及在report / dashboard使用自行查看上方文档。

三. Big Object 限制

由于大对象的运行规模很大,它们不能完全像非大对象那样工作。使用大对象时,请记住以下几点。

大对象仅支持对象和字段权限。 部署大对象后,您将无法编辑或删除索引。要更改索引,请从一个新的大对象开始。 SOQL关系查询基于从选择字段列表中的大对象到标准或自定义对象的查找字段(不在过滤器或子查询中)。 大对象支持自定义Salesforce Lightning和Visualforce组件,而不支持标准UI元素(主页,详细信息页面,列表视图等)。 每个组织最多可以创建100个大对象。大对象字段的限制类似于自定义对象的限制,并取决于您单位的许可类型。 大对象不支持包含大对象,标准对象和自定义对象的交易。 为了支持大对象中的数据规模,您不能使用触发器,流程,流程和Salesforce应用。

总结:篇中简单描述 big object的使用,详情自行查看官方文档。篇中有错误欢迎指出,有不懂欢迎留言。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-10-24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
salesforce 零基础开发入门学习(三)sObject简单介绍以及简单DML操作(SOQL)
本文主要介绍了Salesforce SOQL的基础知识,包括什么是SOQL、如何查询数据、如何更新数据、如何删除数据、如何批量处理数据等。同时,还介绍了SOQL中的where语句、order by语句、limit语句等基本语法和示例。最后,还介绍了如何通过SOQL实现多表关联查询,并给出了相应的示例代码。
Zero-Zhang
2018/01/05
2.4K0
salesforce 零基础开发入门学习(三)sObject简单介绍以及简单DML操作(SOQL)
salesforce零基础学习(七十五)浅谈SOSL(Salesforce Object Search Language)
在工作中,我们更多操作的是一个表的对象,所以我们对SOQL的使用很多。但是有时候,我们需要对几个表进行查询操作,类似salesforce的全局搜索功能,这时,使用SOQL没法满足功能了,我们就需要使用
Zero-Zhang
2018/01/05
1.1K0
salesforce零基础学习(七十五)浅谈SOSL(Salesforce Object Search Language)
salesforce的功能_salesforce开发
161、【String.format escape curly braces – 转义花括号】:
全栈程序员站长
2022/11/01
7K0
salesforce的功能_salesforce开发
salesforce零基础学习(九十六)Platform Event浅谈
本篇参考:https://developer.salesforce.com/blogs/2018/07/which-streaming-event-do-i-use.html
Zero-Zhang
2020/05/08
1.2K0
salesforce零基础学习(一百二十七)Custom Metadata Type 篇二
salesforce零基础学习(一百一十一)custom metadata type数据获取方式更新
Zero-Zhang
2023/03/16
5780
salesforce零基础学习(一百二十七)Custom Metadata Type 篇二
salesforce零基础学习(一百零三)项目中的零碎知识点小总结(五)
本篇参考:Salesforce Admin篇(四) Security 之Two-Factor Authentication & Single Sign On
Zero-Zhang
2021/06/10
9860
Salesforce 大数据量处理篇(二)Index
https://developer.salesforce.com/docs/atlas.en-us.202.0.salesforce_large_data_volumes_bp.meta/salesforce_large_data_volumes_bp/ldv_deployments_infrastructure_indexes.htm
Zero-Zhang
2021/01/14
1K0
Salesforce 大数据量处理篇(二)Index
salesforce零基础学习(一百一十八)Restrict Rule
本篇参考: https://help.salesforce.com/s/articleView?id=sf.security_restriction_rule.htm&type=5 https://h
Zero-Zhang
2022/10/05
7170
salesforce零基础学习(一百一十八)Restrict Rule
salesforce零基础学习(一百零二)Limitation篇之 CPU Limit
本篇参考: https://help.salesforce.com/articleView?id=000339361&type=1&mode=1 https://developer.salesforc
Zero-Zhang
2021/04/01
9480
salesforce零基础学习(一百零二)Limitation篇之 CPU Limit
salesforce零基础学习(一百零五)Change Data Capture
https://developer.salesforce.com/docs/atlas.en-us.232.0.api_streaming.meta/api_streaming/using_streaming_api_durability.htm
Zero-Zhang
2021/07/14
7980
salesforce零基础学习(一百零五)Change Data Capture
salesforce零基础学习(八十六)Ajax Toolkit (VF页面中使用及javascript action使用)
Ajax Toolkit 参考文档:https://resources.docs.salesforce.com/212/latest/en-us/sfdc/pdf/apex_ajax.pdf 在项目中,我们有时会在自定义button或者action上使用javascript进行一些SOQL或者DML操作处理;有时会在VF页面中获取相关数据进行逻辑处理,或者进行简单的DML操作,这时候就会使用到Ajax Toolkit。 因为Ajax Toolkit操作数据信息是在浏览器端的,进行复杂的逻辑或者对大量数据处理
Zero-Zhang
2018/04/02
1.4K0
salesforce零基础学习(八十六)Ajax Toolkit (VF页面中使用及javascript action使用)
salesforce零基础学习(一百二十一)Limitation篇之Heap Size Limitation
 本篇参考: https://help.salesforce.com/s/articleView?id=000384468&type=1 https://help.salesforce.com/s/a
Zero-Zhang
2022/11/21
5200
salesforce零基础学习(一百三十八)零碎知识点小总结(十)
https://help.salesforce.com/s/articleView?id=release-notes.rn_apex_5level_SOQLqueries.htm&release=250&type=5
Zero-Zhang
2024/05/22
1500
salesforce零基础学习(一百三十八)零碎知识点小总结(十)
salesforce零基础学习(九十八)Salesforce Connect & External Object
https://trailhead.salesforce.com/en/content/learn/modules/lightning_connect
Zero-Zhang
2020/11/13
7770
salesforce零基础学习(九十八)Salesforce Connect & External Object
salesforce零基础学习(九十六)项目中的零碎知识点小总结(四)
https://developer.salesforce.com/docs/atlas.en-us.216.0.apexcode.meta/apexcode/apex_classes_keywords_sharing.htm
Zero-Zhang
2020/10/28
8780
salesforce零基础学习(九十六)项目中的零碎知识点小总结(四)
salesforce 零基础开发入门学习(五)异步进程介绍与数据批处理Batchable
本篇知识参考:https://developer.salesforce.com/trailhead/force_com_dev_intermediate/asynchronous_apex/async
Zero-Zhang
2018/01/05
2.1K1
Salesforce 大数据量处理篇(一)Skinny Table
本篇参考:https://developer.salesforce.com/docs/atlas.en-us.salesforce_large_data_volumes_bp.meta/salesforce_large_data_volumes_bp/ldv_deployments_infrastructure_skinny_tables.htm
Zero-Zhang
2021/01/07
8550
salesforce 零基础学习(二十)简单APP制作
Zero-Zhang
2018/01/05
1.1K0
salesforce 零基础学习(二十)简单APP制作
salesforce零基础学习(一百一十一)custom metadata type数据获取方式更新
https://developer.salesforce.com/docs/atlas.en-us.234.0.apexref.meta/apexref/apex_methods_system_custom_metadata_types.htm
Zero-Zhang
2022/03/22
5400
salesforce零基础学习(一百一十一)custom metadata type数据获取方式更新
Salesforce LWC学习(六) @salesforce & lightning/ui*Api Reference
上一篇中我们在demo中使用了很多的 @salesforce 以及 lightning/ui*Api的方法,但是很多没有细节的展开。其实LWC中针对这些module提供了很多好用的方法,下面对这两种进行详细介绍。
Zero-Zhang
2019/09/29
1.9K0
Salesforce LWC学习(六) @salesforce & lightning/ui*Api Reference
推荐阅读
salesforce 零基础开发入门学习(三)sObject简单介绍以及简单DML操作(SOQL)
2.4K0
salesforce零基础学习(七十五)浅谈SOSL(Salesforce Object Search Language)
1.1K0
salesforce的功能_salesforce开发
7K0
salesforce零基础学习(九十六)Platform Event浅谈
1.2K0
salesforce零基础学习(一百二十七)Custom Metadata Type 篇二
5780
salesforce零基础学习(一百零三)项目中的零碎知识点小总结(五)
9860
Salesforce 大数据量处理篇(二)Index
1K0
salesforce零基础学习(一百一十八)Restrict Rule
7170
salesforce零基础学习(一百零二)Limitation篇之 CPU Limit
9480
salesforce零基础学习(一百零五)Change Data Capture
7980
salesforce零基础学习(八十六)Ajax Toolkit (VF页面中使用及javascript action使用)
1.4K0
salesforce零基础学习(一百二十一)Limitation篇之Heap Size Limitation
5200
salesforce零基础学习(一百三十八)零碎知识点小总结(十)
1500
salesforce零基础学习(九十八)Salesforce Connect & External Object
7770
salesforce零基础学习(九十六)项目中的零碎知识点小总结(四)
8780
salesforce 零基础开发入门学习(五)异步进程介绍与数据批处理Batchable
2.1K1
Salesforce 大数据量处理篇(一)Skinny Table
8550
salesforce 零基础学习(二十)简单APP制作
1.1K0
salesforce零基础学习(一百一十一)custom metadata type数据获取方式更新
5400
Salesforce LWC学习(六) @salesforce & lightning/ui*Api Reference
1.9K0
相关推荐
salesforce 零基础开发入门学习(三)sObject简单介绍以及简单DML操作(SOQL)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验