powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Неопределенность в выборе метода работы с БД
16 сообщений из 16, страница 1 из 1
Неопределенность в выборе метода работы с БД
    #34548983
WStealth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте ВСЕ...

Необходима ваша помощь, как профессиональных разработчиков.

Опишу задачу.

Есть приложение (для разработки используется C#). Сначала выходит версия 1.0 с базовыми функциями.
В дальнейшем (приложение должно быть довольно большое) планируется наращивать его функциональность. Т.е. будут выходить версии 1.1, 1.2, 1.3, ... 5.0, ... и т.д.

С этим все ясно.

И есть база данных (SQL Server Express). Соответственно для версии приложения 1.0 у нее базовая структура. С выходом новых версий структура будет меняться (добавляться таблицы, меняться поля таблиц, и т.д.).

С этим вроде тож все ясно...

Приложение будет довольно популярно (хотелось бы на это рассчитывать), т.е. количество клиентов не 1-5, а 50-100 (может и больше).

Но вот собственно говоря и сам вопрос:

Какую схему вы можете посоветовать по работе приложения с базой данных?

Обрисую для наглядности, например, одну:
Клиентам дается инсталяция приложения и MSSQL Express.
При запуске (в данном случае первом) приложение проверяет есть ли база данных с нужным именем. Если нет, то создает ее и ее структуру, при этом прописывает версию БД (например, в таблице параметров).
Далее при выходе обновления для приложения оно передается клиентам и при запуске проверяет версию БД (например, она хранится в таблице параметров) и если версия менее нужной проводит обновление внутренней структуры БД.

Вот вроде бы и все...

Хотелось бы услышать ваши схемы работы с БД, и на ваш взгляд "+" и "-" данного (описанного) подхода.

Заранее спасибо, и прошу прощение за такой большой трактат...
...
Рейтинг: 0 / 0
Неопределенность в выборе метода работы с БД
    #34549497
strizh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По обновлению структуры базы могу посоветовать создать на сервере, доступном по инету только кругу Ваших клиентов, базу со всеми обновлениями структуры от версии к версии в виде sql-операторов. При запуске приложение проверяет версию базы, и в случае чего лезет за последними обновлениями на Ваш сервер.
Такой схемой убъете 2 зайцев:
1) Будете централизованно хранить обновления структуры
2) Сможете отключать от обновлений юзеров, которые не платят за поддержку
...
Рейтинг: 0 / 0
Неопределенность в выборе метода работы с БД
    #34549567
WStealth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 strizh:
Для меня не понятно зачем так усложнять.
( Просто редко приходилось делать подобные задачи. )
Ведь если потребуется кому-либо запретить обновления, то это можно реализовать при попытке загрузки обновления для приложения, или во время установки обновления, или во время запуска самого приложения.
А обновления структуры БД, в нашей модели работы, и так хранятся централизовано в приложении (т.е. на клиенте).
по принципу:
- если версия = 0 то выполнить: то-то-то
- если версия = 1 то выполнить: то-то-то
- если версия = 2 то выполнить: то-то-то
И при данной модели абсолютно всеравно, что один клиент постоянно обновляется, а другой, раз в пол года.
...
Рейтинг: 0 / 0
Неопределенность в выборе метода работы с БД
    #34549575
WStealth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хотя... если предположить что у нашего одного заказчика стоит в офисе 20 клиентов которые обращаются к БД, один может обновится и обновить структуру БД, а 19 остальных будут пытаться работать со старой структурой...
мда... не хорошо получается...

может у кого то есть опыт разработки подобного приложения???
...
Рейтинг: 0 / 0
Неопределенность в выборе метода работы с БД
    #34550029
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну различай клиентов-то. Одно дело - клиент в разрезе архитектуры "клиент-сервис", другое - в разрезе "покупатель-продавец". Обновления раздавай покупателям, в виде скриптов к БД и upgrade к клиентской части, по факту оплаты авторского сопровождения или как вы там это назовёте.
не смешивай понятия-то
...
Рейтинг: 0 / 0
Неопределенность в выборе метода работы с БД
    #34550446
WStealth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за ответы.

В разговоре немного поменялось представление самих данных.
получается теперь так:
есть, предположим, 50 заказчиков.
У каждого стоит своя база данных (структура общая для всех заказчиков) и любое количество приложений-клиентов (работающих с этой базой), которые тоже одинаковые для всех.

Просто если скрипты для изменения структуры базы давать клиентам, то они же задолбают звонками с вопросами: а это что? а это куда? а это как?
Случай из жизни:
Мы вот, например, обновления для нашей программы в zip архиве давали. Человек звонит нам и говорит: У меня на экране висит табличка в которой написано, что доступны новые обновления, что мне делать? я говорю: нажмите кнопку загрузить. он: а тут оно спрашивает куда его сохранить??? я: в любое место. он: и все??? (напоминаю, файл с расширением zip) я: нет, его нужно распаковать и запустить. После этого было еще два звонка от него (как распаковать, и как запустить).

По этому сейчас пытаемся свести участие клиента к минимуму.
А если ему скрипты дать... так этож просто будет для него взрыв мозгов, который может привести к разрушению всей системы (если он своими ручками его запустит.).

Простите за отступление от темы.

Но так все же... мы определились, что в приложения-клиентов встраивать скрипты глупо...
Так какой же выход еще есть? Может присылать ему два приложения-обновления - первое новая версия приложения-клиент, а второе - программа, которая обновит структуру базы?
...
Рейтинг: 0 / 0
Неопределенность в выборе метода работы с БД
    #34550624
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Предлагаю поразмышлять на предмет создания самораспаковывающейся инсталяшки, которую надо только толкнуть и она автоматом обновит всё то, что необходимо и БД, и клиента
...
Рейтинг: 0 / 0
Неопределенность в выборе метода работы с БД
    #34550663
WStealth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тогда (с инсталяшкой все ясно), вернемся к приложению-клиенту.

Он (приложение-клиент) после запуска должен опросить версию БД (предположим, из таблицы параметров) и если эта версия меньше необходимой - выдать пользователю сообщение, в котором будет сказано, что необходимо обновить приложение-клиент и завершит работу с программой.
Или же предложит загрузить требуемое обновление с инета...

Так?
...
Рейтинг: 0 / 0
Неопределенность в выборе метода работы с БД
    #34550672
AlexTheRaven
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WStealth<...>Обрисую для наглядности, например, одну:
Клиентам дается инсталяция приложения и MSSQL Express.
При запуске (в данном случае первом) приложение проверяет есть ли база данных с нужным именем. Если нет, то создает ее и ее структуру, при этом прописывает версию БД (например, в таблице параметров).
Далее при выходе обновления для приложения оно передается клиентам и при запуске проверяет версию БД (например, она хранится в таблице параметров) и если версия менее нужной проводит обновление внутренней структуры БД.<...>
А где миграция данных? И что будет, если у клиента 1.0, а ему пришёл дистрибутив 3.0 ? И что, если с версии 3.0 нужно откатиться на 2.0?

IMHO нужно, чтобы эникейщик клиента скопировал дистрибутив на сервер, дважды щёлкнул на setup.exe, выбрал версию, отметил галочкой "установка сервера БД", и ушёл.
А тем временем дистрибутив сам бы:
- понял, стоит ли СУБД, и если нет - жалобно попросил её дистрибутив, проверил, что ему подсунули то, что надо , сам установил и настроил
- есть ли на ней БД нашей системы, и какой версии, надо ли обновлять и загружать
- разослал пользователям в клиенты команду "Остановиться через 5 мин. и не волнует!" и по почте "Через 5 мин. сервер будет остановлен".
- дождался завершения транзакция и остановил БД,
- копировал старую БД,
- удалил старую БД,
- создал новую БД,
- загрузил данные из копии старой БД в новую,
- запустил БД,
- сконфигурировал для работы с сервером БД и выложил в общий доступ дистрибутив клиента,
- разослал пользователям в клиенты команду "Обновиться, и не волнует!" и по почте "Щёлкните на ссылку, чтобы обновить свой клиент, и можете работать".
Вот такая утопия.
...
Рейтинг: 0 / 0
Неопределенность в выборе метода работы с БД
    #34551391
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По-моему рассуждения не на шутку углубились !

Так можно придти к тому, что такую систему вообще экономически невыгодно создавать.

Начните с малого, а там видно будет......... :)
...
Рейтинг: 0 / 0
Неопределенность в выборе метода работы с БД
    #34551508
AlexTheRaven
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LSV<...>Так можно придти к тому, что такую систему вообще экономически невыгодно создавать.<...>
Согласен. Тут надо считать, что выгоднее - реализовать полноценную процедуру обновления сразу (если изначально правильно спроектировать - разработать не так и сложно) или всё время жизни системы держать в штате 5-50 (для 50 клиентов, в зависимости от частоты и срочности обновлений) человек от $1.5k.
...
Рейтинг: 0 / 0
Неопределенность в выборе метода работы с БД
    #34551866
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всяко-разно нужно иметь скрипты для перехода от одной версии БД к другой.
И не просто изменение структуры, а изменение данных - если поля меняются, делятся, переносятся
Значит нужен отдельный update.exe. И причем такой, который умеет переходить через версии - от 1.1 к 3.2 за один раз.
Отсюда получается, что при каждой выкладке новой версии нужно писать для нее переход от всех предыдущих.
Задачка неслабая :)

Или заставлять всех переходить на новую - но это тоже хреново.

Хотя если изменение структуры БД будет только в плане добавления новых таблиц - тогда фигня :)

-- Tygra's --
Мои фотогалереи тут и тут
...
Рейтинг: 0 / 0
Неопределенность в выборе метода работы с БД
    #34552627
WStealth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tygraЗначит нужен отдельный update.exe. И причем такой, который умеет переходить через версии - от 1.1 к 3.2 за один раз.
Отсюда получается, что при каждой выкладке новой версии нужно писать для нее переход от всех предыдущих.
Можно это решить так:
есть версия базы 1.0
выпускаем версию 2.0 соответственно делаем переход от 1.0 до 2.0
выпускаем версию 3.0 и опять же делаем переход от 2.0 до 3.0
Получается что update знает как переходить от 1.0 к 2.0, и как от 2.0 к 3.0.

Т.е. те у кого стоит версия 2.0 переходят в 3.0 без проблем.
Те же у кого стоит 1.0 запустив update переходят тоже в 3.0, но update выполняет сначала переход к 2.0, а затем в 3.0
...
Рейтинг: 0 / 0
Неопределенность в выборе метода работы с БД
    #34554402
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WStealth - так сделано в 1С, правда "в автомате" всё делать бывает невозможно и требуется ручной переход (Запустите обработку и укажите на какие суб-счета делать перенос со счёта тако-то).
______________________________________________
Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде!
...
Рейтинг: 0 / 0
Неопределенность в выборе метода работы с БД
    #34555340
WStealth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Petro123:
Согласен, бывают моменты, когда в автомате не перейдешь.

2 ALL:
Вот еще вопросик:

Как целесообразно работать с базой???

Т.е. например, открывать соединение к серверу при старте приложения-клиента, и, например, ели пользователь хочет работать со справочником заказчиков, открывать соединение с таблицей заказчиков, а потом после окончания работы - закрывать соединение с таблицей, но до выхода из приложения-клиента оставлять открытое соединение с сервером...
Или же подключаться к серверу и базе при открытии справочника, а после его закрытия - закрывать соединение и с базой и с сервером.

И еще, например, при изменении данных заказчика открывается форма с полями данного заказчика и кнопочками ок и cancel. Так вот для ввода этих данных в поля лучше использовать обычные TextBox (и по нажатию ок добалвять или изменять данные в базе путем sql-запросов) или с привязкой к данным (изменять путем запросов ничего не нужно, а потом просто вызывать метод tableadapter.update)?

Мое мнение - лучше работать через обычные TextBox и sql-запросы (т.к. интерфейс напрямую не привязан к данным, что например соответствует модели MVC (модель - контроллер - представление)).

Хотелось бы услышать ваше мнение - как профи, которые на этом деле шляпу съели...
...
Рейтинг: 0 / 0
Неопределенность в выборе метода работы с БД
    #34555645
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WStealth
Т.е. например, открывать соединение к серверу при старте приложения-клиента, и, например, ели пользователь хочет работать со справочником заказчиков, открывать соединение с таблицей заказчиков, а потом после окончания работы - закрывать соединение с таблицей, но до выхода из приложения-клиента оставлять открытое соединение с сервером...
Или же подключаться к серверу и базе при открытии справочника, а после его закрытия - закрывать соединение и с базой и с сервером.

============= всё равно. Слышал, что MS рекомендует недержать коннект без надобности. Но если открывать и закрывать на каждый чих, СУБД должно поддерживать пул коннектов для ускорения открытия соединения.

Мое мнение - лучше работать через обычные TextBox и sql-запросы (т.к. интерфейс напрямую не привязан к данным, что например соответствует модели MVC (модель - контроллер - представление)).

======= IMHO данный вопрос, как и первый относится к КОНКРЕТНОМУ форуму-стилю - ЯП-программирования
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Неопределенность в выборе метода работы с БД
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]