|
best practices: реализация DocumentService
|
|||
---|---|---|---|
#18+
Задача - реализовать документ сервис для клиентского профиля в распределенном приложении. Т.е. имеется web-ui через который для профиля клиента нужно закачать на серверную часть докменты офисного формата. Задача касается реализации серверной части. Prerequisites: Серверная часть будет работать в кластере К8s (pod) ( для простоты понимания в docker контейнере) Реализация: 1. хранить документы непосредственно в базе данных 2. хранить документы в файловой системе 3. Запустить какой-то существующий свободный document service в контейнере (какой рекомендуете) Вопрос в том, как это правильно сделать, какой вариант лучше с учетом архитектуры приложения. спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2020, 14:38 |
|
best practices: реализация DocumentService
|
|||
---|---|---|---|
#18+
kadet Задача - реализовать документ сервис для клиентского профиля в распределенном приложении. Т.е. имеется web-ui через который для профиля клиента нужно закачать на серверную часть докменты офисного формата. Задача касается реализации серверной части. Prerequisites: Серверная часть будет работать в кластере К8s (pod) ( для простоты понимания в docker контейнере) Реализация: 1. хранить документы непосредственно в базе данных 2. хранить документы в файловой системе 3. Запустить какой-то существующий свободный document service в контейнере (какой рекомендуете) Вопрос в том, как это правильно сделать, какой вариант лучше с учетом архитектуры приложения. спасибо Все зависит от бизнес-требований. В том числе возможен вариант хранить и там и там. Это как спрашивать какую мне взять машину? И все не разбираясб начинают советовать - бэха, мерс, вольво бери дурень! А потом оказывается что нужен был карьерный самосвал ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2020, 15:19 |
|
best practices: реализация DocumentService
|
|||
---|---|---|---|
#18+
kadet, 1. Есть бд которые хранят файлы как ссылки а они физически на диске ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2020, 15:52 |
|
best practices: реализация DocumentService
|
|||
---|---|---|---|
#18+
PetroNotC Sharp kadet, 1. Есть бд которые хранят файлы как ссылки а они физически на диске А есть еще MongoDB - document-oriented Nosql solution, а еще есть elasticsearch + solr - для текстового поиска, и еще охерелиард решений, но какая разница если непоянтно что конкретно нужно от системы ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2020, 15:56 |
|
best practices: реализация DocumentService
|
|||
---|---|---|---|
#18+
Да. При такой обобщённой постановке Mongo подходит. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2020, 16:17 |
|
best practices: реализация DocumentService
|
|||
---|---|---|---|
#18+
забыл ник PetroNotC Sharp kadet, 1. Есть бд которые хранят файлы как ссылки а они физически на диске А есть еще MongoDB - document-oriented Nosql solution, а еще есть elasticsearch + solr - для текстового поиска, и еще охерелиард решений, но какая разница если непоянтно что конкретно нужно от системы Да. ТСу надо расширить его постановку из двух пунктов - файлы/бд))) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2020, 16:58 |
|
best practices: реализация DocumentService
|
|||
---|---|---|---|
#18+
kadet, Делай Хранилище отдельным проектом. Любой документ это урл ссылка. sql.ru/rest-api-doc/......id12e4677.pdf ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2020, 17:02 |
|
best practices: реализация DocumentService
|
|||
---|---|---|---|
#18+
Еще важно узнать что не было сказано. Например - будут ли связи между документами. Будет ли схема документа жесткая или она будет во времени изменяться. Будут ли зависимые обновления. Надо это учесть чтоб не получить аномалии. Документ хорош до тех пор пока его не изменяют. Один мой хороший знакомый (Mongo /MEAN разработчик) в шутку сказал - хочешь потерять документ навсегда - положи его в Mongo. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2020, 17:03 |
|
best practices: реализация DocumentService
|
|||
---|---|---|---|
#18+
mayton Еще важно узнать что не было сказано. Например - будут ли связи между документами. Будет ли схема документа жесткая или она будет во времени изменяться. Будут ли зависимые обновления. Надо это учесть чтоб не получить аномалии. Документ хорош до тех пор пока его не изменяют. Один мой хороший знакомый (Mongo /MEAN разработчик) в шутку сказал - хочешь потерять документ навсегда - положи его в Mongo. Тип того) Еще надо понимать нужен ли полнотекстовый поиск, нужны ли одновременные апдейты нескольких документов(a.k.a транзакции) ну и еще куча вопросов ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2020, 18:04 |
|
best practices: реализация DocumentService
|
|||
---|---|---|---|
#18+
PetroNotC Sharp kadet, Делай Хранилище отдельным проектом. Любой документ это урл ссылка. sql.ru/rest-api-doc/......id12e4677.pdf спасибо. можете что-то рекомендовать из open-source, чтобы самому это не разрабатывать ? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2020, 18:06 |
|
best practices: реализация DocumentService
|
|||
---|---|---|---|
#18+
забыл ник mayton Еще важно узнать что не было сказано. Например - будут ли связи между документами. Будет ли схема документа жесткая или она будет во времени изменяться. Будут ли зависимые обновления. Надо это учесть чтоб не получить аномалии. Документ хорош до тех пор пока его не изменяют. Один мой хороший знакомый (Mongo /MEAN разработчик) в шутку сказал - хочешь потерять документ навсегда - положи его в Mongo. Тип того) Еще надо понимать нужен ли полнотекстовый поиск, нужны ли одновременные апдейты нескольких документов(a.k.a транзакции) ну и еще куча вопросов спасибо. заказчику такую фишку (полнотекстный поиск по документу) не предлагал ... и не буду, ибо придется отдельный сервис создавать чтобы такой поиск реализовать ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2020, 18:09 |
|
best practices: реализация DocumentService
|
|||
---|---|---|---|
#18+
kadet можете что-то рекомендовать из open-source, чтобы самому это не разрабатывать ? а что там разрабатывать ? Две процедуры SAVE и GET ? Другое дело, что может захотеться кучу бизнес-специфических фичь накрутить. Например, когдя я делал нечто подобное, то я хранил еще hash файла и при попытке сохранить в БД дубли линковал файлы на одну и ту же запись в СУБД. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2020, 18:10 |
|
best practices: реализация DocumentService
|
|||
---|---|---|---|
#18+
kadet забыл ник пропущено... Тип того) Еще надо понимать нужен ли полнотекстовый поиск, нужны ли одновременные апдейты нескольких документов(a.k.a транзакции) ну и еще куча вопросов спасибо. заказчику такую фишку (полнотекстный поиск по документу) не предлагал ... и не буду, ибо придется отдельный сервис создавать чтобы такой поиск реализовать Так ты скажи что предлагал, возможно список решений и сузится. Пока это все гадание на кофейной гуще. И сущая мелочь по твоему разумению может развернуть совет на 180 градусов ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2020, 18:10 |
|
best practices: реализация DocumentService
|
|||
---|---|---|---|
#18+
kadet забыл ник пропущено... Тип того) Еще надо понимать нужен ли полнотекстовый поиск, нужны ли одновременные апдейты нескольких документов(a.k.a транзакции) ну и еще куча вопросов спасибо. заказчику такую фишку (полнотекстный поиск по документу) не предлагал ... и не буду, ибо придется отдельный сервис создавать чтобы такой поиск реализовать И правильно. До самого последнего не предлагай. Полнотекстовые индексы хороши только при определённых гарантиях. Например когда документы стали историческими. А если у тебя есть активные транзакции по этим документам - то контракт между документом и индексом становится слабым. Тоесть мы не можем гарантировать что данная транзакция уже проиндексирована. Придется как-то выкручиваться и придумывать eventual-consistency или какие-то схемы ожидания. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2020, 18:21 |
|
best practices: реализация DocumentService
|
|||
---|---|---|---|
#18+
Из готовых платформ - Documentum, sharePoint. Работал только с первым - по ощущениям довольно-таки унылое говно, но там предыстория такая что менеджер получил откат на покупке и нам активно его втяюхивали, хотя по фичам нам надо было много кастомного, в итоге сделали но плевались. Правда это было лет 8 назад ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2020, 18:38 |
|
best practices: реализация DocumentService
|
|||
---|---|---|---|
#18+
для более наглядного представления об описываемом предмете, я подвесил 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), но я в этом применении не вижу каких-то особых преимуществ ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2020, 19:29 |
|
best practices: реализация DocumentService
|
|||
---|---|---|---|
#18+
С документом то что система делать будет? Просто положить - потом прочитать? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2020, 22:25 |
|
best practices: реализация DocumentService
|
|||
---|---|---|---|
#18+
kadet, А зачем терабайтную бд в контейнер? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2020, 22:52 |
|
best practices: реализация DocumentService
|
|||
---|---|---|---|
#18+
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 ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2020, 22:54 |
|
best practices: реализация DocumentService
|
|||
---|---|---|---|
#18+
kadet, Возьмите ту бд с которой работали и которую знаете ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2020, 23:01 |
|
best practices: реализация DocumentService
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2020, 06:39 |
|
best practices: реализация DocumentService
|
|||
---|---|---|---|
#18+
забыл ник С документом то что система делать будет? Просто положить - потом прочитать? да, пока только так ... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2020, 14:08 |
|
|
start [/forum/topic.php?fid=59&msg=39970399&tid=2120776]: |
0ms |
get settings: |
3ms |
get forum list: |
5ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
30ms |
get topic data: |
3ms |
get forum data: |
1ms |
get page messages: |
381ms |
get tp. blocked users: |
0ms |
others: | 6ms |
total: | 431ms |
0 / 0 |