Рубрики
Uncategorized

Создание машины времени для данных Salesforce, простой способ

Итак, вы хотите, чтобы все изменения были внесены в данные в объекте Salesforce, навсегда? Давайте … отмечен с Хероку, DevOps.

Итак, вы хотите, чтобы все изменения были внесены в данные в объекте Salesforce, навсегда?

Давайте рассмотрим, как мы использовали из бокс -инструментов и небольшое кодирование, чтобы создать машину времени, и как это выглядело после того, как я запустил ее на тестовых данных в течение нескольких месяцев.

Во -первых, о нашей среде тестовых данных: мы используем тестовую организацию со случайно сгенерированными учетными записями и возможностями, связанными с этими учетными записями. У нас также есть сервис, которая работает каждые несколько минут, чтобы вносить изменения в небольшой случайный подмножество учетных записей.

Первым шагом было настроить приложение для коллекционера. Это приложение излучит все изменения в качестве сообщений в кафку.

Затем нам нужно было где -то транслировать изменения:

Затем мы отражали наши данные 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»