Итак, вы хотите, чтобы все изменения были внесены в данные в объекте 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»