Итак, вы хотите, чтобы все изменения были внесены в данные в объекте Salesforce, навсегда?
Давайте рассмотрим, как мы использовали из бокс -инструментов и небольшое кодирование, чтобы создать машину времени, и как это выглядело после того, как я запустил ее на тестовых данных в течение нескольких месяцев.
Во -первых, о нашей среде тестовых данных: мы используем тестовую организацию со случайно сгенерированными учетными записями и возможностями, связанными с этими учетными записями. У нас также есть сервис, которая работает каждые несколько минут, чтобы вносить изменения в небольшой случайный подмножество учетных записей.
Первым шагом было настроить приложение для коллекционера. Это приложение излучит все изменения в качестве сообщений в кафку.
- Установите приложение Heroku в частном пространстве
- Добавить частную базу данных Heroku Postgres
- Добавить Хероку соединился
- Выберите и настройте объекты для синхронизации в Heroku Connect
Затем нам нужно было где -то транслировать изменения:
- Добавить Heroku Private Kakfa кластер в приложение
- Настройте Разъем потоковых данных Чтобы указать на таблицы подключения Heroku
Затем мы отражали наши данные Salesforce в Heroku Postgres, представляя CDC в данных и транслировали изменения в Kafka.
Мы решили использовать Node для прослушивания потока событий в Кафке, взять обновления и вставить их в таблицу на Postgres.
- Создал еще одно приложение Heroku в частном пространстве
- Поделитесь добавлением KAFKA с новым приложением
- Добавить частную базу данных Heroku Postgres
- Создайте таблицу в базе данных Postgres — страховая от того, что проверки позволят дублировать значения в таких вещах, как
External_id__cиsfidполя. - Напишите код, который слушает Kafka для событий, и вводит события в качестве новых записей в Tardis ..um .. Постгрес.
Это не только масштабируется для многих объектов в одной организации Salesforce, но также масштабируется для многих организаций Salesforce, включая Work.com, Service Cloud и Salescloud. Мало того, что вы можете легко обеспечить видимость в организациях, но и захватываете все изменения, и вы можете сообщить о том, как записи развивались с течением времени, а также о том, как записи связаны друг с другом в разных организациях.
Каковы результаты, когда у нас есть все эти данные?
Глядя на приложение Collector. У нас всего более 50 тысяч учетных записей, и мы используем только 350 МБ данных. Выбирая учетную запись случайным образом, мы видим, что у нас есть наиболее актуальная информация для этой учетной записи в Postgres.
~ ☯ heroku pg:psql --app ggn-pg2k-test
--> Connecting to postgresql-rigid-10449
psql (12.4)
SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off)
Type "help" for help.
ggn-pg2k-test::DATABASE=> SELECT pg_size_pretty(pg_total_relation_size('"salesforce"."account"'));
pg_size_pretty
----------------
349 MB
(1 row)
ggn-pg2k-test::DATABASE=> select count(*) from salesforce.account;
count
--------
501646
(1 row)
ggn-pg2k-test::DATABASE=> select name, sfid, score__c from salesforce.account
where External_id __c = '7f4acaad-6c77-4342-a533-83bb580aaf681586878813' ORDER BY score__ c;
name | sfid | score__c
--------------------------+--------------------+----------
Borer, Braun and Gutmann | 001f400001MDeYzAAL | 2
(1 row)
Переключившись на приложение Time Machine, у нас есть в общей сложности 88 577,70 записей на том же источнике данных, поэтому в среднем более 160 изменений на сохранение записи. Глядя в подробности в одной учетной записи, мы видим в общей сложности 21 изменение.
Общее хранилище данных для всех записей и изменений заняло чуть более 4 ГБ пространства.
~ ☯ heroku pg:psql --app pg2k-gregs-drain
--> Connecting to postgresql-rugged-63570
psql (12.4, server 12.3 (Ubuntu 12.3-1.pgdg16.04+1))
SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off)
Type "help" for help.
pg2k-gregs-drain::DATABASE=> SELECT pg_size_pretty(pg_total_relation_size('"account"'));
pg_size_pretty
----------------
4274 MB
(1 row)
pg2k-gregs-drain::DATABASE=> select count(*) from account;
count
---------
8857770
(1 row)
pg2k-gregs-drain::DATABASE=> select name, sfid, score__c, id from account
where External_id__c = '7f4acaad-6c77-4342-a533-83bb580aaf681586878813' ORDER BY id;
name | phone | score__c | sfid | id
--------------------------+---------------------+----------+--------------------+---------
Borer, Braun and Gutmann | 5555551212 | 1 | 001f400001MDeYzAAL | 33351
Borer, Braun and Gutmann | 967-160-7974 x6487 | 15 | 001f400001MDeYzAAL | 34165
Borer, Braun and Gutmann | 967-160-7974 x6487 | 15 | 001f400001MDeYzAAL | 34699
Borer, Braun and Gutmann | 967-160-7974 x6487 | 15 | 001f400001MDeYzAAL | 35523
Borer, Braun and Gutmann | 967-160-7974 x6487 | 15 | 001f400001MDeYzAAL | 376946
Borer, Braun and Gutmann | 967-160-7974 x6487 | 15 | 001f400001MDeYzAAL | 971802
Borer, Braun and Gutmann | 967-160-7974 x6487 | 15 | 001f400001MDeYzAAL | 1041819
Borer, Braun and Gutmann | 5555551212 | 15 | 001f400001MDeYzAAL | 3006621
Borer, Braun and Gutmann | 1-151-183-4668 x379 | 5 | 001f400001MDeYzAAL | 3006628
Borer, Braun and Gutmann | 1-151-183-4668 x379 | 5 | 001f400001MDeYzAAL | 3006634
Borer, Braun and Gutmann | 1-151-183-4668 x379 | 5 | 001f400001MDeYzAAL | 3006648
Borer, Braun and Gutmann | 5555551212 | 5 | 001f400001MDeYzAAL | 5140095
Borer, Braun and Gutmann | 504.976.9652 x047 | 2 | 001f400001MDeYzAAL | 5140108
Borer, Braun and Gutmann | 504.976.9652 x047 | 2 | 001f400001MDeYzAAL | 5140114
Borer, Braun and Gutmann | 504.976.9652 x047 | 2 | 001f400001MDeYzAAL | 5140120
Borer, Braun and Gutmann | 504.976.9652 x047 | 2 | 001f400001MDeYzAAL | 5390250
Borer, Braun and Gutmann | 504.976.9652 x047 | 2 | 001f400001MDeYzAAL | 5620956
Borer, Braun and Gutmann | 504.976.9652 x047 | 2 | 001f400001MDeYzAAL | 7002900
Borer, Braun and Gutmann | 504.976.9652 x047 | 2 | 001f400001MDeYzAAL | 7031300
Borer, Braun and Gutmann | 504.976.9652 x047 | 2 | 001f400001MDeYzAAL | 7788503
Borer, Braun and Gutmann | 504.976.9652 x047 | 2 | 001f400001MDeYzAAL | 7906202
(21 rows)
Этот шаблон может использоваться для объектов Salesforce через Heroku Connect, или любую таблицу, которая у вас есть на Heroku Postgres. Как вы можете видеть, это очень легко настроить — единственное кодирование, которое вы должны сделать, — это создать слушателя, который получит все обновления, и хранить их в вашей целевой базе данных.
Это действительно сила платформы Heroku — использование своих инструментов для сокращения объема работы, необходимого для выполнения мощных вещей, в данных, а также в традиционных приложениях.
Оригинал: «https://dev.to/heroku/building-a-time-machine-for-salesforce-data-the-easy-way-34dh»