:: Не фоксом единым
Re: Нужен алгоритм
kornienko_ru

Сообщений: 415
Откуда: Владивосток
Дата регистрации: 06.09.2015
Вряд ли бизнес будет вникать в технические детали, в которых мало смыслит. А по поводу, что что-то может потеряться .... или файл или запись в БД.... вообще странно слышать. Всё зависит от программиста. Можно так написать, что ничего не сможет потеряться. А можно так писать, что и FileTable/FileStream вам не поможет, как этой бедной женщине.
Ratings: 0 negative/0 positive
Re: Нужен алгоритм
PaulWist

Сообщений: 14819
Дата регистрации: 01.04.2004
kornienko_ru
...А по поводу, что что-то может потеряться .... или файл или запись в БД.... вообще странно слышать. Всё зависит от программиста. Можно так написать, что ничего не сможет потеряться. ...

Хмм, предлагаю "показать" (можно на "пальцах/словами" схематично), как вы организовываете транзакционную целостность сохранения ссылки в табличку БД и файла в папку ОС.


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
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. Программа должна вместе с пунктами Добавить, Удалить, Переименовать, Копировать соответственно обеспечивать все эти изменения над файлом с этой запрещенной для доступа пользователю папке. По другому программа не должна удалять и терять записи. Т.о. никакой потери связи у вас не может быть. Всё в руках прикладного программиста. Подобные вещи я делал. Всё работало. Всё зависит от программиста.
Ratings: 0 negative/0 positive
Re: Нужен алгоритм
PaulWist

Сообщений: 14819
Дата регистрации: 01.04.2004
kornienko_ru
4. Программа должна вместе с пунктами Добавить, Удалить, Переименовать, Копировать соответственно обеспечивать все эти изменения над файлом с этой запрещенной для доступа пользователю папке. По другому программа не должна удалять и терять записи.

Отлично.

Предполагаем, что рассматриваем случай файл-сервера, то есть клиенты фокса работают с не с локальным диском. Согласны?

Если так, то продолжим.

Вариант 1.

Юзер нажал кнопку Добавить.
Шаг 1, в табличку добавилась запись с именем.
Шаг 2, в папку сохраняется файл.

Вопрос: как проверяется, что файл сохранён и не битый?

Вариант 2.

Юзер нажал кнопку Редактировать.
Шаг 1, в табличке обновилась запись с именем.
Шаг 2, в папку сохраняется/перезаписывается файл, в этот момент, например, рвётся соединение с файл-сервером и файл обновился/не обновился - неизвестно.

Вопрос: как откатывются изменения?

Вариант 3.

Юзер нажал кнопку Удалить, предположим, что в этот момент удаляются 2 записи и 2 файла.
Шаг 1, в табличке удалились 2 записи с именем.
Шаг 2, в папке файл 1 удалился, файл 2 не удалился (другой юзер/антивирус его держит).

Вопрос: как решается такой кейс?

kornienko_ru
... Т.о. никакой потери связи у вас не может быть.

Сеть никогда не падала, антивирус/служба индексирования не держали файл,?? Не верю (с) Станиславский.

kornienko_ru
Подобные вещи я делал. Всё работало. Всё зависит от программиста.

Вам сильно повезло, если это так.


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)




Исправлено 4 раз(а). Последнее : PaulWist, 21.03.24 08:49
Ratings: 0 negative/0 positive
Re: Нужен алгоритм
kornienko_ru

Сообщений: 415
Откуда: Владивосток
Дата регистрации: 06.09.2015
Что значит не сохранился, битый? Не должно быть такой ситуации. С таким же успехом можно спросить, а что будет, если выключится сервер и БД станет битая. Можно предусмотреть хранить две последние версии файла. В Excel объекте проверяете после сохранения на открытие без ошибок, если открывается, то значит всё сохранилось "без битья".
На запись находящуюся в процессе редактирования при многопользовательской работе второму пользователю выдавать сообщение, что файл занят другим.
Я вам ответил в целом, как вы просили. На каждый следующий вопрос есть ответ соответствующий ответ. Но тогда мне придётся всю логику программы вам описывать, каждого оператора? Давайте прекратим бесполезный спор.
Ratings: 0 negative/0 positive
Re: Нужен алгоритм
PaulWist

Сообщений: 14819
Дата регистрации: 01.04.2004
kornienko_ru
Что значит не сохранился, битый? Не должно быть такой ситуации. С таким же успехом можно спросить, а что будет, если выключится сервер и БД станет битая.

Ответ известен.

Поэтому, во "взрослых" СУБД при таких сбоях существуют специальные механизмы redo/undo, roll forward/back transaction, обеспечивающие ACID транзакции, впрочем у фокса с "родными" транзакциями не всё слава богу, а уж гетерогенными, вообще беда, где-то так.

kornienko_ru
Я вам ответил в целом, как вы просили. На каждый следующий вопрос есть ответ соответствующий ответ.

Не-не-не, не надо, вашего ответа вполне достаточно для понимания

kornienko_ru
Давайте прекратим бесполезный спор.

Если он бесполезный , то можно прекратить.


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)




Исправлено 1 раз(а). Последнее : PaulWist, 21.03.24 10:47
Ratings: 0 negative/0 positive
Re: Нужен алгоритм
kornienko_ru

Сообщений: 415
Откуда: Владивосток
Дата регистрации: 06.09.2015
Я кажется понял ваш намек. Поясняю. Есть такое мнение, что если документ, может быть и xls, находящийся на сервере открыт приложением (MS офисом) на локальном ПК и его не закрыли. Толи на обед ушли, толи сели срочно уехали. А вечером выключили свет или ПК и файл остался не закрыт. То якобы файл на сервере портится и уже не откроется без специальных процедур восстановления.
Я конечно так не работаю, но дамы такие взбаламошенные и безответственные есть. Во первых я лично никогда не открываю документы на сервере в режиме "для записи". Если открываю, то только через специальный wsf-скрипт (у меня на него стоит ассоциация в far), который открывает только в режиме чтения. Например для MS Word. Вот его текст MSWord.wsf:
<job>
<comment>
Запуск MS Word в режиме просмотра
=================================
</comment>
<script>
// Открытие MS Word только для просмотра
//
// на входе обязательный аргумент - имя файла
// с полным путем и в кавычках
var oArg=WScript.Arguments;
var WshS=WScript.CreateObject("WScript.Shell");
oWrd=new ActiveXObject("Word.Application");
// Метод Open: [url]https://msdn.microsoft.com/en-us/library/office/ff835182.aspx[/url]
oWrd.Documents.Open(oArg(0),1,true);
oWrd.ActiveDocument.ActiveWindow.View.Type=3;
oWrd.Visible=true;
//WshS.SendKeys("%+{TAB}");
WshS.AppActivate(oWrd.Caption);
</script>
</job>

Я для себя сделал этот открывальщик чисто по интуиции, чтобы точно не портить файлы. А если мне надо сидеть и долго что-то править, то я копирую этот файл себе на ПК, работаю с ним довольно долго и не один день, а затем копирую его на сервер. Соответственно, я бы рекомендовал что-то подобное внести и в алгоритм программы. Т.е. должно быть 2 варианта открытия. 1) для просмотра. 2) для редактирования. Во втором случае можно програмно сделать копию пользователю на ПК и там его через COM открыть для редактирования, если предполагается, что документы на сервере. Но если вы почитаете постановку задачи этой женщины, то она категорически повторяла, что все у неё находится на отдельном персональном ПК.

И замечу, что никакая "взрослая" СУБД вас от таких людей не спасет. При любой СУБД xls надо не копировать с папки, а извлекать из БД — разницы в этом никакой.... файл при желании можно оставить открытым и выключить ПК или выдернуть сетевой кабель. При любой "взрослой" СУБД — будет одинаковый результат.



Исправлено 1 раз(а). Последнее : kornienko_ru, 21.03.24 15:39
Ratings: 0 negative/0 positive
Re: Нужен алгоритм
PaulWist

Сообщений: 14819
Дата регистрации: 01.04.2004
kornienko_ru
При любой СУБД xls надо не копировать с папки, а извлекать из БД — разницы в этом никакой....

Я про другое, про транзакции, во взрослой СУБД сам Engen "гарантирует" ACID (atomicity, consistency, isolation, durability) транзакции, в фоксе такое невозможно, всё остальное - это костыли.

Схематично.

begin tran
insert/update/delete первая табличка
insert/update/delete табличка с файлом/FileTable
insert/update/delete вторая табличка
commit

Во взрослой СУБД будут приняты все изменения во всех табличках, либо ни каких модификаций не произойдёт.

В фоксе так сделать нельзя.

Поэтому разница с фоксом принципиальная.

Собственно об этом речь.


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)




Исправлено 2 раз(а). Последнее : PaulWist, 21.03.24 16:28
Ratings: 0 negative/0 positive
Re: Нужен алгоритм
kornienko_ru

Сообщений: 415
Откуда: Владивосток
Дата регистрации: 06.09.2015
Вы вообще-то не по теме. Во первых это не имеет значения. Fox очень надежен за исключением memo... Поэтому я, если использую memo то только в файлах, которые изменяются очень редко. Никогда за всю историю у меня файлы не нарушались, а индексы я взял на своей разработанной платформе под индивидуальный контроль. Если база нормально не закрылась, то индексы при следующем включении переиндексируются. Во вторых ничего не запрещает в одном Repl изменить все поля в связанных файлах. В том, что вы написали, я не вижу особой нужды.
И вообще, зачем вы меня на сравнение VFP c чем-то другим пытаетесь отвлечь? Я о фоксе ничего не писал, а вы его постоянно вспоминаете. Речь здесь об алгоритме. Только и всего. Алгоритмом вы не занимаетесь, только тем, что пытаетесь куда-то увести, куда вам удобнее. Я не люблю так общаться.
Ratings: 0 negative/0 positive
Re: Нужен алгоритм
PaulWist

Сообщений: 14819
Дата регистрации: 01.04.2004
kornienko_ru
Вы вообще-то не по теме. Во первых это не имеет значения. Fox очень надежен за исключением memo...

Нууу.

Вот мой первый вопрос:

Цитата:
Хмм, предлагаю "показать" (можно на "пальцах/словами" схематично), как вы организовываете транзакционную целостность сохранения ссылки в табличку БД и файла в папку ОС.

Ваш ответ: никак


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)




Исправлено 1 раз(а). Последнее : PaulWist, 21.03.24 16:50
Ratings: 0 negative/0 positive
Re: Нужен алгоритм
tata
Автор

Сообщений: 3521
Откуда: Йошкар-Ола
Дата регистрации: 23.10.2005
kornienko_ru
А можно так писать, что и FileTable/FileStream вам не поможет, как этой бедной женщине.
Чей-та бедной-то? Вполне себе я состоятельная женщина.
Ratings: 0 negative/0 positive
Re: Нужен алгоритм
Дмитрий Петров

Сообщений: 3142
Откуда: Пермь
Дата регистрации: 09.07.2001
Мне однму кажется, что персонаж на бота похож?
Ratings: 0 negative/0 positive
Re: Нужен алгоритм
kornienko_ru

Сообщений: 415
Откуда: Владивосток
Дата регистрации: 06.09.2015
Цитата:
Хмм, предлагаю "показать" (можно на "пальцах/словами" схематично), как вы организовываете транзакционную целостность сохранения ссылки в табличку БД и файла в папку ОС.

Сначала скопируйте файл в папку, а потом в поле БД заносите его местоположение и будет вам транзакционное счастье.

А вообще, если желаете обсудить какой-то отвлеченный вопрос — заведите отдельную тему. Автор темы устранилась, на вопросы не отвечает. Видимо уже разрешила ситуацию.
Ratings: 0 negative/0 positive
Re: Нужен алгоритм
PaulWist

Сообщений: 14819
Дата регистрации: 01.04.2004
kornienko_ru
Цитата:
Хмм, предлагаю "показать" (можно на "пальцах/словами" схематично), как вы организовываете транзакционную целостность сохранения ссылки в табличку БД и файла в папку ОС.

Сначала скопируйте файл в папку, а потом в поле БД заносите его местоположение и будет вам транзакционное счастье.


1. Транзакционного счастья не будет, это первое.

2. Второе. Для транзакционного счастья обычно используют распределенные системы обмена сообщениями а-ля ApacheKafka или Очередь сообщений Майкрософт (MSMQ) или встроенные очереди самих СУБД а-ля Service Broker в этом случае гарантируется ACID транзакции, всё остальное - "костыли".



------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)




Исправлено 1 раз(а). Последнее : PaulWist, 26.03.24 08:27
Ratings: 0 negative/1 positive
Re: Нужен алгоритм
kornienko_ru

Сообщений: 415
Откуда: Владивосток
Дата регистрации: 06.09.2015
В общих чертах — это просто бла-бла. Истина в деталях. Когда начнем анализировать тексты. Тогда вопросы и ответы будят ясны. Вы думаете, что если в тех языках, что вы используете есть удобный сервис по защите транзакций, то на других языках это сделать нельзя? Там же (в ваших программах), то же заложен определенный алгоритм и последовательность операций. Думаю, что на любом языке, можно обеспечить транзакционную безопасность, всё зависит от умения. Еще раз вам говорю.
Ratings: 0 negative/0 positive
Re: Нужен алгоритм
PaulWist

Сообщений: 14819
Дата регистрации: 01.04.2004
kornienko_ru
В общих чертах — это просто бла-бла. Истина в деталях.

Именно, и в деталях и в общих чертах - это рабочие/востребованные технологии.

kornienko_ru
Вы думаете, что если в тех языках, что вы используете есть удобный сервис по защите транзакций, то на других языках это сделать нельзя?

Конечно возможно, правда я не увидел в ваших постах ни одной ссылки на хоть какой-то софт на других языках, и вообще упоминаний о транзакциях

kornienko_ru
Думаю, что на любом языке, можно обеспечить транзакционную безопасность, всё зависит от умения.

Конечно возможно, потратить только надо несколько миллионочеловекочасов на разработку такого софта и "золотой ключик" будет "наш".

kornienko_ru
Еще раз вам говорю.

Меня за "советскую власть" агитировать не надо, что такое транзакция и как/чем/какими технологиями достигается её парадигма я в курсе.


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)




Исправлено 2 раз(а). Последнее : PaulWist, 27.03.24 08:15
Ratings: 0 negative/0 positive
Re: Нужен алгоритм
kornienko_ru

Сообщений: 415
Откуда: Владивосток
Дата регистрации: 06.09.2015
Вам надо не только теорию читать, и использовать термины, но еще и понимать сами процессы на физическом уровне. Если вы изменяете связанные объекты... записи файлы, папки и т.д., никакая транзакционная база вам не даст 100% защиты транзакций при отключении питания (электричества). А вот я програмно напишу защиту передачи данных и вы будете иметь защиту 100% без всяких ваших миллионочеловекочасов. И я так и делаю. Есть разные способы в зависимости от ситуации. Выглядеть это будет так: питание вырубили, вы включаете ПК, запускаете программу и программа вас уведомляет, что была неудачно прервана операция... операция завершена. Такая защита у меня в моих программах в тех местах, где это необходимо есть. Я вам уже писал, что эту задачу с переносом файла в папку и изменением соответствующей записи в данных тоже можно реализовать дополнительной проверкой переноса файла на новое место и открытия его в этом месте в безопасном режиме "только чтение". Обычно до "ответственных" транзакций, я сохраняю некоторые свои переменные в файл.mem, где есть соответствующее значение, означающее, что необходимо восстановить транзакцию и совершить определенное действие. После завершения транзакции этот файл удаляется. На VFP, к примеру, есть такая команда — сохранить переменную или несколько переменных по шаблону в mem-файл. В отличие от ваших СУБД и ваших подходах, я даю 100% гарантию целостности БД.
Ratings: 0 negative/0 positive
Re: Нужен алгоритм
AndyNigmatec

Сообщений: 1758
Откуда: Волгоград
Дата регистрации: 28.06.2015
kornienko_ru
Обычно до "ответственных" транзакций, я сохраняю некоторые свои переменные в файл.mem, где есть соответствующее значение, означающее, что необходимо восстановить транзакцию и совершить определенное действие. После завершения транзакции этот файл удаляется. ...

Я с вас удивляюсь (с)
Вы правда думаете что написали сии костыли лучше чем это (и еще многое другое) организовано во "взрослых" БД? Про быстродействие/объем данных я даже не говорю.
Если так, то уверяю вас - вы сильно заблуждаетесь.
Ratings: 0 negative/3 positive
Re: Нужен алгоритм
kornienko_ru

Сообщений: 415
Откуда: Владивосток
Дата регистрации: 06.09.2015
"Костыли", "взрослая" и тому подобные высказывания — это ваше восприятие от вашего умения. То, что для вас может костыли, на самом деле инструмент. Например, в VFP есть такие операторы, которых скорей всего нет во "взрослых" БД. Я имею в виду команды сохранения и восстановления переменных. Это просто шикарно — запустил программу и все необходимые переменные с прошлого сеанса у тебя сохранены. Думайте, учитесь.... Иногда это поможет, там, где ваши "взрослые" будут бессильны.
Ratings: 0 negative/0 positive
Re: Нужен алгоритм
kornienko_ru

Сообщений: 415
Откуда: Владивосток
Дата регистрации: 06.09.2015
А кстати что насчет быстродействия? Например VFP — одна из самых быстрых. А то что касается объема... конечно крупные БД это не её, а до 1 млрд. записей — без проблем, на VFP-A любой объем. Интересно сколько записей в файле БД у Тани с экселями Наверняка меньше миллиарда.
Ratings: 0 negative/0 positive


Эта тема закрыта.

On-line: 6 (Гостей: 6)

© 2000-2025 Fox Club 
Яндекс.Метрика