Първо, архитектурно бих бил доста подозрителен към всеки дизайн, който включва изтегляне на данни през множество връзки към база данни. Виждал съм го да се прави, когато евентуалният източник е някаква древна версия на Oracle, към която целевата база данни не може да се свърже директно, така че е използвана междинна база данни, изпълняваща междинна версия на Oracle. Това обаче е много рядко на практика.
От гледна точка на ефективността този вид подход е сериозен проблематичен. Има, разбира се, проблемът, че данните ще бъдат изпратени по мрежата два пъти. Но по-притеснителното е, че се захващате с труден проблем, оптимизирате разпределени SQL изрази и го правите почти нерешим. По принцип трябва или да гарантирате, че никога няма да правите заявки за локални данни и отдалечени данни в една и съща заявка, или ще трябва да живеете с резултатната производителност, ако Oracle избере глупав план за заявка, тъй като наборът от инструменти, останали, за да ви позволят оптимизирането на този вид заявка е минимално.
Като се има предвид това, междинната база данни ще трябва да има синоними или изгледи, които абстрахират връзката към базата данни. И така
На A:
- създайте връзка към база данни към B
На B:
- създайте връзка към база данни към C
- създайте синонимна
table
за[email protected]
На A можете след това
SELECT *
FROM [email protected]