リレーション調整ストラテジ
Salesforceでは、レコードIDによってレコードを一意に識別し、レコードをその他のレコードと関連付けます。SalesforceではレコードIDを使用して、親子リレーションを調整します。
マスキングタスクを実行すると、外部ID、カスタムフィールド、一意のフィールドのいずれかでリレーションが調整され、データがターゲットに書き込まれます。Salesforceでは、ターゲットデータの挿入や更新/挿入に、カスタムフィールドルックアップではなく外部IDを作成して使用することを推奨しています。Salesforceで外部IDを作成できない場合、マスキングタスクによりSalesforceにカスタムフィールドが作成され、ターゲットでルックアップが実行されます。Salesforceで外部IDまたはカスタムフィールドを作成できない場合、マスキングタスクで一意のフィールドが作成され、ソースとターゲットでルックアップが実行されます。マスキングタスクでデータの挿入または更新/挿入を行うと、外部IDフィールドまたはカスタムフィールドルックアップによってレコードで親子リレーションが一意に識別されます。
外部IDフィールド
Salesforceの外部IDフィールドには、Salesforce以外のシステムの一意のレコード識別子が付いた外部ID属性が含まれます。
データマスキングタスクは、外部IDを使用してターゲットデータベース内の親子リレーションのオブジェクトを特定します。Salesforceでは、ターゲットデータの挿入や更新/挿入に、カスタムフィールドルックアップや一意のフィールドルックアップではなく、外部IDを作成して使用することを推奨しています。[ターゲット]タブから外部IDを作成すると、データマスキングタスクは外部IDの名前にDMASK_を追加します。データマスキングタスクで作成した外部IDは[ターゲット]タブに表示されます。
データマスキングタスクは、設計時にターゲット内に外部ID用の追加フィールドを作成します。オブジェクトに外部IDが存在する場合、データマスキングタスクは同じ外部IDを使用します。タスクの実行後に外部IDを保持または削除できます。更新/挿入処理を他にも実行する場合は、外部IDフィールドを保持できます。
オブジェクトの外部IDフィールドを作成できない場合、更新/挿入操作を実行すると、[ターゲット]タブからオブジェクトの一意のフィールドまたはIDルックアップフィールドを選択できます。例えば、RecordTypeオブジェクトの一意のフィールドまたはIDルックアップフィールドを選択できます。
カスタムフィールドルックアップ
マスキングタスクでは、ルックアップベースの調整が親ターゲットオブジェクトで実行され、親レコードIDが取得されます。
外部IDが存在しない場合、マスキングタスクにより、同じ名前のSalesforceターゲットでルックアップを実行するためのカスタムフィールドが作成されます。1回のカスタムフィールドルックアップにつき、ターゲットで1回のルックアップ操作が必要です。
マスキングタスクでは、次の場合にカスタムフィールドルックアップが実行されます。
- •ターゲットオブジェクトで外部IDの制限を超えている。
- •ターゲットで一意のフィールドの数が制限を超えている。
一意のフィールドルックアップ
マスキングタスクは、外部IDまたはカスタムフィールドを作成できないオブジェクトに対して一意のフィールドを使用します。この調整ストラテジは、一意のフィールドを含む標準オブジェクトのためのものです。
オブジェクトに一意のフィールドが存在する場合、タスクは一意のフィールドに基づいてルックアップ操作を実行します。一意のフィールドルックアップでは、ソースとターゲットで1つのルックアップ操作が必要です。
オブジェクトの外部IDフィールドを作成できない場合、更新/挿入操作を実行すると、[ターゲット]タブからオブジェクトの一意のフィールドまたはIDルックアップフィールドを選択できます。例えば、RecordTypeオブジェクトの一意のフィールドまたはIDルックアップフィールドを選択できます。
オブジェクトの外部IDフィールドを作成できず、このオブジェクトに一意のフィールドが存在しない場合は、挿入操作を実行できません。例えば、OpportunityContactRoleオブジェクトで挿入操作を実行することはできません。
一意のフィールドルックアップストラテジは、次の標準オブジェクトに適用可能です。
- •AdditionalNumber
- •Announcement
- •ApexClass
- •ApexComponent
- •ApexPage
- •ApexTrigger
- •Attachment
- •AuthProvider
- •BrandTemplate
- •BusinessHours
- •BusinessProcess
- •CallCenter
- •CollaborationGroup
- •ContentDistribution
- •CorsWhitelistEntry
- •Document
- •EmailServicesAddress
- •EmailServicesFunction
- •EmailTemplate
- •EntitlementContact
- •EntitlementTemplate
- •Folder
- •Group
- •Holiday
- •LiveChatTranscriptEvent
- •LiveChatTranscriptSkill
- •LiveChatUserConfigProfile
- •LiveChatUserConfigUser
- •LiveChatVisitor
- •MailmergeTemplate
- •MilestoneType
- •NetworkActivityAudit
- •Note
- •PresenceUserConfigProfile
- •PresenceUserConfigUser
- •QuestionReportAbuse
- •QuestionSubscription
- •QuoteDocument
- •RecordType
- •ReplyReportAbuse
- •SelfServiceUser
- •RecordType
- •StreamingChannel
- •Topic
- •TopicAssignment
- •User
- •UserProvAccount
- •UserProvAccountStaging
- •UserProvMockTarget
- •UserProvisioningLog
- •UserRole
- •WebLink
連結オブジェクト
連結オブジェクトは、2つの関連オブジェクト間の多対多のリレーションを含んだSalesforceオブジェクトです。
連結オブジェクト内に保存されたリレーションの詳細は、連結リレーションを形成します。多対多のリレーションでは、オブジェクト内の各レコードが、もう1つのオブジェクト内の複数のレコードにリンクされます。連結オブジェクトには、2つのオブジェクト間のすべてのリレーションが保存されます。例えば、CaseSolutionは、CaseオブジェクトとSolutionオブジェクト間の多対多のリレーションを保存する連結オブジェクトです。CaseオブジェクトとSolutionオブジェクト間のリレーションは、連結リレーションです。
連結オブジェクトからデータサブセットを作成できます。連結オブジェクトにデータを挿入することができます。連結オブジェクトへのデータの更新/挿入はできません。
ターゲットの所有者名
Salesforceでは、マスキングタスクは、ターゲット接続のユーザー名ではなく、ターゲット内のオブジェクトのソース所有者名を追加します。ターゲットには、同じエイリアスのユーザーが含まれる必要があります。
複数のソースを選択した場合、ユーザーオブジェクトとその他の関連オブジェクトがソースのリストに追加されます。ユーザーオブジェクトは、Salesforceのエイリアスフィールドに基づいてソース所有者名を調整します。ターゲットにソースと同じ所有者名が含まれている場合、マスキングタスクはターゲットのソース所有者名を追加します。ターゲットにソースと同じ所有名が含まれていない場合、マスキングタスクはデフォルトのターゲット接続名を取り込みます。
複数のユーザーでエイリアス名が同じ場合、マスキングタスクは任意のユーザーを選択して他のオブジェクトとのリレーションを調整します。
Salesforce Bulk APIの制限事項
Salesforceは、Salesforce Bulk APIを介して送信または受信できるデータ量を制限しています。
パフォーマンスを向上し、大規模なデータセットのAPI要求回数を減らすには、Salesforce Bulk APIを使用します。
バッチ制限
24時間で最大5,000バッチを送信できます。クエリ、書き込み、および削除操作を実行できます。
Bulk API Writer
Bulk API Writerのデフォルトサイズは、1つのバッチにつき10,000行です。タスクは1日に最大で5000*10000(5000万レコード)を処理できます。Bulk API Writerのバッチサイズを構成するには、Secure Agentのプロパティを編集します。
Bulk API Reader
Salesforce Bulk API Readerを使用すると、クエリから最大15GBのデータを受信できます。クエリが15GBを超える場合、マスキングタスクは失敗します。処理するデータ量がSalesforceの制限を超えていないかどうかは、手動で計算することができます。
Salesforce Bulk API Readerを介してクエリできるデータ量は、次の式で算出できます。
Sum (the number of bytes in the fields that you want to mask) * (the number of rows in the query results) < 15 GB
Salesforceアプリケーションでオブジェクトのフィールドのサイズを確認し、マスクするフィールドのバイト数を合計します。Salesforceオブジェクトのクエリ結果から、行の合計数を確認し、式を適用します。結果が15GBの制限以内の場合、タスクは成功します。結果が15GBの制限を超える場合、タスクは失敗します。
Salesforce Bulk APIの制限事項の例
アカウントオブジェクトに100フィールドが含まれており、機密データの10フィールドをマスクするとします。マスクする10フィールドすべてのサイズの合計は100バイトです。アカウントオブジェクトの行の合計は、500,000です。
次の式を使用します。
合計クエリサイズ = 100 * 500,000 = 0.05GB
0.05GBは15GBのデータ制限範囲内であるため、アプリケーションはこのタスクを正常に処理できます。
以下の表に、Salesforceオブジェクトの合計クエリサイズの計算例をいくつか示します。
オブジェクト | クエリ結果内の行数 | マスクされるフィールドの合計サイズ | 合計クエリサイズ |
---|
アカウント | 500,000 | 1,000 | 0.5GB |
担当者 | 6,000,000 | 2,000 | 12GB |
リード | 8,500,000 | 2,000 | 15.8GB |
アカウントおよび連絡先オブジェクトの合計クエリサイズは15GBのデータ制限範囲内であるため、アプリケーションはタスクを正常に処理できます。リードオブジェクトの合計クエリサイズは15GBのデータ制限範囲を超えるため、アプリケーションはデータを処理できません。リードオブジェクトのクエリを減らすには、水平および垂直のパーティショニングを使用して、複数のマスキングタスクを作成します。
水平パーティショニングでは、Salesforceオブジェクト内の行数を分割できます。データフィルタ条件で条件を指定し、クエリ結果の合計行数を減らします。クローズリードを使用するデータマスキングと、オープンリードを使用するデータマスキングという2つのマスキングタスクを実行できます。
垂直パーティショニングでは、Salesforceオブジェクト内のフィールド数を分割できます。リードオブジェクトに対し、1300バイトのデータを含む10個のフィールドをマスクするタスクと、700バイトのデータを含む3個のフィールドをマスクするタスクという2つのマスキングタスクを作成できます。