На тази страница
Представете си екран за поддръжка, който се нуждае от един отговор: платена ли е тази поръчка? Платежната система знае. Екип за интеграция предлага да копира всеки платежен запис във втора база данни, да държи копието актуално и да го чете, когато агент отвори поръчката. Това е хипотетичен оперативен пример, не аналитичният случай от цитираната демонстрация.
Може да е необходимо. Първо попитайте дали екранът се нуждае само от един отговор, до който има разрешен достъп в момента.
Техническа демонстрация на аналитични заявки между облачни услуги показва заявка през съществуващи източници, без първо да се строи постоянно копие на изходната таблица в целевата система. Същата демонстрация материализира обединена таблица, показвайки че отдалеченият достъп и копирането могат да съществуват в един процес. Това е реална възможност на продукт, не обещание, че услуга за аналитични заявки е подходяща за оперативен екран за платежен статус или че данни никога не се местят при изпълнение. Документацията на Google Cloud за обединени заявки обяснява, че някои резултати от външни заявки временно преминават в услугата за заявки. Важната разлика е между постоянна синхронизирана реплика и ограничено прочитане за конкретен въпрос.
Решете според задачата на потребителя на данните
В „свържете тези системи“ са скрити две различни искания. Едното пита: „Какво казва източникът сега?“. Другото пита: „Какво състояние трябва да пази целевата система, за да действа по-късно?“.
За екрана за поддръжка ограничено прочитане може да върне статуса на поръчката и времето на наблюдението. Източникът остава авторитетен. Ако той не работи, екранът трябва да казва, че текущият статус е недостъпен, или ясно да означава запазен отговор като такъв. Второто копие би създало нов въпрос: кой статус има предимство, когато двата не съвпадат?
Потребител на данни иска един актуален отговор от източника чрез разрешена, ограничена заявка; тя може да обработва временни данни без трайна реплика.
За кампания за изоставена количка целевата система може да трябва да действа, без някой да отваря екран. Може да се нуждае от навременно събитие, състояние на съгласие и начин да отмени чакащо съобщение след покупка. Прочитане на живо при изпълнение на кампанията още може да помогне, но отговор само при поискване не е цялата задача.
| Нужда на следващата система | Първи дизайн за тестване | Основен компромис |
|---|---|---|
| Един актуален отговор | Ограничена заявка към собственика на данните | Зависи от достъпа и забавянето на източника |
| Постоянно действие при промяна | Събитие или минимална синхронизация на разликите | Трябва да обработва забавяне, дубликати и пропуснати събития |
| Историческо доказателство за решение | Моментна снимка с версии на важните полета | Трябва да управлява съхранението и достъпа |
| Работа при прекъсване на източника | Изричен кеш или реплика | Може да остарее; нужна е граница за възрастта |
Това е таблица за избор, не тест на производителността. От нея не следва универсален праг между заявка и копие.
Копието има постоянна цена
Първото извличане лесно се подценява, защото завършва. Копието продължава да живее. Появява се ново поле, идентификатор се слива, разрешение се променя или старо събитие пристига след ново. Тогава целевата система може да пази отговор, който източникът би отхвърлил.
Цената не е само съхранение. Тя е съгласуване: следене на изоставането, повторение на пропуснати промени, изтриване на данни при нужда и обяснение защо решение е използвало вчерашна стойност. Тези задачи са оправдани, когато целевата система се нуждае от независимо състояние. Те са излишна работа, когато единственият резултат е актуален отговор.
И заявката има цена. Може да натовари източника, да изложи полета на друг участник, да пресече мрежова граница и да се провали в най-лошия момент. Планът за изпълнение може да обработи повече данни, отколкото видимият резултат подсказва. Документацията за обединени заявки описва подробности, които си струва да проверите, преди да приемете отдалечената заявка за нулево движение на данни.
Безопасната заявка има тясна цел и тесен резултат. Назовете собственика на полето. Ограничете правата на заявителя. Решете колко стар може да бъде отговорът, колко да чака заявката и какво да казва интерфейсът при изтичане на времето. Пазете времето на наблюдението с отговора.
Кога контролираното копие си заслужава цената
„Местните данни ни дават предвидим интерфейс и по-малко отдалечени провали.“ Това е сериозен довод. Ако процесът има строго изискване за забавяне или трябва да работи през прекъсване на източника, контролирана реплика може да е правилният дизайн.
Думата контролирана е съществена. Определете кои полета се копират, колко бързо се обновяват, какво става при спрели актуализации и кога следващата система отказва действие върху остаряло състояние. Тествайте закъсняла поправка наред с нормалния път. Бърз остарял отговор може да е по-лош от видим недостъпен отговор.
Започнете от най-малкия въпрос на потребителя на данните. Ако прочитането го решава, оставете източника начело. Ако действие изисква местно състояние, копирайте само това, което действието може да оправдае.
Малък пробен тест може да реши избора без общ слой за репликация. Изберете въпрос, който следващата система действително задава, запишете колко актуален трябва да бъде отговорът и пуснете разрешена заявка към източника. Наблюдавайте забавянето, натоварването на източника и поведението при грешка с реалистични правила за достъп. После опитайте най-тясното копирано състояние, което би задоволило същата нужда. Сравнете не само времето за отговор, но и поправките, изтриванията и прекъсванията. Ръководството за планиране на интеграция дава по-широкия контекст на процеса; пробата избира къде да живее отговорът. Никой път не е автоматично по-евтин, когато отчетете постоянната поддръжка.
Връзката не се измерва по броя редове, преминали през нея.
Често Задавани Въпроси
Кога отдалечена заявка е по-добра от синхронизация?
Използвайте я, когато заявителят иска отговор от авторитетен източник и може да работи с неговите ограничения в достъпността и времето за отговор. Ограничете достъпа и показвайте кога е прочетен отговорът.
Кога данните трябва да се копират?
Копирайте минималното необходимо състояние, когато друга система трябва да действа без заявка на живо, да пази проверима моментна снимка или да изпълни изискване за бързина и наличност, което източникът не може да покрие.
Заявка към източника означава ли, че данните никога не се местят?
Не. Услуга за обединени заявки може да пренася междинни или крайни данни, за да изпълни заявка. Проверете документираното поведение на доставчика за изпълнение, съхранение и сигурност.