Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
 Аватар для Stick
4 / 4 / 1
Регистрация: 26.11.2009
Сообщений: 156

Система управления файлами

17.02.2019, 19:43. Показов 1318. Ответов 6

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Попросили разработать небольшую систему документооборота. А именно, вот с чем ко мне обратились:

есть 5 человек, каждый из них работает с отчетами pdf. Файлы могут быть связаны друг с другом.
Каждый пользователь может изменять файлы. К файлу приписана еще информация, которая тоже может измениться.
Реализовать поиск по названию файлов.
В любой момент времени можно вернуться к любой версии файла и данных, связанный с ним. ОС - windows 7. Все данные, файлы должны находиться в пределах локальной сети, без доступа в Интернет.

Тратить деньги они не хотят на покупку готового решения (если оно есть).

Из этих требований на вскидку вижу такое решение:
клиент-серверное приложение.
Сервер - MVC приложение, по ролям дает доступ пользователям, записывает каждое их телодвижение в базу в виде логов.
База находится на нескольких raid массивах с зеркалированием.
Клиент - wpf приложение коннектится к серверу и передает запросы, авторизованного пользователя.
Клиент и сервер взаимодействуют по REST API.

Возникло много вопросов в части проектирования.
1) На сколько правильно движутся мои мысли? Может есть решение лучше?
2) Тратиться на технологии не хотят, поэтому какую бесплатную БД выбрать с возможность масштабирования и резервного копирования данных?
3) Как работать с файлами? Это совсем не понятно. Предположим сейчас 10 000 файлов по 1 мб - это уже 10Гб. Как вести их журналирование, и реализовать одновременный доступ к файлам так, чтобы пользователи работали всегда с актуальной версией.
Записывать в бд файлы и их версии, как-то много будет данных. Читал про файловые серверы, но не представляю как они работают с windows и как устроена поддержка версий файлов.
4) Подозреваю, что в будущем захотят искать по содержимому файлов, тут нужен ElasticSearch?
5) Слышал про объединение в кластеры, но и тут тоже пробел в знаниях.

Прошу поделитесь опытом и направьте на верные мысли. Спасибо!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.02.2019, 19:43
Ответы с готовыми решениями:

Система голосового управления
Здравствуйте. Начну с источника и кратко: посмотрел я Железного человека, и захотелось мне сделать что-то на подобии Джарвиса... Ясное...

Система управления версиями
Вопрос в следующем. Хочу много коммитов и возможность отката к предыдущим версиям в sln проекте. Какую CVS использовать лучше?...

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

6
 Аватар для Cupko
658 / 595 / 171
Регистрация: 17.07.2012
Сообщений: 1,682
Записей в блоге: 1
17.02.2019, 22:30
Цитата Сообщение от Stick Посмотреть сообщение
есть 5 человек, каждый из них работает с отчетами pdf. Файлы могут быть связаны друг с другом.
Каждый пользователь может изменять файлы. К файлу приписана еще информация, которая тоже может измениться.
Как pdf файлы могут быть связаны друг с другом? И как вообще пользователь может изменять pdf?
0
1152 / 860 / 263
Регистрация: 30.04.2009
Сообщений: 3,603
18.02.2019, 00:57
Может использовать одну из готових систем контроля версий, например git?
Тогда вам достаточно будет настроить git сервер и написать прослойку, которая будет делать необходимые вам операции.
По поводу работы с актуальной версией тут непонятно что имеется ввиду.
Если одновременное групповое редактирование и последующее автоматическое слияние изменений, то слишком многого хотят. Такое только гугл докс умеет, а с pdf такое не сделать.
0
C# = ♫♪♫♪♪♫
 Аватар для Sanek32
57 / 56 / 18
Регистрация: 02.08.2014
Сообщений: 283
18.02.2019, 09:36
Цитата Сообщение от Stick Посмотреть сообщение
Файлы могут быть связаны друг с другом.
Файлы можно связывать хеш суммой файла + имя + любые тэги + полный путь хранить. Типо новый документ связан с таким то и так до исходного.
Цитата Сообщение от Stick Посмотреть сообщение
К файлу приписана еще информация, которая тоже может измениться.
Создавайте папку с именем файла и пишите туды что угодно, или можно в архив для экономии места.
Информация какого плана ? Я б сериализацию юзал в xml
Цитата Сообщение от Stick Посмотреть сообщение
Реализовать поиск по названию файлов.
Тупо проиндексировать папку

Добавлено через 6 минут
Цитата Сообщение от Stick Посмотреть сообщение
Клиент - wpf приложение коннектится к серверу и передает запросы, авторизованного пользователя.
Клиент и сервер взаимодействуют по REST API.
Цитата Сообщение от Stick Посмотреть сообщение
Сервер - MVC приложение, по ролям дает доступ пользователям, записывает каждое их телодвижение в базу в виде логов.
Права на папки раздать и делов то
0
 Аватар для Stick
4 / 4 / 1
Регистрация: 26.11.2009
Сообщений: 156
18.02.2019, 23:12  [ТС]
Цитата Сообщение от Cupko Посмотреть сообщение
Как pdf файлы могут быть связаны друг с другом? И как вообще пользователь может изменять pdf?
Какое-то спец ПО генерит отчеты в pdf. Эти выходные отчеты, как понимаю, могут иметь одно и тоже имя.
Связаны так: Отчет 1.pdf ссылается на параграф 2.1.3 файла Отчет 2.pdf. Связь, указывается в виде ссылок на файлы в БД, например.

Цитата Сообщение от nicolas2008 Посмотреть сообщение
Может использовать одну из готових систем контроля версий, например git?
Не задумывался, что git может скушать pdf. И пока не вижу как это заставить работать. Под прослойкой Вы понимаете обёртывание команд git pull... git status и т.п.?

Sanek32, Ваше предложение крутое, если сервер на одной машине был и всегда будет. Предположим накрылся HDD, если есть бекапы, или тот же raid все гуд). А если нужно перенести сервер на другую машину. Или взять с собой на ноуте всю базу данных с файлами в бизнесс путешествие. Тогда нужно вновь повторять весь этап настройки. А MVC сервер развернуть на IIS и нет проблем, т.к. вся логика уже описана.

Цитата Сообщение от Sanek32 Посмотреть сообщение
Информация какого плана ?
Бд, содержащая сведения о предприятии, принадлежность файлов отчетов к отделам. Кстати, эти файлы могут быть проверены кем-то выше, а следовательно должна быть инфа о валидности сведений в файлах.

В общем, под информацией понимаю еще одну базу, в которой какие-то таблицы ссылающиеся на файлы отчетов. Пока представлений о бизнесс-логике мало, т.к. ее по сути и нет. Есть хотелки, которые хочу перевести на вменяемый язык требований
0
1152 / 860 / 263
Регистрация: 30.04.2009
Сообщений: 3,603
19.02.2019, 01:14
Цитата Сообщение от Stick Посмотреть сообщение
Не задумывался, что git может скушать pdf
git-у все равно какие файлы хранить.

Цитата Сообщение от Stick Посмотреть сообщение
Под прослойкой Вы понимаете обёртывание команд git pull... git status и т.п.?
В обертке будут комманды типа добавить файл, достать файл, посмотреть историю версий файла и т.д., которые будут транслироваться в комманды или группы комманд к git.
Если версий файла много, а изменений в них мало, то получите значительную экономию места т.к. версии в git хранятся в виде дельты изменений.
Дополнительную информацию о связях можно хранить рядом в каком-нибудь файле метаданных используя id коммитов в качестве ссылок на другие файлы.
Минус этого дела - недостаточная гибкость если будут возникать новые хотелки.

Но это так, просто концепт который может и не подойти.
Сформируйте для начала контракт, т.е. список всех функций которые должна поддерживать система, а дальше уже смотрите насколько подходят разные форматы хранилища под эти требования.
1
C# = ♫♪♫♪♪♫
 Аватар для Sanek32
57 / 56 / 18
Регистрация: 02.08.2014
Сообщений: 283
19.02.2019, 09:48
Цитата Сообщение от Stick Посмотреть сообщение
Связаны так: Отчет 1.pdf ссылается на параграф 2.1.3 файла Отчет 2.pdf. Связь, указывается в виде ссылок на файлы в БД, например.
То есть в теории ссылок может быть много ? Получаем деревья зависимостей. А что если захотим из середины файлик грохнуть ?


Предлагаю сохранять файлы с именем {GUID}.PDF. А в БД хранить метаданные для поиска.

Цитата Сообщение от Stick Посмотреть сообщение
Предположим накрылся HDD
Создайте распределенное хранилище.

Цитата Сообщение от Stick Посмотреть сообщение
А если нужно перенести сервер на другую машину.
robocopy с ACL.
Цитата Сообщение от Stick Посмотреть сообщение
А MVC сервер развернуть на IIS и нет проблем, т.к. вся логика уже описана.
Просто вам же больше кода писать...
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.02.2019, 09:48
Помогаю со студенческими работами здесь

Система управления версиями
Здравствуйте! Подскажите, пожалуйста, какую нибудь хорошую систему управления версиями. Желательно с возможностью включить русскоязычный...

Система управления боем
"Цель программы – помочь командиру взвода или отделения руководить бойцами в условиях, когда речевые команды не слышны или их отдача...

Система управления счетами клиентов банка
Некоторый банк хочет внедрить систему управления счетами клиентов, поддерживающую следующие операции: Пополнение счета клиента. ...

Система управления счетами клиентов в банке
Некоторый банк хочет внедрить систему управления счетами клиентов, поддерживающую следующие операции: Пополнение счета клиента. ...

Файловая система и система управления вводом-выводом в ОС Linux
Дали задание написать вот что: "Разработать программу, которая выводит на экран содержимое текущего каталога, упорядоченное по времени...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru