Mahmoud_Gamal Ответов: 2

Какая лучшая архитектура в симметричных базах данных bettwen передает данные ?


Спецификация
Большие данные с минимальными 10 тысячами транзакций за 10 часов и 300 узлами на первом этапе
каждая таблица в симметричной области имеет триггер update insert delete
методы архитектуры
1-одна корпорация отправляет данные через прямое соединение БД с другими посредниками (узлами)
(одна служба)
2-одна корпорация отправляет данные через tcp-соединение и другую службу для каждого узла, который получает транзакцию синхронизации и отправляет ее o corp service также через tcp
(две услуги)

Что я уже пробовал:

я думаю, что методы архитектуры 1 более мощные 2, но я не был уверен

2 Ответов

Рейтинг:
9

Tacitonitus

Метод 1 лучше по следующим причинам:

1) Вы можете использовать потоки для обработки параллелизма, который, по крайней мере в Windows (вы не указали ОС), является высокоразвитым, надежным и эффективным механизмом для обработки синхронного или асинхронного распределения задач. Ваш метод 2, с другой стороны, должен был бы использовать межпроцессное распределение и связь-не меньше, чем через TCP, - что гораздо более восприимчиво к ошибкам и проблемам, а также является более медленным и ресурсоемким.

2) асинхронный доступ к базе данных с высоким трафиком уже чреват известными проблемами-я где - то читал, что кто - то действительно написал статью, доказывающую, что 100% полностью прозрачной базы данных достичь невозможно,-поэтому добавление TCP к этой смеси, которая имеет свой собственный нетривиальный набор сценариев "что-если", только усугубит сложность, присущую любой ситуации доступа к базе данных с высоким трафиком.

Теоретически единственным недостатком вашего метода 1 является то, что *если* ваша операция когда-либо станет настолько большой, что для обработки нагрузки потребуется несколько машин, вам придется разделить (иначе говоря: порт) весь ваш потоковый "узловой" код на отдельные модули DCOM и реализовать их на отдельных машинах. Это было бы дорого, отнимало бы много времени и вызывало бы огромную головную боль.

Однако в наши дни эта технология (DCOM) довольно устарела. Гораздо более современный, эффективный и эффективный способ "вырастить" серверное программное обеспечение сегодня (для обработки больших нагрузок)-это использование GPGPU, который уже является потоковой технологией, поэтому перенос любого существующего потокового кода на GPGPU будет гораздо проще и экономичнее, чем использование DCOM. Это также можно было бы сделать по частям, в отличие от DCOM, и если бы этим занимались профессионалы, то можно было бы даже реализовать без простоев..

Надеюсь, это поможет..


Рейтинг:
16

KarstenK

Лучше отправить несколько пакетов в виде транзакций и получить фиксацию, что они сохранены/сделаны,а не продолжить. Вам нужно защитить себя от любых сбоев, таких как тайм-аут сети или любые другие, такие как недопустимые данные. Очень важно, чтобы была обеспечена целостность данных. Транзакции нуждаются в фиксации и некоторых откатах.

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

И подумайте о шифровании, чтобы данные были защищены от атаки или неправильного использования. Если у вас большой объем данных, вы можете использовать некоторое сжатие и современные протоколы.