Гость
Форумы / Java [игнор отключен] [закрыт для гостей] / best practices: реализация DocumentService / 23 сообщений из 23, страница 1 из 1
17.06.2020, 14:38
    #39970209
kadet
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
best practices: реализация DocumentService
Задача - реализовать документ сервис для клиентского профиля в распределенном приложении. Т.е. имеется web-ui через который для профиля клиента нужно закачать на серверную часть докменты офисного формата. Задача касается реализации серверной части.

Prerequisites: Серверная часть будет работать в кластере К8s (pod) ( для простоты понимания в docker контейнере)


Реализация:
1. хранить документы непосредственно в базе данных
2. хранить документы в файловой системе
3. Запустить какой-то существующий свободный document service в контейнере (какой рекомендуете)

Вопрос в том, как это правильно сделать, какой вариант лучше с учетом архитектуры приложения.

спасибо
...
Рейтинг: 0 / 0
17.06.2020, 15:19
    #39970233
забыл ник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
best practices: реализация DocumentService
kadet
Задача - реализовать документ сервис для клиентского профиля в распределенном приложении. Т.е. имеется web-ui через который для профиля клиента нужно закачать на серверную часть докменты офисного формата. Задача касается реализации серверной части.

Prerequisites: Серверная часть будет работать в кластере К8s (pod) ( для простоты понимания в docker контейнере)


Реализация:
1. хранить документы непосредственно в базе данных
2. хранить документы в файловой системе
3. Запустить какой-то существующий свободный document service в контейнере (какой рекомендуете)

Вопрос в том, как это правильно сделать, какой вариант лучше с учетом архитектуры приложения.

спасибо


Все зависит от бизнес-требований. В том числе возможен вариант хранить и там и там.
Это как спрашивать какую мне взять машину? И все не разбираясб начинают советовать - бэха, мерс, вольво бери дурень! А потом оказывается что нужен был карьерный самосвал
...
Рейтинг: 0 / 0
17.06.2020, 15:52
    #39970252
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
best practices: реализация DocumentService
kadet,
1. Есть бд которые хранят файлы как ссылки а они физически на диске
...
Рейтинг: 0 / 0
17.06.2020, 15:56
    #39970254
забыл ник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
best practices: реализация DocumentService
PetroNotC Sharp
kadet,
1. Есть бд которые хранят файлы как ссылки а они физически на диске

А есть еще MongoDB - document-oriented Nosql solution,
а еще есть elasticsearch + solr - для текстового поиска, и еще охерелиард решений, но какая разница если непоянтно что конкретно нужно от системы
...
Рейтинг: 0 / 0
17.06.2020, 16:17
    #39970263
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
best practices: реализация DocumentService
Да. При такой обобщённой постановке Mongo подходит.
...
Рейтинг: 0 / 0
17.06.2020, 16:58
    #39970293
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
best practices: реализация DocumentService
забыл ник
PetroNotC Sharp
kadet,
1. Есть бд которые хранят файлы как ссылки а они физически на диске

А есть еще MongoDB - document-oriented Nosql solution,
а еще есть elasticsearch + solr - для текстового поиска, и еще охерелиард решений, но какая разница если непоянтно что конкретно нужно от системы

Да. ТСу надо расширить его постановку из двух пунктов - файлы/бд)))
...
Рейтинг: 0 / 0
17.06.2020, 17:02
    #39970294
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
best practices: реализация DocumentService
kadet,
Делай Хранилище отдельным проектом.
Любой документ это урл ссылка.
sql.ru/rest-api-doc/......id12e4677.pdf
...
Рейтинг: 0 / 0
17.06.2020, 17:03
    #39970295
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
best practices: реализация DocumentService
Еще важно узнать что не было сказано. Например - будут ли связи между документами.
Будет ли схема документа жесткая или она будет во времени изменяться.

Будут ли зависимые обновления. Надо это учесть чтоб не получить аномалии.

Документ хорош до тех пор пока его не изменяют.

Один мой хороший знакомый (Mongo /MEAN разработчик)
в шутку сказал - хочешь потерять документ навсегда - положи его в Mongo.
...
Рейтинг: 0 / 0
17.06.2020, 18:04
    #39970328
забыл ник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
best practices: реализация DocumentService
mayton
Еще важно узнать что не было сказано. Например - будут ли связи между документами.
Будет ли схема документа жесткая или она будет во времени изменяться.

Будут ли зависимые обновления. Надо это учесть чтоб не получить аномалии.

Документ хорош до тех пор пока его не изменяют.

Один мой хороший знакомый (Mongo /MEAN разработчик)
в шутку сказал - хочешь потерять документ навсегда - положи его в Mongo.

Тип того)
Еще надо понимать нужен ли полнотекстовый поиск, нужны ли одновременные апдейты нескольких документов(a.k.a транзакции) ну и еще куча вопросов
...
Рейтинг: 0 / 0
17.06.2020, 18:06
    #39970332
kadet
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
best practices: реализация DocumentService
PetroNotC Sharp
kadet,
Делай Хранилище отдельным проектом.
Любой документ это урл ссылка.
sql.ru/rest-api-doc/......id12e4677.pdf


спасибо.
можете что-то рекомендовать из open-source, чтобы самому это не разрабатывать ?
...
Рейтинг: 0 / 0
17.06.2020, 18:09
    #39970337
kadet
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
best practices: реализация DocumentService
забыл ник
mayton
Еще важно узнать что не было сказано. Например - будут ли связи между документами.
Будет ли схема документа жесткая или она будет во времени изменяться.

Будут ли зависимые обновления. Надо это учесть чтоб не получить аномалии.

Документ хорош до тех пор пока его не изменяют.

Один мой хороший знакомый (Mongo /MEAN разработчик)
в шутку сказал - хочешь потерять документ навсегда - положи его в Mongo.

Тип того)
Еще надо понимать нужен ли полнотекстовый поиск, нужны ли одновременные апдейты нескольких документов(a.k.a транзакции) ну и еще куча вопросов


спасибо.
заказчику такую фишку (полнотекстный поиск по документу) не предлагал ... и не буду, ибо придется отдельный сервис создавать чтобы такой поиск реализовать
...
Рейтинг: 0 / 0
17.06.2020, 18:10
    #39970338
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
best practices: реализация DocumentService
kadet

можете что-то рекомендовать из open-source, чтобы самому это не разрабатывать ?

а что там разрабатывать ? Две процедуры SAVE и GET ?

Другое дело, что может захотеться кучу бизнес-специфических фичь накрутить. Например, когдя я делал нечто подобное, то я хранил еще hash файла и при попытке сохранить в БД дубли линковал файлы на одну и ту же запись в СУБД.
...
Рейтинг: 0 / 0
17.06.2020, 18:10
    #39970339
забыл ник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
best practices: реализация DocumentService
kadet
забыл ник
пропущено...

Тип того)
Еще надо понимать нужен ли полнотекстовый поиск, нужны ли одновременные апдейты нескольких документов(a.k.a транзакции) ну и еще куча вопросов


спасибо.
заказчику такую фишку (полнотекстный поиск по документу) не предлагал ... и не буду, ибо придется отдельный сервис создавать чтобы такой поиск реализовать

Так ты скажи что предлагал, возможно список решений и сузится. Пока это все гадание на кофейной гуще. И сущая мелочь по твоему разумению может развернуть совет на 180 градусов
...
Рейтинг: 0 / 0
17.06.2020, 18:21
    #39970349
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
best practices: реализация DocumentService
kadet
забыл ник
пропущено...

Тип того)
Еще надо понимать нужен ли полнотекстовый поиск, нужны ли одновременные апдейты нескольких документов(a.k.a транзакции) ну и еще куча вопросов


спасибо.
заказчику такую фишку (полнотекстный поиск по документу) не предлагал ... и не буду, ибо придется отдельный сервис создавать чтобы такой поиск реализовать

И правильно. До самого последнего не предлагай. Полнотекстовые индексы хороши только
при определённых гарантиях. Например когда документы стали историческими. А если
у тебя есть активные транзакции по этим документам - то контракт между документом
и индексом становится слабым. Тоесть мы не можем гарантировать что данная транзакция
уже проиндексирована. Придется как-то выкручиваться и придумывать eventual-consistency
или какие-то схемы ожидания.
...
Рейтинг: 0 / 0
17.06.2020, 18:38
    #39970355
забыл ник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
best practices: реализация DocumentService
Из готовых платформ - Documentum, sharePoint. Работал только с первым - по ощущениям довольно-таки унылое говно, но там предыстория такая что менеджер получил откат на покупке и нам активно его втяюхивали, хотя по фичам нам надо было много кастомного, в итоге сделали но плевались. Правда это было лет 8 назад
...
Рейтинг: 0 / 0
17.06.2020, 19:29
    #39970369
kadet
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
best practices: реализация DocumentService
для более наглядного представления об описываемом предмете, я подвесил class diagram.

Поле "uri" в Document является спорным, т.к. окончательного решения у меня нет (поэтому и создал топик).

У меня мысли такие (были / есть):
1. В качестве базы данных склоняюсь к mysql.
2.1. Я думал изначально все документы, которые будут описанны объектом "Document" хранить в его поле "data".
Преимущества очевидны: данные всегда будут синхронны.
Недостатоки:
- Как себя будет вести мускул если пользователь его напичкает "по самое немогу".
- Отразится ли это на производительности базы данных?
- Как обслуживать мускул с учетом того, что он будет в контейнере? Как добавить дополнительное место для мускула? Как обеспечить backupбазы данных, работающей в контейнере ?

2.2 Как вариант - документы конкретного пользователя хранить в файловой системе, а ссылку на них в Document.uri
Преимущества:
- наполнить мускул будет "по самое немогу" только текстом будет сложнее и потребуется больше времени
- производительность будет условно стабильная и хорошая достаточно долго
Недостатки:
- синхронизация подверженна рискам, т.е. соответствие записи в Document.uri и фактическому расположению документов в файловой системе
- как с умом организовать backup как базы данных, так и файловой системы, где будут хранится документыб с учетом того, что как БД так и кусок фауловой системы будут "сидеть" в контейнере ?

2.3 То же что и 2.2, только вместо файловой системы контейнерезировать какой-нибудь document service

Вот вокруг всего этого я "кручусь" и пытаюсь найти решение.

PS можно использовать NoSQL (mongoDB), но я в этом применении не вижу каких-то особых преимуществ
...
Рейтинг: 0 / 0
17.06.2020, 22:25
    #39970399
забыл ник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
best practices: реализация DocumentService
С документом то что система делать будет? Просто положить - потом прочитать?
...
Рейтинг: 0 / 0
17.06.2020, 22:52
    #39970404
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
best practices: реализация DocumentService
kadet,
А зачем терабайтную бд в контейнер?
...
Рейтинг: 0 / 0
17.06.2020, 22:54
    #39970406
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
best practices: реализация DocumentService
kadet
для более наглядного представления об описываемом предмете, я подвесил class diagram.

Поле "uri" в Document является спорным, т.к. окончательного решения у меня нет (поэтому и создал топик).

У меня мысли такие (были / есть):
1. В качестве базы данных склоняюсь к mysql.
2.1. Я думал изначально все документы, которые будут описанны объектом "Document" хранить в его поле "data".
Преимущества очевидны: данные всегда будут синхронны.
Недостатоки:
- Как себя будет вести мускул если пользователь его напичкает "по самое немогу".
- Отразится ли это на производительности базы данных?
- Как обслуживать мускул с учетом того, что он будет в контейнере? Как добавить дополнительное место для мускула? Как обеспечить backupбазы данных, работающей в контейнере ?

2.2 Как вариант - документы конкретного пользователя хранить в файловой системе, а ссылку на них в Document.uri
Преимущества:
- наполнить мускул будет "по самое немогу" только текстом будет сложнее и потребуется больше времени
- производительность будет условно стабильная и хорошая достаточно долго
Недостатки:
- синхронизация подверженна рискам, т.е. соответствие записи в Document.uri и фактическому расположению документов в файловой системе
- как с умом организовать backup как базы данных, так и файловой системы, где будут хранится документыб с учетом того, что как БД так и кусок фауловой системы будут "сидеть" в контейнере ?

2.3 То же что и 2.2, только вместо файловой системы контейнерезировать какой-нибудь document service

Вот вокруг всего этого я "кручусь" и пытаюсь найти решение.

PS можно использовать NoSQL (mongoDB), но я в этом применении не вижу каких-то особых преимуществ

Вам в ветку "Разрабртка субд или ветку mysql
...
Рейтинг: 0 / 0
17.06.2020, 23:01
    #39970409
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
best practices: реализация DocumentService
kadet,
Возьмите ту бд с которой работали и которую знаете
...
Рейтинг: 0 / 0
18.06.2020, 06:39
    #39970438
mad_nazgul
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
best practices: реализация DocumentService
kadet,

Не истины ради, а флейма для.

Хранилище на zookeeper
Букварик

А вот коробочки :-)
...
Рейтинг: 0 / 0
18.06.2020, 14:08
    #39970524
kadet
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
best practices: реализация DocumentService
забыл ник
С документом то что система делать будет? Просто положить - потом прочитать?


да, пока только так
...
Рейтинг: 0 / 0
18.06.2020, 14:33
    #39970535
kadet
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
best practices: реализация DocumentService
mad_nazgul
kadet,

Не истины ради, а флейма для.

Хранилище на zookeeper
Букварик

А вот коробочки :-)


спасибо,
познавательно
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / best practices: реализация DocumentService / 23 сообщений из 23, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]