31.08.2007, 14:59 | #1 |
Участник
|
Распределенная база данных на основе View
Не уверен, что вопрос относится к собственно "программированию", но, тем не менее... Необходимо оценить жизнеспособность описанной ниже идеи организации базы данных на MS SQL 2000 или MS SQL 2005.
Создается специальная база данных MS SQL в которой вместо всех, т.е. вообще ВСЕХ таблиц (ну, может за некоторым исключением) создаются VIEW с тем же именем и той же структурой вида PHP код:
Далее собствено AXAPTA подкладываем в качестве базы данных эту "сводную" базу данных. Т.е. AXAPTA "думает" что обращается к таблице MS SQL, но на физическом уровне обращение идет через View. Эксперимент проводился на AXAPTA 2.5 SP3 + MS SQL 2005. ЭТО РАБОТАЕТ! Как на чтение (что ожидаемо), так и на запись (нужны определенные настройки таблиц и дополнительный CONSTRAINT). Пока, разумеется, как тестовый пример на нескольких таблицах. Также понятно, что при "падении" одной базы "упадет" и эта общая база. Просто View не сможет сделать выборку. Вопрос о другом. Какие проблемы могут быть собственно в AXAPTA при работе с такой базой? Конечная цель - получить хранение разных компаний физически в разных базах MS SQL. Но с общими справочниками и возможностью взаимодействия между базами (копирование некоторых данных) Т.е. предполагается, что в разных базах MS SQL будут данные с разным (не пересекающимся) значением DataAreaId. Виртуализированные таблицы будут хранится в какой-то одной базе (отпадает проблема синхронизации справочников). А вопрос взаимодействия решается штатным ChangeCompany(). |
|
31.08.2007, 15:16 | #2 |
Участник
|
По теме не скажу ничего, кроме того, что это довольно извратно
Мне вот интересно про запись спросить. А в какую базу данных вставляется строка при добавлении ее из Аксапты? Врядли View это сама раздупляет |
|
31.08.2007, 15:21 | #3 |
Участник
|
Могу повторить. Мне не жалко. ЭТО РАБОТАЕТ! Специально проверял запись, иначе не имеет смысла связываться. Идет куда надо и как надо. В нужную базу. Видимо, именно сам View и "раздупляет"
|
|
31.08.2007, 16:25 | #4 |
Участник
|
Цитата:
А почему не стали использовать репликацию? чем не угодила? |
|
31.08.2007, 16:39 | #5 |
Участник
|
Здесь под View подразумевается Partitioned View, это функционал есть и в MS SQL 2000 и 2005. Partitioned View позволяет создавать представления объединяющие две и более таблиц с одинаковой структурой, расположенные на одном или нескольких физических серверах. При соблюдении определенных условий можно получить обновляемое представление с которым помимо операции SELECT можно выполнять INSERT, UPDATE и DELETE. Partitioned View является предшественником Partitioned Table (MS SQL 2005). Более подробную/техническую информацию можно узнать в BOL и на http://sql.ru.
|
|
31.08.2007, 17:01 | #6 |
Участник
|
Спасибо за ссылку! Но это нужно для оптимизации работы больших баз данных. Здесь, насколько я понимаю, проблема другая :
Конечная цель - получить хранение разных компаний физически в разных базах MS SQL. Но с общими справочниками и возможностью взаимодействия между базами (копирование некоторых данных) Не проще ли настроить репликацию? И надёжность выше будет. Или я что-то не догоняю? |
|
31.08.2007, 17:07 | #7 |
Участник
|
Поскольку, как обычно, вопрос скатился к сакраметальному "а зачем это надо", объясняю:
1. Начальник всегда прав В данном случае, в качестве начальника выступает наш аналитик, который настивает на выделении некоторых компаний в физически отдельные базы данных. В основном, по соображениям безопасности хранения и доступа информации. 2. Размер базы данных перевали за 200 ГБ. Распределение базы данных позволит более гибко подойти к распределению нагрузки на сервера и выделению места под хранение. При этом, встает ряд чисто технических проблем по обмену информацией между этими компаниями. Некоторая часть информации должна "копироваться" из одной компании в другую, попутно порождая ряд взаимосвязанных документов. Связанных между компаниями. Здесь под "копированием" понимается не "тупое" копирование, а именно создание весьма специфических документов. В то время, как репликация - это именно "тупое" копирование с минимальной модификацией. Как решить эти проблемы через репликацию - не представляю. Или что подразумевается под термином "репликация"? Репликация где? На каком уровне? На это обсуждения вопроса "Зачем?" считаю закрытым Народ, по заданному вопросу кто-нибудь может что-то сказать или так и будем "дурью маятся"? Кто-нибудь работал по такой технологии? Или хоть можете сказать какие скрытые проблемы могут возникнуть? |
|
31.08.2007, 17:26 | #8 |
Участник
|
Цитата:
Цитата:
Цитата:
Цитата:
Сообщение от Владимир Максимов
При этом, встает ряд чисто технических проблем по обмену информацией между этими компаниями. Некоторая часть информации должна "копироваться" из одной компании в другую, попутно порождая ряд взаимосвязанных документов. Связанных между компаниями. Здесь под "копированием" понимается не "тупое" копирование, а именно создание весьма специфических документов. В то время, как репликация - это именно "тупое" копирование с минимальной модификацией. Как решить эти проблемы через репликацию - не представляю. Или что подразумевается под термином "репликация"? Репликация где? На каком уровне? На это обсуждения вопроса "Зачем?" считаю закрытым Цитата:
Но как будут решаться такие проблемы, как блокировка на время обработки транзакции в "тяжёлых операциях" (закрытие склада, например) или одновременная блокировка одной таблицы пользователями из разных баз, даже предположить не могу. Да и объём трудозатрат по настройке и поддержания таких баз.... |
|
31.08.2007, 17:44 | #9 |
Участник
|
Раз вы задали вопрос в теме про программирование, наверное вы будете развивать фукционал вашей системы. Программист, конечно будет писать решения в отдельной базе. Пусть он в своем коде добавил в таблицу новое поле. Вы можете себе привести последовательной действий при импорте такой модификации в рабочую базу?
|
|
31.08.2007, 17:54 | #10 |
Участник
|
Цитата:
Сообщение от petr
Раз вы задали вопрос в теме про программирование, наверное вы будете развивать фукционал вашей системы. Программист, конечно будет писать решения в отдельной базе. Пусть он в своем коде добавил в таблицу новое поле. Вы можете себе привести последовательной действий при импорте такой модификации в рабочую базу?
Хотя, можно и программным - влезть в код синхронизации (Application.dbSynchronize) и перехватить процесс модификации структуры через прямое обращение к базе. В теории - решаемая проблема. |
|
31.08.2007, 17:56 | #11 |
Участник
|
А выполнение запросов на linked серверах Вас не пугает? На маленьких объемах это приемлемо а на больших?
|
|
31.08.2007, 18:05 | #12 |
Участник
|
Цитата:
Это форма для примера. Но в ряде случаев делается десяток, а то и сотня запросов (всякие методы find, например). И всё это через какой-то канал, несколько серверов, в другую базу... И для ВСЕХ таблиц! А таких методов, которые выискивают одну запись в таблице, вагон, -ведь авторы аксапты не предполагали такое её использование. |
|
31.08.2007, 18:45 | #13 |
Участник
|
Цитата:
Вкратце: Нет. Не пугает. Хотя, конечно, практика покажет. План запросов показывает, что MS SQL работает достаточно интелектуально. Торможение, конечно, есть. По грубым оценкам, в случае объединения данных с разных Linked-серверов - в несколько раз. Возможно, на порядок. Но здесь есть предмет для оптимизации. Хотя опять же вне заданного вопроса. |
|
01.09.2007, 15:40 | #14 |
Модератор
|
Цитата:
От пользователей? Есть домены От администраторов? Бесполезно, у них доступ будет всегда Непонятненько (с) Цитата:
Размер базы данных перевали за 200 ГБ.
Цитата:
Распределение базы данных позволит более гибко подойти к распределению нагрузки на сервера и выделению места под хранение.
Цитата:
На это обсуждения вопроса "Зачем?" считаю закрытым
Цитата:
Народ, по заданному вопросу кто-нибудь может что-то сказать или так и будем "дурью маятся"?
а) с производительностью (странно, правда?) б) трудоемкость сопровождения этого зоопарка вырастет ОЧЕНЬ сильно (одно лишь добавление поля в таблицу будет целым ритуалом, плюс обязательные проблемы с синхронизацией) в) целостность данных в случае чего восстанавливать будет непросто (у Вас же есть какой-то обмен между разными компаниями) Этого достаточно? Цитата:
Кто-нибудь работал по такой технологии? Или хоть можете сказать какие скрытые проблемы могут возникнуть?
А все почему? Потому что аналитик, уровень технической подготовки которого неизвестен, навязывает решение техническим специалистам Удачи. Она Вам потребуется
__________________
-ТСЯ или -ТЬСЯ ? |
|
|
За это сообщение автора поблагодарили: mazzy (5), ZVV (3), gl00mie (5). |
01.09.2007, 18:06 | #15 |
NavAx
|
Ребята, 200Гб базка всего то... повод заниматься оптимизацией и ежедневно присматривать за ней есть. НО... такой изврат мутить - никакого резона. Данная схема не является рекомендованной, более того, когда я ее показал сотрудникам MS - они выпучили глаза и покрутили пальцем у виска.
Попробовал на одной из своих баз, не особо крупной, всего чуть более 130гб. Падение производительности - 1-2 порядка на элементарных запросах. Вообщем вместо второго (третьего и далее) сервера бд поставьте нормальную дисковую подсистему и не морочьте голову. рекомендую IBM DS4700/DS4800 - их производительности для такой задачи более чем достаточно и от кого защищаетесь и чем такое решение поможет мне тоже жутко интересно
__________________
И все они создания природы... |
|
02.09.2007, 00:40 | #16 |
Участник
|
Цитата:
Цитата:
Сугубо из личного опыта: есть средства криптографической защиты, работающие прозрачно для приложений на уровне фильтров файловой системы. Они позволяют на лету надежно шифровать данные как на дисковых носителях, так и на всяких там стриммерах, и если сервер или резервную копию "унесут", то увидят лишь мусор. Но опять же надо хорошо проработать модель нарушителя, а то попадется какая-нить "паршивая овца", и все усилия пойдут прахом... |
|
02.09.2007, 03:45 | #17 |
Lean Six Sigma
|
Хоть и жёстко человеку ответили, но правильно. Присоединяюсь. Вопросы масштабирования решаются аппаратными средствами. Можете сделать отдельный отчётный сервер. Писать транзакции одного типа в две разные базы смысла не имеет.
По поводу защиты данных gl00mie сказал исчёрпывающе - пусть ваш аналитик сделает список угроз и выписывайте предложения по защите напротив угроз. Хотите защититься от разработчиков? Так у них отдельный сервер для разработки должен быть. Хотите не показывать информацию администраторам SQL? Тогда это не решение. В общем, единственное, чего можно добиться этим способом - падение быстродействия, увеличение нагрузки на сеть, повышение трудоёмкости администрирования и, возможно, программирования. Надеюсь, что аналитику задачу ставили не такую. |
|
03.09.2007, 10:59 | #18 |
Участник
|
В общем, ответ большинства был ожидаемым. Как обычно, большинство вопроса вообще не прочитали. Поскольку, многие так и не поняли о чем же идет речь, повторю вопрос еще раз:
Если вместо таблиц MS SQL "подсунуть" AXAPTA View - какие будут последствия и возможные проблемы со стороны AXAPTA. Я и сам могу написать большой трактат, что так делать нельзя, не стоит, не рекомендуется и т.д. и т.п. Но! Если Вам нечего сказать по существу вопроса, зачем Вы вообще что-то отвечаете? Чтобы разговор поддержать? Я не спрашиваю, какие есть альтернативы. Я спрашиваю, какие будут проблемы. Неужели так трудно понять о чем спрашивают-то? (...удалил пример, когда это "надо", поскольку не относится к сути вопроса...) Если Вы по такой схеме не работали, откуда такая уверенность, что так делать нельзя? Просто потому, что лично для Вас это кажется непривычным? Цитата:
Сообщение от Vadik
Проблем, лежащих на поверхности, столько, что скорее всего не буду и другим не советую.
Цитата:
Сообщение от Lazy_Tiger
Попробовал на одной из своих баз, не особо крупной, всего чуть более 130гб. Падение производительности - 1-2 порядка на элементарных запросах.
Последний раз редактировалось Владимир Максимов; 03.09.2007 в 12:37. Причина: Удалил пример, когда это "надо", поскольку не относится к сути вопроса |
|
03.09.2007, 11:29 | #19 |
Участник
|
Касаемо проблем, думаю что косяпте абсолютно "по барабану" таблица там или вьюха, до тех пор, пока дело не коснется синхронизации таблиц и индексов.
|
|
03.09.2007, 11:50 | #20 |
Участник
|
А там тем более будет "по барабану", так как "её" таблицы и индексы никакого отношения к данным иметь не будут
|
|
Теги |
faq, view, распределенная база данных |
|
Похожие темы | ||||
Тема | Ответов | |||
Невозможно выполнить команду языка определения данных в () | 8 | |||
База данных в Axapta 3.0... | 13 | |||
Обновление данных в View | 5 | |||
Введение в Аксапту | 0 |
|