Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Дилемма: разные базы данных
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. У нас на предприятии возникла дилемма - использовать для новой задачи текущую базу данных или создать новую базу.Задача, которую мы хотим реализовать, слабо связана с другими задачами - на уровне некоторых справочников и интерфейсных процедур. Наши мнения разделились: часть(против новой базы) говорит, что это отразиться на производительности сервера, будет неудобно администрировать и программировать, другая часть(за новую базу) считает ,что это позволит поддержать определенные уровни изоляции данных и абстракции, а производительность не упадет. Я специально не привожу фактических данных по памяти, дисковым массивам и т.п. из соображений, понятных всем - чем лучше, тем лучше. Хотелось бы выслушать мнения всех, кто сталкивался с такой дилеммой.Теоретические и практические. С уважением, Попов АВ(Цунцуяби) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2001, 03:42 |
|
||
|
Дилемма: разные базы данных
|
|||
|---|---|---|---|
|
#18+
Если новая задача не звязана (или слабо связана), с уже решаемыми, то конечно создавать новую базу, администрить проще, производительность наоборот скорее выше особенно если файл положить на другой диск, да и потом в случае изменений (задачи) проще разобраться будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2001, 05:27 |
|
||
|
Дилемма: разные базы данных
|
|||
|---|---|---|---|
|
#18+
В настоящее время предпочтение лучше отдавать унификации ПО во всех случаях, когда есть хоть какая-то к этому возможность. Отсюда следует, что желательнее "использовать для новой задачи текущую базу данных". Я бы нашел (или выдумал)причины, чтобы это доказать своему начальству, типа такой - "За счет унификации программного обеспечения обеспечивается возможность ввести единый стиль работы для всех подразделений, упростить обмен файлами и т.д." Особенно, если у вас небольшой штат программистов. PS. УНИФИКАЦИЯ (от латинского unus — один и ...фикация), приведение чего-либо к единой системе, форме, к единообразию. "...ФИКАЦИЯ" (от латинского facio — делаю), часть сложных слов, означающая: делание, устройство (например, электрификация). В условиях научно-технической революции принципы У. используют не только в отраслях производства, но и в др. сферах человеческой деятельности. (www.rubricon.ru) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2001, 05:48 |
|
||
|
Дилемма: разные базы данных
|
|||
|---|---|---|---|
|
#18+
2 AlexUnik Здается мне Вы не поняли вопрос а я практически ничего не понял из того что сказали Вы Если Вы предлагаете стараться использовать одну и ту же схему данных для различных задач, то Вы... ну скажем так - неправы Наработки, конечно использовать можно и нужно, но вот только решеть новую задачу нужно именно как новую задачу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2001, 06:03 |
|
||
|
Дилемма: разные базы данных
|
|||
|---|---|---|---|
|
#18+
2 GENADY Цитата из воспроса: "Задача, которую мы хотим реализовать, слабо связана с другими задачами - на уровне некоторых справочников и интерфейсных процедур" Если последует разъяснение, насколько слабо связана - это нас рассудит. А сейчас спорить с Вами о том, как я понял вопрос и почему Вы не поняли меня, будет бессмысленным для нас обоих занятием С уважением, Александр. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2001, 09:11 |
|
||
|
Дилемма: разные базы данных
|
|||
|---|---|---|---|
|
#18+
2 AlexUnik Обидел что ль? Сорри, не хотел Боюсь понимание Вашего совета не зависит от степени связанности задач вопрошающего. Вот я не понял, что конкретно Вы предлагаете унифицировать? Базы данных? Не понимаю как это можно сделать. Это как, одинаковые базы для однотипных задач? Не учитывая особенностей каждого конкретного случая? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2001, 10:10 |
|
||
|
Дилемма: разные базы данных
|
|||
|---|---|---|---|
|
#18+
Да ладно вам дуться друг на друга. На самом деле критерии и понимание того, нужно/не нужно чисто субъективное. Все зависит от используемой концепции. В моей концепции я бы все затолкал в одну базу данных. Поскольку создание новых макрообъектов в ней производится просто триггерами, прицепленных к таблицам метаданных. Имеет ли смысл заводить в новой базе по новому все эти уже наработанные механизмы? Я бы не стал. Ежели нет понятия макрообъектов, нет метаданных, нет связи между данными одной совокупности информации и другой, то можно и разделить по разным таблицам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2001, 11:09 |
|
||
|
Дилемма: разные базы данных
|
|||
|---|---|---|---|
|
#18+
2 Garya Полностью согласен с твоим решением проблемы. Тем более что об этом я и говорил Очень жаль, что столь любимое Биллом Г. понятие "унификация" послужило камнем преткновения для Genady, когда он старался понять мой вобщем-то несложный ответ. 2 Genady Я не обиделся. Мне всегда было интересно читать твои ответы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2001, 14:00 |
|
||
|
Дилемма: разные базы данных
|
|||
|---|---|---|---|
|
#18+
2 AlexUnik Понятие унификация можно трактовать в общем по разному, уж простите меня книгу "Ужасного Билли" я не читал, вот только как это можно применить к базам данных я не в курсе. Даже когда можно использовать уже созданную схему данных (что бывает без изменений довольно редко) бизнес правила могут существенно отличаться, как Вы будете применять "Унификацию" (она же стандартизация)? P.S. Опыта у меня маловато, Вы уж мне разжуйте, плиз. (Без шуток чесс слово) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2001, 17:37 |
|
||
|
Дилемма: разные базы данных
|
|||
|---|---|---|---|
|
#18+
2 Genady "Если Вы предлагаете стараться использовать одну и ту же схему данных для различных задач, то Вы ну скажем так - неправы" Согласен, если бы (подставьте ваше высказывание), то я действительно неправ. Но даже схема данных не может быть вечно статичной. Выигрывают наиболее универсальные из них (на мой взгляд). Но разговор не об этом. Я предлагал использовать не одну и ту же схему данных, а одну и ту же базу данных (читайте автора вопроса). Как ни странно, но это удаётся многим моим коллегам. Насчет понятия "унификация" читайте определение выше. Насчет его применения в различных сферах нашей жизни - наберите в каком-либо поисковике слово "унификация" в сочетании с интересующей Вас областью ее реализации. Я думаю, информации будет гораздо больше, чем я бы мог Вам дать С уважением, Александр. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2001, 06:13 |
|
||
|
Дилемма: разные базы данных
|
|||
|---|---|---|---|
|
#18+
>Но даже схема данных не может быть вечно статичной. Согласне, но причем здесь унификация. >Выигрывают наиболее универсальные из них (на мой взгляд). Хотелось бы поподробнее, что такое универсальная схема данных? >Я предлагал использовать не одну и ту же схему данных, а одну и ту же базу данных. А смысл? Если задачи разные, схемы данных не связаны зачем все мешать в одну базу? P.S. Причем здесь унификация ну вот никак не пойму ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2001, 06:28 |
|
||
|
Дилемма: разные базы данных
|
|||
|---|---|---|---|
|
#18+
Наверное, мы дейстительно говорим на разных языках. В команде это создало бы большие проблемы (помните, "лебедь, рак и щука"). Но нагружать трафик выяснением чье понятие лучше я, извините, не буду... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2001, 06:48 |
|
||
|
Дилемма: разные базы данных
|
|||
|---|---|---|---|
|
#18+
Можно к решению разных учетных задач применять схожие способы проектирования. Для чего заводятся объекты или имитации объектов (в терминах объектно-ориентированного программирования), которые находятся на более высоком уровне, нежели объекты SQL-сервера (таблицы, запросы, хранимые процедуры...), поскольку один объект (я называю их МАКРОобъектами) состоит из множества объектов SQL-сервера. Но такие макрообъекты в концептуальном плане ближе к предметной области. Я использую макрообъекты "справочник", "документ", "регистр", "журнал документов". Складывать систему можно из песчинок, можно из кирпичей (покрупнее), а можно из строительных блоков (ну совсем больших). Я предпочитаю последнее. Я использую таблицы метаданных, в которых хранятся описания макрообъектов и их типы в рамках принятой мной концепции (допускаю, что не для всех случаев жизни она может сгодиться, но для встреченных мной на практике вполне подходит). Операции модификации записей в таблицах метаданных посредством прицепленных к этим таблицам триггеров приводят к появлению "пачками" новых таблиц, представлений и т.д., причем я над их структурой на уровне SQL-сервера даже не задумываюсь - все работает автоматом. Правда, для полноценной объектно-ориентированной модели нужно все это совокупить с аналогичным конструированием на клиенте. В принципе, унификация, модульность и объектная ориентированность преследует примерно одни цели. Возможно, AlexUnik применил не совсем точный термин, но лично мне его смысл вполне понятен, и я с ним согласен. Может, это несколько неуклюже звучит, но все вместе выше изложенное я понимаю как унифицированный (а точнее, систематизированный) подход к проектированию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2001, 13:50 |
|
||
|
Дилемма: разные базы данных
|
|||
|---|---|---|---|
|
#18+
>Возможно, AlexUnik применил не совсем точный термин Умгу, возможно зачем же тогда удивляться, что я не понял? А там где не понял я задал вопрос, ответа не получил. Garya, если не жалко, покажите примерчик Вашего макрообъекта, например "справочник", поподробнее, ну например его табличку с описанием. 2 AlexUnik & Garya Я не издеваюсь и не умничаю, правда интересно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2001, 13:59 |
|
||
|
Дилемма: разные базы данных
|
|||
|---|---|---|---|
|
#18+
2 Genady. Эта статья во многом устарела, но во второй ее части вкратце описаны принципы построения объектов, о которых я говорил. Начинай читать с главы "О базовой структуре системы, ее объектах и администрировании". Приводить пример справочника слишком объемно - задействованы таблицы и метаданных, и прав доступа, и многого другого (свойств записи, например, до которых недавно дотумкал). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2001, 18:07 |
|
||
|
Дилемма: разные базы данных
|
|||
|---|---|---|---|
|
#18+
Извини, все рассказал, кроме ссылочки . Вот ссылочка: http://nsa.chat.ru/Raznoe_BigPrgOriginal.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2001, 18:09 |
|
||
|
Дилемма: разные базы данных
|
|||
|---|---|---|---|
|
#18+
2 Garya Спасибо за ответ,а то я уже полагал что его не будет Концепция понятна, но насколько я понял она разработана, чтобы: 1. Обеспечить параллельную работу над проектом нескольких программистов 2. Ускорить разработку, используя заготовки (шаблоны) объектов 3. Обеспечить удобное администрирование в дальнейшем Пункт 3 по моему предоставляет сам SQL сервер на достаточном уровне. Пункт 1 и 2 к разработке схемы данных по моему не имеют никакого отношения (во всяком случае с точки зрения реляционной теории) Я неправ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2001, 06:28 |
|
||
|
Дилемма: разные базы данных
|
|||
|---|---|---|---|
|
#18+
Я болел, поэтому давно не появлялся. Повторяю, статья довольно старая. И писал я ее, когда сделать все это пытался в Access на манер а-ля-1С. Однако, отправные точки там обозначены. А подчеркнуть хочу следующее. Для реализации конкретных бизнес-процессов можно писать приложение, оперируя сразу объектами среды разработки (в данном случае, таблицами, ХП и т.п. SQL server). А можно сделать полуфабрикат. Этакий пластилин-прослойку, из которой далее лепятся бизнес-процессы уже как из объектов, более близких к предметной области. Что называть "программированием"? Разработка пластилина-полуфабриката? Или разработка готового приложения из полуфабриката? В первом варианте всё-в-одном, и такое разделения как таковое отсутствует. Трудоемкость изготовления полуфабриката, а затем приложения из него, конечно, выше, чем просто приложения. НО! . Если структура бизнес-процессов подвержена динамике, то дальнейшее сопровождение жесткого (но быстро спроектированного первым способом) приложения окажется очень трудоемкой. А вот в варианте с полуфабрикатом модификация структуры бизнес-процессов заставляет сосредотачиваться собственно на самих бизнес-процессах и объектах прикладной области, нежели на неувязках в DRI, триггерах, и проч. и проч., которые при модификации около 3000 таблиц нарушаются по уже покрытым забвением причинам. К примеру, понадобилось создать новые аналитические справочники и завязать на уже существующие регистры или на вновь создаваемые регистры. Я открываю таблицы метаданных и описываю новые макрообъекты. Справочник "Марсианские хроники". Иерархический. Количество уровней иерархии - 6. Поля - такие-то, такого-то типа, ссылается на такие-то справочники. Задаю правила его ведения, нажимаю OK. Срабатывают триггеры на самом SQL-server, которые просматривают сделаные мной изменения структуры метаданных. Появляется автоматом пяток новых таблиц уже с нужными DRI, индексами, констрейнтами и триггерами, десяток SP, несколько VIEW, все это красиво завязывается на уже существующие таблицы. На клиенте вообще все динамически синтезируется по таблицам метаданных. Все! И никаких страданий, синтаксических ошибок, мук с увязкой порядком подзабытых связей и т.п. Решай сам, что лучше. Если ты просто разработчик, то для тебя, конечно, вариант 1 гораздо лучше во всех отношениях. Во-первых, быстрее и проще. Во-вторых, потом на сопровождении кучу денег можно наскрести на постоянных модификациях жесткого приложения (которые кроме тебя и сделать некому). А если ты постоянно занимаешься подстройкой чужих приложений под свои бизнес-процессы, то тебе будет больше по душе вариант2. Теперь по пунктам. 1. SQL server суть многопользовательский. Если речь идет об одновременной модификации бизнес-процессов и перечня прикладных макрообъектов с использованием "пластилина" силами нескольких ммм... не программистов даже, а проектировщиков бизнес-процессов (автоматизаторов), так пусть себе на здоровие правят одновременно таблицы метаданных. Никаких проблем! 2. Интересно, сколько времени займет у тебя проектирование голыми средствами SQL-сервера номенклатурного справочника иерархической структуры с механизмом наследования технических характеристик, журнализацией, решением конфликтов репликации (с учетом очень запутанной схемы обмена информацией по множеству филиалов), заданием правил его ведения (чтобы в корень какой-нибудь ухарь не вколотил вместо наименования крупных номенклатурных групп какую-нибудь номенклатурную единицу), разграничением прав доступа на уровне записи, с возможностью иметь разные версии наименования одной номенклатуры в разных учетных периодах (представь, иногда и такое бывает необходимо), с автоматическим проецированием глобальных и номенклатурно-зависимыми связями между единицами измерения (1кг=0.001т=1000г - всегда и везде, 1уп=1000шт - только для "Сникерсов")? Ужели уложишься минут в 15, как при использовании "пластилина"? 3. Описанный в п.2 справочник - это совокупность нескольких таблиц, VIEW, хранимых процедур и многого другого. Допустим, всего в подобный макрообъект входит около 30 объектов SQL-сервера. Как ты полагаешь, что проще - дать права на доступ к "справочнику номенклатуры", или лазить по 30 объектам SQL-сервера и отдельно давать права доступа к каждой таблице, VIEW, хранимой процедуре и т.д., из которых этот объект состоит? В моей практике обычно задействуется около 150 аналитических справочников, 100 регистров, 200 видов документов, 150 отчетов. Это все на порядка 100 пользователей и порядка 10 видов прав доступа = 600000 - уже загнешься раздавать/отнимать права доступа. А помножь все это на 30. Конечно, роли ведение этого хозяйства сильно упрощают. Так я от них и не отказываюсь. Роли и пользователи системы отображаются в роли, логины и юзеров SQL-сервера. И когда я отнимаю доступ у кого-то к справочнику номенклатуры, то выдается залп команд DENY, запрещающих данному юзеру SELECT, UPDATE, INSERT, DELETE, EXECUTE по куче таблиц, вьюшек и хранимых процедур (я даже не задумываюсь, каких). Только кроме этих прав доступа у меня на макрообъектах имеют быть и такие, которых в SQL не предусмотрено. Звучат они так: "право на просмотр истории модификации" "право на просмотр версий записи по учетным периодам" "право на блокировку/разблокировку учетных периодов регистра" "право на просмотр удаленных записей" А еще у SQL-сервера "в лоб" не предусмотрено разграничение доступа на уровне записей. Так что ежели это необходимо - то либо ручками, либо кликнуть мышкой по "пластилину" - и готово. Рассказал много, но ощущаю, что все равно каждый остался при своем мнении ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2001, 14:09 |
|
||
|
Дилемма: разные базы данных
|
|||
|---|---|---|---|
|
#18+
Идеология "пластилина" на самом деле очень похожа на 1С. А Вы этот "пластилин" (или хотя бы куски для примера) не выдаете (или может быть продаете?). Было бы очень любопытно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2001, 15:37 |
|
||
|
Дилемма: разные базы данных
|
|||
|---|---|---|---|
|
#18+
Да, очень много взято именно у 1С, я этого не скрываю. Но в 1С хорошо взяли старт, а потом успокоились. Недоработок тьма, и, похоже, их устранять не собираются. Как и откровенные и грубые ошибки, с которыми оставляю один на один официальных ползователей (я из их числа). Я взял у них полезные идеи, но постарался отбросить имеющиеся у них недостатки. Еще взял несколько идей у "ИНФИН" (они, IMHO, тоже немало полезного напридумывали), у "Паруса", у "ИНФОСОФТ". И добавил собственных (которые вынашивал годами). Давать и продавать пока нечего. Не готово пока. Нас всего пара человек (да и то, только на протяжении 1.5 месяцев), а до того разработку тащил в одиночку, параллельно занимаясь кучей других вопросов. Иногда был так загружен, что между одной и другой строчкой кода проходили по 2-х месяцев... Сейчас появился просвет. Похоже, руководство дотумкало, что две головы лучше, а руки у человека только две... На SQL-2000 проект стал делать фактически с нуля и недавно. Прежний под SQL 7.0 (не доделанный)пересмотрен достаточно серьезно. А использование возможностей SQL2K требует новых подходов, и совсем других базовых приемов. Ради хохмы: в 7.0 ну до того позарез мне нужны были INSTEAD-триггеры, что умудрился сотворить что-то вроде них на простых триггерах с рекурсией и с отслеживанием SPID. Очень похоже работают. Правда, на самом деле это обманка. Чтобы не откатывать транзакцию, я даю выполниться операции, а затем выполняю прямо противоположные действия (аннулирующие исходное действие) - таблица приходит в состояние как в момент старта INSTEAD-триггера. А во вспомогательных таблицах со SPID-полем для решения проблем многопользовательской работы делал имитацию INSERTED и DELETED INSTEAD-триггера. Во, как кувыркаться приходилось! И все равно результаты плачевные - обмануть репликацию не получается. Все обманные телодвижения повторяются в репликации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2001, 17:50 |
|
||
|
Дилемма: разные базы данных
|
|||
|---|---|---|---|
|
#18+
Андрей, не болейте, пожалуйста, больше. Это на Вас не хорошо влияет. Жизненный тонус явно снизился. ЖИЗНЬ ПРЕКРАСНА!!! чёрт возми... Описанные Вами проблемы знакомы, думаю, многим. Но что делать, именно так в жизни всё происходит. Зато, всётаки полученный результат, радует намного больше! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2001, 19:52 |
|
||
|
Дилемма: разные базы данных
|
|||
|---|---|---|---|
|
#18+
>Рассказал много, но ощущаю, что все равно каждый остался при своем мнении Ну в общем да Возможно потому, что я рассуждаю с колокольни разработчика БД и потому разделяю схему хранения данных и их использование (ну как в теории ) во всяком случае меня так учили. Т. е. есть несколько правил которым я стараюсь следовать в силу своих возможностей 1. Не использовать уже имеющуюся модель данных (наработки использовать, конечно можно, но схема данных все равно строится заново) 2. В правильно построенной схеме данных не требуется вносить кардинальных изменений. 3. Похожие задачи не значит идентичны. P.S. Большим опытом не обладаю, но вот рассуждаю пока так ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2001, 05:22 |
|
||
|
Дилемма: разные базы данных
|
|||
|---|---|---|---|
|
#18+
Прошу прощения за стороннее вмешательство в Вашу беседу. Не стоит путать разделение данных и алгоритмов (теперь этот вопрос тоже спорный) с принципами выбора структур хранения для конкретного проекта. Был такой старый спор - что лучше, Clipper или FoxPro? Ответов два - либо тот, что лучше знаешь, либо тот, что больше подходит. Ответить на конкретный вопрос - в старой базе или новую городить? - не так просто. It depends... Одно дело, если хотите сваять пилотный проект для получения заказа, другое, если Вам же поделку на своем же предприятии и обслуживать. Но хочу отметить то, что прозвучало, но не понято - стоимость разработки стоящего проекта стремится к нулю по ходу жизни, а стоимость поддержки растет и растет. В целом, если заглянуть в мировые эталоны, то вопрос разделения баз решается на функционально-прикладном уровне. Пример - Oracle Application. Каждый из продаваемых модулей инсталлится в отдельную схему. И понятно почему - каждый модуль можно купить отдельно. Но при этом есть и одна, общая для всех модулей, схема. Собственно, моя реплика вызвана не тем, что хочется рассудить стороны, а тем, что надо очень осторожно подходить к вопросу о том, что лучше. Так на свете миллионы людей, болеющие от молока, а ведь мы все родились млекопитающимися. Так что не все очевидное в начале останется таким же очевидным потом. С уважением, Игорь П. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2001, 16:00 |
|
||
|
|

start [/forum/topic.php?fid=46&fpage=3569&tid=1826480]: |
0ms |
get settings: |
9ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
45ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
66ms |
get tp. blocked users: |
2ms |
| others: | 258ms |
| total: | 418ms |

| 0 / 0 |
