Автоматический - целостность данных
Узнайте больше о Хорошо архитектурированном простом → Автоматизированном → Целостность данных → Обработка данных
| Где искать? Область продукта | Расположение | Как выглядит добро? Схема |
|---|---|
| Data 360 | Словарь данных | ✅ Данные уровня поля и логика приоритетов для всех источников данных и объектов озера данных существуют |
| Данные 360 | Организация | ✅ Составные ключи используются для построения уникального основного ключа, если он не существует Используйте поле формулы для объединения нескольких полей из набора данных, если в наборе данных нет ни одного уникального поля |
| Данные 360 | Организация | ✅ Потоки данных, использующие коннектор CRM, используют полное обновление раз в две недели При использовании коннектора CRM для инкрементных загрузок полное обновление запускается каждые две недели. Хотя это может увеличить прием данных, это защищает целостность данных для метаданных (например, полей формул), которые не инициируют транзакцию DML и, как следствие, не включаются в дополнительные нагрузки |
| Данные 360 | Организация | ✅ Код отдельного лица используется для соотнесения данных Data 360 с другими системами Соотнесение отдельных лиц в Data 360 с другими системами посредством кода отдельного лица. Например, ключ подписчика Marketing Cloud Engagement должен быть соотнесен с кодом лица из Data 360 |
| Данные 360 | Организация | ✅ Полностью определенные ключи используются для точной интерпретации данных Все ООД, содержащие ключевое значение, имеют поле определителя ключа и полностью определенные ключи (FQK) включены в организации, чтобы избежать конфликтов, которые могут произойти, когда несколько потоков данных гармонизируются в одном объекте модели данных (DMO) |
| Данные 360 | Организация | ✅ Нормализованные методы соответствия используются в правилах соответствия при их наличии. Точное нормализированное соответствие трансформирует исходные данные для решения распространенных проблем соответствия, например, конечных пробелов, несогласованного форматирования и специальных символов. Рекомендуем использовать данный метод в полях, где он доступен, вместо использования нечеткого совпадения, если только вы не настроили несколько наборов правил для тестирования и не подтвердили, что уровень консолидации не соответствует бизнес-потребностям |
| Einstein | Документация | ✅ Полезность данных задокументирована как часть проектирования на основе искусственного интеллекта Определение полезности данных вашей компании задокументировано и внедрено для улучшения ответов на основе искусственного интеллекта |
| Platform | Apex | ✅ Будущий Apex используется экономно, для выносок или DML системного объекта |
| Platform | Apex | ✅ Вызовы Async Apex используют стоящий в очереди для «цепочки» сложных DML в транзакциях |
| Platform | Apex | ✅ Пакетный Apex используется исключительно для больших объемов данных Пакетный Apex лучше всего обрабатывает большие объемы данных. У асинхронного Apex ограничения выше, чем у синхронного Apex, поэтому можно проделать дополнительную работу. По возможности избегайте очень малых размеров пакетов во избежание последствий управления потоком (затопление очереди), накладных расходов и исчерпания ежедневного ограничения асинхронного Apex |
| Platform | Apex | ✅ Все синхронные операторы DML или методы класса базы данных выполняются в контекстах выполнения до триггера |
| Platform | Apex | ✅ Bulk API используется только при обработке больших объемов данных Bulk API используется при обработке больших объемов данных. Собственные SOAP и REST API используются для обработки меньшего объема данных |
| Platform | Словарь данных | ✅ Соотнесение полей из объекта озера данных с объектом модели данных существует |
| Платформа | Поток | ✅ Все потоки, запущенные в контексте пользователя, извлекают все транзакции системного контекста в подпотоки, которые последовательно размещаются после элемента приостановления, для создания новой транзакции |
| Платформа | Поток | ✅ Все потоки, запущенные записью, имеют заполненные значения порядка триггеров |
| Платформа | Поток | ✅ Потоки, использующие выноски внешней системы или длительные процессы, используют асинхронные пути |
| Платформа | Поток | ✅ С помощью оркестратора создаются сложные последовательности операций связанных данных (вместо вызова нескольких подпотоков в монолитном потоке) |
| Платформа | Организация | ✅ Правила сверки разрешающей способности при опознавании следуют логике приоритетов в словаре данных |
Узнайте больше о Хорошо архитектурированная легкая → Автоматическая → Целостность данных → Обработка ошибок
| Где искать? Область продукта | Расположение | Как выглядит добро? Схема |
|---|---|
| Einstein | Организация | ✅ Напоминания определяют ожидаемый результат Включают прямые инструкции для LLM для создания только ожидаемого типа содержимого. |
| Platform | Apex | ✅ Настраиваемые исключения используются для создания расширенных сообщений об ошибках и логики |
| Platform | Apex | ✅ Код добавляет все DML, SOQL, выноски и другие важные этапы процесса в блоки try-catch |
| Platform | Apex | ✅ Методы класса базы данных могут использоваться исключительно для всех операций над данными (вместо DML) |
| Platform | Apex | ✅ В асинхронном и пакетном контекстах вместо DML используются методы класса базы данных |
| Платформа | Aura | ✅ JavaScript обрабатывает все операции над данными и критические этапы процесса в блоках try-catch |
| Платформа | Aura | ✅ В блоках try-catch собственный Error JavaScript используется в операторе броска (не используется $A.error()) |
| Платформа | Aura | ✅ Вся исправляемая логика ошибки отображается в операторе catch и предоставляет четкие сообщения пользователя |
| Платформа | Поток | ✅ Потоки с операциями над данными, выносками и другой логикой критической обработки имеют пути ошибок для всех ключевых действий |
| Платформа | Поток | ✅ Потоки окон последовательно используют коннекторы ошибок для отображения ошибок пользователям |
| Платформа | Поток | ✅ Настраиваемые сообщения об ошибках настроены на ошибки, которые отобразятся на экране |
| Platform | Веб-компоненты Lightning (LWC) | ✅ JavaScript объединяет все операции над данными и критические этапы процесса в блоки if ()/else if () |
| Platform | Веб-компоненты Lightning (LWC) | ✅ Все функции @wire используют свойства data и error, предоставленные API |
| Platform | Веб-компоненты Lightning (LWC) | ✅ Все if (error)/else if (error) операторы содержат логику для обработки ошибок и предоставления информативных сообщений |
Узнайте больше о Хорошо архитектурированном простом → Автоматизированном → Целостность данных → Обработка данных
| Где искать? Область продукта | Расположение | Чего избегать? Антишаблон |
|---|---|
| Данные 360 | Организация | ⚠️ Поля с поддерживаемыми нормализированными методами соответствия используют неточное совпадение применяется к полям, предлагающим точные нормализированные методы совпадения |
| Данные 360 | Организация | ⚠️ Объединенный код отдельного лица считается неизменяемым Объединенный код отдельного лица используется в качестве основного кода или глобального кода для использования остальной организацией |
| Данные 360 | Организация | ⚠️ Дата события соотносится с изменяемым значением DateTime Дата события соотносится с изменяемым полем DateTime, например, LastUpdated или LastExtracted |
| Данные 360 | Организация | ⚠️ Основной ключ соотносится с полем, которое не является уникальным Выбор любого поля в качестве основного ключа для потока данных, если оно отсутствует в наборе данных, без предварительной проверки уникальности выбранного поля |
| Данные 360 | Организация | ⚠️ Загрузка данных пакетами с последующей попыткой их активации в режиме реального времени. Например, распространенный, но ошибочный подход может включать ежечасную загрузку данных из сегмента Amazon S3 с последующей их активацией посредством действий над данными |
| Platform | Apex | ⚠️ Заявления DML регулярно отображаются в коде, который будет вызываться после контекстов триггера |
| Platform | Apex | ⚠️ Пакетные задания Apex имеют очень маленький размер области Используются очень маленькие размеры пакета (например, размер области = 1) |
| Platform | Apex | ⚠️ Пакетный Apex используется для внешних выносок Большие объемы данных Salesforce выталкиваются из Salesforce во внешнюю систему посредством пакетного Apex |
| Platform | Apex | ⚠️ События платформы «Опубликовать немедленно» используются ситуативные события «Опубликовать немедленно (в реальном времени)» используются вместо «Опубликовать после обязательства» (не в реальном времени), вне зависимости от требований к заказу на публикацию или рисков блокировки записи. |
| Platform | Apex | ⚠️ Функции Async Apex используются произвольно Будущие методы, а Apex в очереди используются непоследовательно или взаимозаменяемо |
| Platform | Apex | ⚠️ Функции Async Apex используются произвольно; не ясно, когда использовать будущий по сравнению с стоящим в очереди Apex, когда передать DML для пакетных заданий |
| Platform | Apex | ⚠️ Async Apex используется редко |
| Platform | Apex | ⚠️ Асинхронные Apex используются произвольно Операции базы данных не имеют четкой, последовательной логики передачи выполнения в пакет Apex при необходимости |
| Platform | Словарь данных | ⚠️ Соотнесение полей из объектов озера данных с объектами модели данных не включено |
| Platform | Словарь данных | ⚠️ Данные уровня поля и логика расстановки приоритетов для источников данных и объектов озера данных не включены |
| Платформа | Поток | ⚠️ Выполнение DML посредством коллекции, являющейся выводом из компонента окна Использование параметра «Использование кодов и всех значений полей из записи или коллекции записей» в элементе создания, обновления или удаления, если эта коллекция является выводом из компонента окна |
| Платформа | Поток | ⚠️ Потоки, запущенные записью, вообще не используют атрибуты порядка триггеров или не используют значения порядка триггеров последовательно |
| Платформа | Поток | ⚠️ Асинхронные пути используются непоследовательно или вовсе |
| Платформа | Поток | ⚠️ Крупные монолитные потоки пытаются координировать сложные последовательности операций связанных данных (с подпотоками или без них) |
| Платформа | Организация | ⚠️ Правила сверки разрешающей способности при опознавании не следуют логике приоритетов в словаре данных |
Узнайте больше о Хорошо архитектурированная легкая → Автоматическая → Целостность данных → Обработка ошибок
| Где искать? Область продукта | Расположение | Чего избегать? Антишаблон |
|---|---|
| Platform | Apex | ⚠️ DML, SOQL, выноски или другие важные этапы процесса не всегда добавляются в пробные блоки |
| Platform | Apex | ⚠️ Методы класса базы данных не используются |
| Platform | Apex | ⚠️ Операции над данными выполняются исключительно посредством DML |
| Platform | Apex | ⚠️ Выписки из System.debug отображаются в производственном коде (без комментариев) |
| Платформа | Aura | ⚠️ JavaScript не поддерживает последовательное добавление операций над данными и критических этапов процесса в блоки try-catch |
| Платформа | Aura | ⚠️ Компоненты используют $A.error() |
| Платформа | Aura | ⚠️ Логика исправляемой ошибки не всегда отображается в операторах catch, а сообщения об ошибках пользователям не понятны |
| Платформа | Поток | ⚠️ Потоки не используют пути ошибок последовательно или вообще |
| Платформа | Поток | ⚠️ Настраиваемые сообщения об ошибках не используются, поэтому пользователям отображается стандартное сообщение «В данном потоке произошла необработанная ошибка» |
| Platform | Веб-компоненты Lightning (LWC) | ⚠️ Функции @wire не используют свойства data и error, предоставленные API (или не используют их последовательно) |
| Platform | Веб-компоненты Lightning (LWC) | ⚠️ При использовании операторы if (error)/else if (error) фактически не содержат логики для обработки ошибок и предоставления полезных сообщений об ошибках |
| Platform | Веб-компоненты Lightning (LWC) | ⚠️ JavaScript не использует последовательно if ()/else if () блоки с операциями над данными или критическими этапами процесса |