| Re: Нужен алгоритм | |
|---|---|
|
kornienko_ru Сообщений: 415 Откуда: Владивосток Дата регистрации: 06.09.2015 |
Вряд ли бизнес будет вникать в технические детали, в которых мало смыслит. А по поводу, что что-то может потеряться .... или файл или запись в БД.... вообще странно слышать. Всё зависит от программиста. Можно так написать, что ничего не сможет потеряться. А можно так писать, что и FileTable/FileStream вам не поможет, как этой бедной женщине.
|
| Re: Нужен алгоритм | |
|---|---|
|
PaulWist Сообщений: 14819 Дата регистрации: 01.04.2004 |
Хмм, предлагаю "показать" (можно на "пальцах/словами" схематично), как вы организовываете транзакционную целостность сохранения ссылки в табличку БД и файла в папку ОС. ![]() ------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) |
| Re: Нужен алгоритм | |
|---|---|
|
kornienko_ru Сообщений: 415 Откуда: Владивосток Дата регистрации: 06.09.2015 |
Выше уже варианты писал. Ещё раз.
1. Папка с xls доступна только программе, не пользователю. Для справки: в NTFS существуют права доступа к папкам. 2. Говорим проще. Не ссылка, а имя файла xls в этой папке. Это имя файла в числе прочих полей присутствует в записи БД для поиска этого файла. 3. Пользователю программа предоставляет меню в виде пунктов, к примеру копировать xls, в том числе из типовых шаблонов на xls (пользователь только скажет спасибо), редактировать xls, удалить xls, переименовать xls. Как вариант, в iшаблонах xls делаете кнопку с макросом <Сохранить в БД>. А можно такую кнопку сделать и в самой программе, под управлением которой открывается xls через COM. Если пользователь проигнорирует такую кнопку, а сохранит где-то локально, то соответственно у него в БД не будет этого файла — это свойство пользователь тоже может использовать себе на благо, прекрасно осознавая, что в базу файл в этом случае не попадет, а там сохранится файл до последней корректировки. Можно проявить творчество, дать из программы предупреждение, что вы не сохранили открытый файл. COM позволяет следить за изменениями в xls. 4. Программа должна вместе с пунктами Добавить, Удалить, Переименовать, Копировать соответственно обеспечивать все эти изменения над файлом с этой запрещенной для доступа пользователю папке. По другому программа не должна удалять и терять записи. Т.о. никакой потери связи у вас не может быть. Всё в руках прикладного программиста. Подобные вещи я делал. Всё работало. Всё зависит от программиста. |
| Re: Нужен алгоритм | |
|---|---|
|
PaulWist Сообщений: 14819 Дата регистрации: 01.04.2004 |
Отлично. Предполагаем, что рассматриваем случай файл-сервера, то есть клиенты фокса работают с не с локальным диском. Согласны? Если так, то продолжим. Вариант 1. Юзер нажал кнопку Добавить. Шаг 1, в табличку добавилась запись с именем. Шаг 2, в папку сохраняется файл. Вопрос: как проверяется, что файл сохранён и не битый? Вариант 2. Юзер нажал кнопку Редактировать. Шаг 1, в табличке обновилась запись с именем. Шаг 2, в папку сохраняется/перезаписывается файл, в этот момент, например, рвётся соединение с файл-сервером и файл обновился/не обновился - неизвестно. Вопрос: как откатывются изменения? Вариант 3. Юзер нажал кнопку Удалить, предположим, что в этот момент удаляются 2 записи и 2 файла. Шаг 1, в табличке удалились 2 записи с именем. Шаг 2, в папке файл 1 удалился, файл 2 не удалился (другой юзер/антивирус его держит). Вопрос: как решается такой кейс?
Сеть никогда не падала, антивирус/служба индексирования не держали файл,?? Не верю (с) Станиславский.
Вам сильно повезло, если это так. ![]() ------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) Исправлено 4 раз(а). Последнее : PaulWist, 21.03.24 08:49 |
| Re: Нужен алгоритм | |
|---|---|
|
kornienko_ru Сообщений: 415 Откуда: Владивосток Дата регистрации: 06.09.2015 |
Что значит не сохранился, битый? Не должно быть такой ситуации. С таким же успехом можно спросить, а что будет, если выключится сервер и БД станет битая. Можно предусмотреть хранить две последние версии файла. В Excel объекте проверяете после сохранения на открытие без ошибок, если открывается, то значит всё сохранилось "без битья".
На запись находящуюся в процессе редактирования при многопользовательской работе второму пользователю выдавать сообщение, что файл занят другим. Я вам ответил в целом, как вы просили. На каждый следующий вопрос есть ответ соответствующий ответ. Но тогда мне придётся всю логику программы вам описывать, каждого оператора? Давайте прекратим бесполезный спор. |
| Re: Нужен алгоритм | |
|---|---|
|
PaulWist Сообщений: 14819 Дата регистрации: 01.04.2004 |
Ответ известен. Поэтому, во "взрослых" СУБД при таких сбоях существуют специальные механизмы redo/undo, roll forward/back transaction, обеспечивающие ACID транзакции, впрочем у фокса с "родными" транзакциями не всё слава богу, а уж гетерогенными, вообще беда, где-то так.
Не-не-не, не надо, вашего ответа вполне достаточно для понимания
Если он бесполезный , то можно прекратить.------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) Исправлено 1 раз(а). Последнее : PaulWist, 21.03.24 10:47 |
| Re: Нужен алгоритм | |
|---|---|
|
kornienko_ru Сообщений: 415 Откуда: Владивосток Дата регистрации: 06.09.2015 |
Я кажется понял ваш намек. Поясняю. Есть такое мнение, что если документ, может быть и xls, находящийся на сервере открыт приложением (MS офисом) на локальном ПК и его не закрыли. Толи на обед ушли, толи сели срочно уехали. А вечером выключили свет или ПК и файл остался не закрыт. То якобы файл на сервере портится и уже не откроется без специальных процедур восстановления.
Я конечно так не работаю, но дамы такие взбаламошенные и безответственные есть. Во первых я лично никогда не открываю документы на сервере в режиме "для записи". Если открываю, то только через специальный wsf-скрипт (у меня на него стоит ассоциация в far), который открывает только в режиме чтения. Например для MS Word. Вот его текст MSWord.wsf:
Я для себя сделал этот открывальщик чисто по интуиции, чтобы точно не портить файлы. А если мне надо сидеть и долго что-то править, то я копирую этот файл себе на ПК, работаю с ним довольно долго и не один день, а затем копирую его на сервер. Соответственно, я бы рекомендовал что-то подобное внести и в алгоритм программы. Т.е. должно быть 2 варианта открытия. 1) для просмотра. 2) для редактирования. Во втором случае можно програмно сделать копию пользователю на ПК и там его через COM открыть для редактирования, если предполагается, что документы на сервере. Но если вы почитаете постановку задачи этой женщины, то она категорически повторяла, что все у неё находится на отдельном персональном ПК. И замечу, что никакая "взрослая" СУБД вас от таких людей не спасет. При любой СУБД xls надо не копировать с папки, а извлекать из БД — разницы в этом никакой.... файл при желании можно оставить открытым и выключить ПК или выдернуть сетевой кабель. При любой "взрослой" СУБД — будет одинаковый результат. Исправлено 1 раз(а). Последнее : kornienko_ru, 21.03.24 15:39 |
| Re: Нужен алгоритм | |
|---|---|
|
PaulWist Сообщений: 14819 Дата регистрации: 01.04.2004 |
Я про другое, про транзакции, во взрослой СУБД сам Engen "гарантирует" ACID (atomicity, consistency, isolation, durability) транзакции, в фоксе такое невозможно, всё остальное - это костыли. Схематично.
Во взрослой СУБД будут приняты все изменения во всех табличках, либо ни каких модификаций не произойдёт. В фоксе так сделать нельзя. Поэтому разница с фоксом принципиальная. Собственно об этом речь. ------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) Исправлено 2 раз(а). Последнее : PaulWist, 21.03.24 16:28 |
| Re: Нужен алгоритм | |
|---|---|
|
kornienko_ru Сообщений: 415 Откуда: Владивосток Дата регистрации: 06.09.2015 |
Вы вообще-то не по теме. Во первых это не имеет значения. Fox очень надежен за исключением memo... Поэтому я, если использую memo то только в файлах, которые изменяются очень редко. Никогда за всю историю у меня файлы не нарушались, а индексы я взял на своей разработанной платформе под индивидуальный контроль. Если база нормально не закрылась, то индексы при следующем включении переиндексируются. Во вторых ничего не запрещает в одном Repl изменить все поля в связанных файлах. В том, что вы написали, я не вижу особой нужды.
И вообще, зачем вы меня на сравнение VFP c чем-то другим пытаетесь отвлечь? Я о фоксе ничего не писал, а вы его постоянно вспоминаете. Речь здесь об алгоритме. Только и всего. Алгоритмом вы не занимаетесь, только тем, что пытаетесь куда-то увести, куда вам удобнее. Я не люблю так общаться. |
| Re: Нужен алгоритм | |
|---|---|
|
PaulWist Сообщений: 14819 Дата регистрации: 01.04.2004 |
Нууу. Вот мой первый вопрос: Цитата: Ваш ответ: никак ![]() ------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) Исправлено 1 раз(а). Последнее : PaulWist, 21.03.24 16:50 |
| Re: Нужен алгоритм | |
|---|---|
|
tata Автор Сообщений: 3521 Откуда: Йошкар-Ола Дата регистрации: 23.10.2005 |
Чей-та бедной-то? Вполне себе я состоятельная женщина. |
| Re: Нужен алгоритм | |
|---|---|
|
Дмитрий Петров Сообщений: 3142 Откуда: Пермь Дата регистрации: 09.07.2001 |
Мне однму кажется, что персонаж на бота похож?
|
| Re: Нужен алгоритм | |
|---|---|
|
kornienko_ru Сообщений: 415 Откуда: Владивосток Дата регистрации: 06.09.2015 |
Цитата: Сначала скопируйте файл в папку, а потом в поле БД заносите его местоположение и будет вам транзакционное счастье. А вообще, если желаете обсудить какой-то отвлеченный вопрос — заведите отдельную тему. Автор темы устранилась, на вопросы не отвечает. Видимо уже разрешила ситуацию. |
| Re: Нужен алгоритм | |
|---|---|
|
PaulWist Сообщений: 14819 Дата регистрации: 01.04.2004 |
1. Транзакционного счастья не будет, это первое.
2. Второе. Для транзакционного счастья обычно используют распределенные системы обмена сообщениями а-ля ApacheKafka или Очередь сообщений Майкрософт (MSMQ) или встроенные очереди самих СУБД а-ля Service Broker в этом случае гарантируется ACID транзакции, всё остальное - "костыли". ------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) Исправлено 1 раз(а). Последнее : PaulWist, 26.03.24 08:27 |
| Re: Нужен алгоритм | |
|---|---|
|
kornienko_ru Сообщений: 415 Откуда: Владивосток Дата регистрации: 06.09.2015 |
В общих чертах — это просто бла-бла. Истина в деталях. Когда начнем анализировать тексты. Тогда вопросы и ответы будят ясны. Вы думаете, что если в тех языках, что вы используете есть удобный сервис по защите транзакций, то на других языках это сделать нельзя? Там же (в ваших программах), то же заложен определенный алгоритм и последовательность операций. Думаю, что на любом языке, можно обеспечить транзакционную безопасность, всё зависит от умения. Еще раз вам говорю.
|
| Re: Нужен алгоритм | |
|---|---|
|
PaulWist Сообщений: 14819 Дата регистрации: 01.04.2004 |
Именно, и в деталях и в общих чертах - это рабочие/востребованные технологии.
Конечно возможно, правда я не увидел в ваших постах ни одной ссылки на хоть какой-то софт на других языках, и вообще упоминаний о транзакциях
Конечно возможно, потратить только надо несколько миллионочеловекочасов на разработку такого софта и "золотой ключик" будет "наш".
Меня за "советскую власть" агитировать не надо, что такое транзакция и как/чем/какими технологиями достигается её парадигма я в курсе. ![]() ------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) Исправлено 2 раз(а). Последнее : PaulWist, 27.03.24 08:15 |
| Re: Нужен алгоритм | |
|---|---|
|
kornienko_ru Сообщений: 415 Откуда: Владивосток Дата регистрации: 06.09.2015 |
Вам надо не только теорию читать, и использовать термины, но еще и понимать сами процессы на физическом уровне. Если вы изменяете связанные объекты... записи файлы, папки и т.д., никакая транзакционная база вам не даст 100% защиты транзакций при отключении питания (электричества). А вот я програмно напишу защиту передачи данных и вы будете иметь защиту 100% без всяких ваших миллионочеловекочасов. И я так и делаю. Есть разные способы в зависимости от ситуации. Выглядеть это будет так: питание вырубили, вы включаете ПК, запускаете программу и программа вас уведомляет, что была неудачно прервана операция... операция завершена. Такая защита у меня в моих программах в тех местах, где это необходимо есть. Я вам уже писал, что эту задачу с переносом файла в папку и изменением соответствующей записи в данных тоже можно реализовать дополнительной проверкой переноса файла на новое место и открытия его в этом месте в безопасном режиме "только чтение". Обычно до "ответственных" транзакций, я сохраняю некоторые свои переменные в файл.mem, где есть соответствующее значение, означающее, что необходимо восстановить транзакцию и совершить определенное действие. После завершения транзакции этот файл удаляется. На VFP, к примеру, есть такая команда — сохранить переменную или несколько переменных по шаблону в mem-файл. В отличие от ваших СУБД и ваших подходах, я даю 100% гарантию целостности БД.
|
| Re: Нужен алгоритм | |
|---|---|
|
AndyNigmatec Сообщений: 1758 Откуда: Волгоград Дата регистрации: 28.06.2015 |
Я с вас удивляюсь (с) Вы правда думаете что написали сии костыли лучше чем это (и еще многое другое) организовано во "взрослых" БД? Про быстродействие/объем данных я даже не говорю. Если так, то уверяю вас - вы сильно заблуждаетесь. |
| Re: Нужен алгоритм | |
|---|---|
|
kornienko_ru Сообщений: 415 Откуда: Владивосток Дата регистрации: 06.09.2015 |
"Костыли", "взрослая" и тому подобные высказывания — это ваше восприятие от вашего умения. То, что для вас может костыли, на самом деле инструмент. Например, в VFP есть такие операторы, которых скорей всего нет во "взрослых" БД. Я имею в виду команды сохранения и восстановления переменных. Это просто шикарно — запустил программу и все необходимые переменные с прошлого сеанса у тебя сохранены. Думайте, учитесь.... Иногда это поможет, там, где ваши "взрослые" будут бессильны.
|
| Re: Нужен алгоритм | |
|---|---|
|
kornienko_ru Сообщений: 415 Откуда: Владивосток Дата регистрации: 06.09.2015 |
А кстати что насчет быстродействия? Например VFP — одна из самых быстрых. А то что касается объема... конечно крупные БД это не её, а до 1 млрд. записей — без проблем, на VFP-A любой объем. Интересно сколько записей в файле БД у Тани с экселями
Наверняка меньше миллиарда. |
| © 2000-2025 Fox Club  |