|
Безопасная работа с данными
|
|||
---|---|---|---|
#18+
Здравствуйте. Я тут задумался, как написать наиболее безопасное (в смысле отказов сетки и т.д.) приложение. Почитал кое-что (технология файл-сервер), и вот какая схема у меня получилась: - таблицы открываются, делается выборка одной записи (view), таблицы закрываются. - работа пользователей с view - таблицы открываются, делается update из view, таблицы закрываются. Возникло несколько вопросов: 1. при многопользовательском режиме как синхронизировать изменения? блокировкой записей? т.е. пока один редактирует, другой может покурить и кофе попить? 2. при записи данных (при наличии блокировки) нужна ли буферизация? 3. зачем тогда DE? Прошу извинить за такие вопросы, но если по форумам, то информация очень разрознена, а в лит-ре замучался искать, там мало что написано конкретно по интересующей меня теме. Всем заранее благодарен. )) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2012, 06:50 |
|
Безопасная работа с данными
|
|||
---|---|---|---|
#18+
gore-egor- таблицы открываются, делается update из view, таблицы закрываются сеть падает, превед данным.на файл-сервере нормально ничего не получится, хоть что выдумывайте. Я в своё время тоже пытался такой велосипед изобрести. Клиент-сервер избавит от этого геморроя надёжно . ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2012, 08:23 |
|
Безопасная работа с данными
|
|||
---|---|---|---|
#18+
tanglirКлиент-сервер избавит от этого геморроя надёжно .в смысле SQL-сервер? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2012, 08:27 |
|
Безопасная работа с данными
|
|||
---|---|---|---|
#18+
gore-egor, угу. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2012, 08:32 |
|
Безопасная работа с данными
|
|||
---|---|---|---|
#18+
tanglir, все бы хорошо, но он денег стоит, а начальству не объяснишь. уже пытался, но или я тупой или начальство (второе вернее) мне задают вопрос: а sql, что, не виснет никогда? а я не могу правильно ответить. видимо, первое вернее ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2012, 08:38 |
|
Безопасная работа с данными
|
|||
---|---|---|---|
#18+
gore-egor, во-первых, не mssql-сервером единым (да и у него есть беспл. версия, которой, судя по Вашим вопросам, Вам хватит надолго :)) во-вторых, я ещё ни разу не видел "зависшего" сервера. Впрочем, это не значит, что такое невозможно, но в случае зависания файл-сервера/обрыва сети за сохранность данных в файлах на файл-сервере поручиться невозможно. В случае же скл-сервера вероятность того, что они сохранятся, близка к 100%. Да и многопользовательскую работу на ФС... нет, ну можно, конечно, организовать, но это будет какой-то лес из костылей... ЗЫ. А вообще, пока не озвучена задача, всё это так, гадание на кофейной гуще. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2012, 08:54 |
|
Безопасная работа с данными
|
|||
---|---|---|---|
#18+
gore-egor, 1. Открытие таблиц (команда USE), хотя и достаточно быстрая операция, но ее длительность зависит от ряда сопутствующих факторов. При определенных условиях это может занимать достаточно много времени. "Достаточно много" для того, чтобы это было заметно пользователем 2. Блокировка - это процесс, который должен занимать как можно меньше времени. Сама идея блокировать данные на длительный срок (пока пользователь редактирует данные) - крайне не удачное решение. Такого следует всячески избегать. Может привести к тому, что пока один пользователь что-то там редактирует никто другой ничего сделать не сможет. Т.е. вообще ничего. Как правило, при работе в многопользовательском режиме используется режим оптимистической буферизации. Это значит, что в процессе редактирования данных эти самые данные не блокируется. Блокировка выполняется только в момент нажатия кнопки "Сохранить" для сброса внесенных изменений. В этом случае, в качестве конфликта совместного доступа возможна только ситуация, когда другой пользователь уже успел изменить те же самые данные. Проверить это очень просто. Надо в условие отбора добавить значения полей до модификации. Ну, например, Вы редактируете в таблице запись с ID=1 и значением поля Qty=1. Вы устанавливаете значение поля Qty=2. Тогда код на модификацию будет выглядеть примерно так Код: sql 1. 2. 3. 4. 5. 6. 7.
На самом деле, именно это и делают Local View при определенных режимах настройки опции "SQL WHERE clauses include". В этой опции Вы и выбираете какие именно поля надо включить в выражение WHERE формируемой команды Update-SQL Key field only - только ID Key and updatable field - ID и все те поля, которые были помечены как изменяемые (галка под карандашом) Key and modified field - ID и все те поля, которые были изменены из тех, что помечены как изменяемые (галка под карандашом) Key and timestamp - ID и поле Timestamp. Для Local View - не применимо Однако в большинстве случаев это не требуется. Дело в том, что пользователю нет дела до того, что кто-то другой что-то там успел изменить. Ему поставлена задача внести изменения. И он будет их вносить, если только программа напрямую не заблокирует этот процесс. Поэтому, в большинстве случаев происходит просто запись изменений поверх изменений другого пользователя. Без каких-либо дополнительных проверок. Кто последний внес изменения, тот и прав. Поэтому обычно всегда ставят режим Key field only - только ID ===================================== Другими словами, перевод приложения на работу в режиме оптимистической буферизации уже достаточно существенно снизит риски потери данных. Хотя, конечно, значительно большую гарантию дает перевод приложения в режим клиент-сервер. Как уже было замечено, существуют бесплатные SQL-сервера, да и MS SQL-сервер тоже есть в бесплатном варианте. Только следует заметить, что работа в режиме клиент-сервер принципиально отличается от работы в режиме файл-сервер. Придется переписывать почти все приложение. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2012, 12:53 |
|
Безопасная работа с данными
|
|||
---|---|---|---|
#18+
gore-egor... Я тут задумался, как написать наиболее безопасное (в смысле отказов сетки и т.д.) приложение... Я в свое время сделал такое. В сеть "смотрел" web service, а все выполнялось на локальном серевере. Несколько раз обесточивалась вся сеть, но данные не "терялись" и индексы не рушились... Но, это было очень сложно реализвать так как я ловил себя на мысли что изобретаю велосипед под названием SQL Server Так что как Вам дали совет выше - сразу начните с MS SQL Server 2012 - очень хороший сервер для работы с данными (есть бесплатная версия)... "Ломается" ли SQL Server - ответ однозначно да (иначе зачем нам столько DBA?). Но все зависит от многих дополнительных причин, но это тема другого топика... ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2012, 13:55 |
|
Безопасная работа с данными
|
|||
---|---|---|---|
#18+
всем спасибо, буду изучать советы! ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2012, 16:23 |
|
Безопасная работа с данными
|
|||
---|---|---|---|
#18+
gore-egorЗдравствуйте. Я тут задумался, как написать наиболее безопасное (в смысле отказов сетки и т.д.) приложение. Почитал кое-что (технология файл-сервер), и вот какая схема у меня получилась: - таблицы открываются, делается выборка одной записи (view), таблицы закрываются. - работа пользователей с view - таблицы открываются, делается update из view, таблицы закрываются. По сути ты изобрел SQL-сервер :) убогий правда. И тут ты только снизишь вероятность порчи данных или индексов при сбоях в сети, но не избавишься от них совсем. Возьми MS-SQL Express и не мучайся. Он бесплатный, ограничения: размер базы 10 Гб. Использует максимум 1 процессор, 1,5 Гб оперативки. Ставить на серверный виндовс тоже не обязательно. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2012, 07:47 |
|
Безопасная работа с данными
|
|||
---|---|---|---|
#18+
Dima TВозьми MS-SQL Express и не мучайся. Он бесплатный, ограничения: размер базы 10 Гб. Использует максимум 1 процессор, 1,5 Гб оперативки. Ставить на серверный виндовс тоже не обязательно.да уж......... я уже попробовал 12863975 ((( ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2012, 09:43 |
|
Безопасная работа с данными
|
|||
---|---|---|---|
#18+
gore-egorда уж......... я уже попробовал 12863975 ((( А причем тут Visual Studio 2008 ? Хотя и оно должно нормально с фоксом работать, возможно комп у тебя загажен всяким софтом. После него фокс не пробовал переустановить? В любом случае один глюк не основание для отказа от софта, используемого в миллионах приложений. Качай SQL 2012 и Management Studio. PS Если никогда с SQL серверами не работал, то советую начать с прочтения какой-нибудь книжки по MS-SQL чтобы с возможностями и особенностями познакомиться. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2012, 09:59 |
|
Безопасная работа с данными
|
|||
---|---|---|---|
#18+
Dima TА причем тут Visual Studio 2008 ?MS-SQL Express там тоже есть Dima Tвозможно комп у тебя загажен всяким софтом.с бесплатным авастом они поцапались Dima TПосле него фокс не пробовал переустановить?пробовал - те же eggs - вид сбоку благодарю за ссылку, буду пробовать ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2012, 10:28 |
|
|
start [/forum/topic.php?fid=41&msg=37888282&tid=1583559]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
51ms |
get topic data: |
10ms |
get forum data: |
8ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
others: | 21ms |
total: | 161ms |
0 / 0 |