|
Применение автономной работы с бд на практике
|
|||
---|---|---|---|
#18+
значит я беру в бд источнике налаживаю первичные ключи, внешние ключи и тд пишу всякие триггеры, представления а потом беру датасет заливаю из бд таблички и все по новой расставляю? а что если у меня при изменении записи в источнике бд срабатывает триггер и он чето выполняет над бд? как мне сделать тоже самое в датасете раз уж я отсоединенно работаю? написать тот же триггер в виде функции ползающей по дататейблам? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2015, 23:24 |
|
Применение автономной работы с бд на практике
|
|||
---|---|---|---|
#18+
faustmangos, лучше делать не там и не тут, в середине, а там и тут сгенерировать :) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2015, 23:37 |
|
Применение автономной работы с бд на практике
|
|||
---|---|---|---|
#18+
ViPRos, спасибо профэссор, ваши ответы всегда бьют в цель моего незнания ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2015, 23:43 |
|
Применение автономной работы с бд на практике
|
|||
---|---|---|---|
#18+
faustmangos, ну че тут знать то? надо и Датасет и БД сгенерировать из концептуальной модели ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2015, 23:46 |
|
Применение автономной работы с бд на практике
|
|||
---|---|---|---|
#18+
faustmangosзначит я беру в бд источнике налаживаю первичные ключи, внешние ключи и тд пишу всякие триггеры, представления а потом беру датасет заливаю из бд таблички и все по новой расставляю? а что если у меня при изменении записи в источнике бд срабатывает триггер и он чето выполняет над бд? как мне сделать тоже самое в датасете раз уж я отсоединенно работаю? написать тот же триггер в виде функции ползающей по дататейблам?Нет. Сказали же, DataSet != БД. В DataSet нужно хранить результаты запросов. А лучше с DataSet вообще не связываться, лучше сразу использовать Entity Framework. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2015, 00:16 |
|
Применение автономной работы с бд на практике
|
|||
---|---|---|---|
#18+
sphinx_mvАлексей КВ MSSQL можно подписаться на изменения в БД (см SqlDependency), но обычно этим не пользуются, особенно при большом количестве пользователей."Необходимо и достаточно" в MSSQL использовать timestamp/rowversion при любом количестве подписчиков. Аналогично в Oracle - ORA_ROWSCN."тёплое" vs "мягкое" ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2015, 00:17 |
|
Применение автономной работы с бд на практике
|
|||
---|---|---|---|
#18+
Алексей К, DataSet же не просто для хранения результатов запросов, а для последующей обработки этих результатов и запись измененных результатов в бд значит выходит, что работать с DataSet можно так: 1) использовать точную копию бд, путем генерации концептуальной модели (с) Профэссор, и как я понимаю надо будет полностью скопировать логику базы данных в программу, а она может быть сложной, и тогда вопрос зачем вообще нужны все эти объекты типа процедур и триггеров в базе данных? 2) использовать часть бд, а если в бд сложная логика то надо будет постараться наладить связи между огрызком бд в проге с бд источником и самый отстой - Вася залил бд в свой датасет удалил оттуда запись но из бд она еще не удалилась, т.к. он еще не обновлял ее данными из своего датасет, в это время Витя на другом проводе заливает бд с еще не удаленной записью в свой датасет и там ее видит, и тут Вася обновляю источник данными из датасета. Т.е. выходит у Вити запись осталась, а Васи меня удалилась? И тут Витя начинает работать с этой записью и изменяет эту запись в датасете, затем через какоето время он обновил источник своими данными. Что будет в базе данных в результате? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2015, 00:55 |
|
Применение автономной работы с бд на практике
|
|||
---|---|---|---|
#18+
faustmangos, ну почитай про пессимизм, оптимизм при работе с данными бд целиком в датасет обычно не надо, надо именно "огрызок", но целостный (подсхема называется), а не "результат запросов" ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2015, 00:59 |
|
Применение автономной работы с бд на практике
|
|||
---|---|---|---|
#18+
короче DataSet нужен для решения проблемы большого количества соединений, но решает он ее "по-свойму", тупым закачиванием все себе на комп, созданием там утопии работы с базы данных - свои отношения свои ключики, быстрый доступ к данным в памяти блаблабла, но стоп, что он решал? большое кол-во соединений? значит у нас 100 клиентов и каждый качнул себе парочку огрызков бд поработал с ним и слил обратно в бд а там что теперь кеся меся или как? либо каждому клиенту обновлять этот датасет каждый раз? тогда возвращаемся к тем же постоянным соединениям единственный плюс который я вижу в datasete так это работа с xml ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2015, 01:15 |
|
Применение автономной работы с бд на практике
|
|||
---|---|---|---|
#18+
faustmangos, ну возьми вместо датасета любой ORM, тот же EF, представь работу с ним. Клиент запрашивает из БД данные, получает, например, несколько десятков объектов (что равноценно нескольким десяткам строк в datatable). Отображает эти объекты в UI. Человек, поработав с ними, обновляет БД. Но до этого другой клиент уже успел обновить эти же данные. Что получаем? Меня всегда поражало, почему такие вопросы возникают в связи с dataset/datatable, но те же самые проблемы при работе с ORM или врукопашную (читаем через datareader, вручную маппим на объекты, потом пишем через datawriter) воспринимаются как само собой разумеющееся. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2015, 01:59 |
|
Применение автономной работы с бд на практике
|
|||
---|---|---|---|
#18+
Алексей Кsphinx_mvпропущено... "Необходимо и достаточно" в MSSQL использовать timestamp/rowversion при любом количестве подписчиков. Аналогично в Oracle - ORA_ROWSCN."тёплое" vs "мягкое"Не теплое и не мягкое, а способ выделения и получения изменений из базы данных без плясок с бубнами. И будет это работать даже с оффлайн клиентами при любом их количестве (в отличие от). А вообще - RTFM : SqlDependency(бла-бла-бла) Примечание SqlDependency предназначен для использования в приложениях ASP.NET или службах промежуточного уровня , когда относительно небольшое количество серверов имеют активные зависимости от базы данных. Этот объект не предназначен для использования в клиентских приложениях , где сотни и тысячи клиентских компьютеров могут поддерживать объекты SqlDependency, связанные с одним сервером базы данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2015, 02:23 |
|
Применение автономной работы с бд на практике
|
|||
---|---|---|---|
#18+
petalvik, да ты прав, но дело в том, что datareader работает намного быстрее dataset и датасет эффективен если использовать его для того, чтобы он синхронизировал сразу по несколько измененных строк, т.е. надо дождаться пока не наберется какоето количество изменений, но тогда и начинаются проблемы с множественным доступом, а с помощью dbcommand можно апдейтнуть только 1 запись, хоть и придется потратится на соединение зато шанс что ты работаешь впустую и ктото просто потом своим датасетом перепишет твои данные уменьшается ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2015, 02:48 |
|
Применение автономной работы с бд на практике
|
|||
---|---|---|---|
#18+
faustmangosшанс что ты работаешь впустую и ктото просто потом своим датасетом перепишет твои данные уменьшаетсяВо-первых, использовать нужно DataAdapter (как где-то здесь ) и, во-вторых, оптимистическую блокировку ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2015, 04:54 |
|
Применение автономной работы с бд на практике
|
|||
---|---|---|---|
#18+
faustmangospetalvik, да ты прав, но дело в том, что datareader работает намного быстрее dataset и датасет эффективен если использовать его для того, чтобы он синхронизировал сразу по несколько измененных строк, т.е. надо дождаться пока не наберется какоето количество изменений, но тогда и начинаются проблемы с множественным доступом, а с помощью dbcommand можно апдейтнуть только 1 запись, хоть и придется потратится на соединение зато шанс что ты работаешь впустую и ктото просто потом своим датасетом перепишет твои данные уменьшаетсяВы пишете свою первую программу? Может начать с реальных требований, а не фантазий? Используйте DataAdapter, как уже предложили выше. Внутри него как раз таки datareader с dbcommand. Что будет делать Ваш Вася, если у него интернет отвалится на пару часов? Магазин закроет на это время? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2015, 09:29 |
|
Применение автономной работы с бд на практике
|
|||
---|---|---|---|
#18+
faustmangosЗадачка - есть сеть магазинов в городе(1,2,3...) у них есть общий склад из которого они пополняют свои запасы и тд. Один из вариантов решения задачи: общая БД, доступная online всем магазинам в городе (доступ через OData или Web API). Самый простой и надежный способ. Требуется хороший интернет канал, клиенты подключаются через Wi-Fi. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2015, 10:00 |
|
Применение автономной работы с бд на практике
|
|||
---|---|---|---|
#18+
skyANAИспользуйте DataAdapter, как уже предложили выше. Внутри него как раз таки datareader с dbcommand. кэп? skyANAЧто будет делать Ваш Вася, если у него интернет отвалится на пару часов? Магазин закроет на это время? мм, списывать памперсы которых нет уже на складе? Если инет отвалился значит со складом на это время работа закрыта, магазин то тут причем? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2015, 14:03 |
|
Применение автономной работы с бд на практике
|
|||
---|---|---|---|
#18+
faustmangosskyANAИспользуйте DataAdapter, как уже предложили выше. Внутри него как раз таки datareader с dbcommand. кэп? skyANAЧто будет делать Ваш Вася, если у него интернет отвалится на пару часов? Магазин закроет на это время? мм, списывать памперсы которых нет уже на складе? Если инет отвалился значит со складом на это время работа закрыта, магазин то тут причем?То есть данные о продажам памперсов магазин заносит в другую базу? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2015, 14:17 |
|
Применение автономной работы с бд на практике
|
|||
---|---|---|---|
#18+
faustmangos, есть памперсы в магазине, есть памперсы на складе, но нет интернета. Магазин в это время работает, с какими данными, откуда они читаются и куда пишутся? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2015, 14:22 |
|
Применение автономной работы с бд на практике
|
|||
---|---|---|---|
#18+
skyANA, да какаша у него пока в башке, ему уже все рассказали ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2015, 14:27 |
|
Применение автономной работы с бд на практике
|
|||
---|---|---|---|
#18+
skyANAИМХО с объектами в памяти проще и оптимальнее работать, чем с DataSet-ами. Не всегда, хорошо когда четко можно классы объектов в модели определить. А бывает что из трех таблиц нужно формировать 20 различных наборов данных и не известно, какой набор данных юзеру завтра еще понадобится. Двадцать классов лепить и еще какие динамические классы придумывать не комильфо. Датасеты с таблицами в таких сучаях удобнее, хотя и тормознутее. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2015, 15:01 |
|
Применение автономной работы с бд на практике
|
|||
---|---|---|---|
#18+
EDUARD SAPOTSKIskyANAИМХО с объектами в памяти проще и оптимальнее работать, чем с DataSet-ами. Не всегда, хорошо когда четко можно классы объектов в модели определить. А бывает что из трех таблиц нужно формировать 20 различных наборов данных и не известно, какой набор данных юзеру завтра еще понадобится. Двадцать классов лепить и еще какие динамические классы придумывать не комильфо. Датасеты с таблицами в таких сучаях удобнее, хотя и тормознутее.Шаблон спецификация, Query Object, CQRS, нет? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2015, 15:11 |
|
Применение автономной работы с бд на практике
|
|||
---|---|---|---|
#18+
skyANAШаблон спецификация, Query Object, CQRS, нет? Ага, но гемора не меньше чем с датасетами, а прозрачность кода просто ппц. Ваще топик баян :( ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2015, 15:15 |
|
Применение автономной работы с бд на практике
|
|||
---|---|---|---|
#18+
EDUARD SAPOTSKIskyANAШаблон спецификация, Query Object, CQRS, нет? Ага, но гемора не меньше чем с датасетами, а прозрачность кода просто ппц. Ваще топик баян :(Прозрачность кода? В каком плане? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2015, 15:22 |
|
Применение автономной работы с бд на практике
|
|||
---|---|---|---|
#18+
skyANAВ каком плане? Хрен разгребешь. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2015, 15:30 |
|
Применение автономной работы с бд на практике
|
|||
---|---|---|---|
#18+
EDUARD SAPOTSKIskyANAВ каком плане? Хрен разгребешь.Да ладно, наоборот, см. картинку :) Command and Query Responsibility Segregation (CQRS) на практике ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2015, 16:12 |
|
|
start [/forum/topic.php?fid=17&msg=38848497&tid=1349647]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
160ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
66ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 290ms |
0 / 0 |