|
Поле объекта в качестве уникального ключа в документе MongoDB (Spring Data)
|
|||
---|---|---|---|
#18+
dakeiras авторТо есть вам досталась система на MongoDB, вы перенесли её на SQL базу... И в итоге получили убытки? Простите, но мне видится, что проблема тут не в MongoDB. Не перенесли а дуплицировали данные, OLAP. Но проблема и правда не в монго, как я выше и написал. Проблема в том что не нужно было его использовать изначально. Это объектная БД, она не приспособлена для 90% случаев работы например в банковоской сфере. За банковскую сферу не скажу, потому как в ней не работал, хоть и были предложения. И при этом беглое гугление говорит, что такие крупные финансовые конгломераты, как Citigroup Inc., вполне успешно используют MongoDB в автоматизации определённых процессов. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2020, 18:02 |
|
Поле объекта в качестве уникального ключа в документе MongoDB (Spring Data)
|
|||
---|---|---|---|
#18+
авторCitigroup Они и Кобол используют до сих пор. Это не говорит ни о чём. Насчёт миграции - вот и ответ на ваш вопрос касательно "печальных результатов". Лишние трудозатраты, потеря времени, как следствие убытки приумножаемые фактором срочности. А всё потому что неправильные решения были приняты изначально. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2020, 18:09 |
|
Поле объекта в качестве уникального ключа в документе MongoDB (Spring Data)
|
|||
---|---|---|---|
#18+
dakeiras авторCitigroup Они и Кобол используют до сих пор. Это не говорит ни о чём. Насчёт миграции - вот и ответ на ваш вопрос касательно "печальных результатов". Лишние трудозатраты, потеря времени, как следствие убытки приумножаемые фактором срочности. А всё потому что неправильные решения были приняты изначально. Хорошо, тут мне нечего обсуждать, так как нет подробностей, да и нет никакого желания. Вот только из этого не следует, что ТСу не подходит MongoDB. Его задача: miroooha У меня есть два вида поиска игры - по названию (если игра есть в БД) и по ссылке. Парсер работает по ссылке. Ты ему ссылку, а он тебе готовый объект с информацией об игре. После каждого запроса по ссылке объект сохраняется в БД, чтобы в дальнейшем игру можно было искать по названию. При использовании парсера я не беру информацию из БД, я её туда только кладу. А при поиске по названию из БД только беру. И очевидно, что вы слишком субъективны в этом вопросе. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2020, 18:15 |
|
Поле объекта в качестве уникального ключа в документе MongoDB (Spring Data)
|
|||
---|---|---|---|
#18+
Дмитрий Мух dakeiras пропущено... Они и Кобол используют до сих пор. Это не говорит ни о чём. Насчёт миграции - вот и ответ на ваш вопрос касательно "печальных результатов". Лишние трудозатраты, потеря времени, как следствие убытки приумножаемые фактором срочности. А всё потому что неправильные решения были приняты изначально. Хорошо, тут мне нечего обсуждать, так как нет подробностей, да и нет никакого желания. Вот только из этого не следует, что ТСу не подходит MongoDB. Его задача: miroooha У меня есть два вида поиска игры - по названию (если игра есть в БД) и по ссылке. Парсер работает по ссылке. Ты ему ссылку, а он тебе готовый объект с информацией об игре. После каждого запроса по ссылке объект сохраняется в БД, чтобы в дальнейшем игру можно было искать по названию. При использовании парсера я не беру информацию из БД, я её туда только кладу. А при поиске по названию из БД только беру. И очевидно, что вы слишком субъективны в этом вопросе. Он отказался от Postgresql потому что неправльно сделал что-то (хотя по умолчанию даже Постгрес работает в Хероку) и вместо того чтобы разобраться, полез в Mongodb. А потом будет ходить по миру и распевать что SQL бд плохие для старпёров, а вот Mongodb для крутых молодых продвинутых эффективных. Норм? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2020, 18:18 |
|
Поле объекта в качестве уникального ключа в документе MongoDB (Spring Data)
|
|||
---|---|---|---|
#18+
dakeiras Дмитрий Мух пропущено... Хорошо, тут мне нечего обсуждать, так как нет подробностей, да и нет никакого желания. Вот только из этого не следует, что ТСу не подходит MongoDB. Его задача: пропущено... отлично ложится на MongoDB. И очевидно, что вы слишком субъективны в этом вопросе. Он отказался от Postgresql потому что неправльно сделал что-то (хотя по умолчанию даже Постгрес работает в Хероку) и вместо того чтобы разобраться, полез в Mongodb. А потом будет ходить по миру и распевать что SQL бд плохие для старпёров, а вот Mongodb для крутых молодых продвинутых эффективных. Норм? У вас явно слишком предвзятое отношение к MongoDB. Да пусть себе ходит. Это будет дюже забавно: написал простейший парсер для Google Play и теперь ходит по миру и распевает, что SQL БД плохие ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2020, 18:25 |
|
Поле объекта в качестве уникального ключа в документе MongoDB (Spring Data)
|
|||
---|---|---|---|
#18+
miroooha, я вот тут подумал о том, что вы же действительно можете использовать в качестве _id не ObjectId, а строку при чём ведь она уже есть в самой ссылке на Google Play: https://play.google.com/store/apps/details?id=com.n3twork.tetris Вот же: com.n3twork.tetris . Используйте этот id в своём парсере и тогда всё у вас заработает с MongoRepository. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2020, 18:29 |
|
Поле объекта в качестве уникального ключа в документе MongoDB (Spring Data)
|
|||
---|---|---|---|
#18+
Делов-то: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2020, 18:34 |
|
Поле объекта в качестве уникального ключа в документе MongoDB (Spring Data)
|
|||
---|---|---|---|
#18+
dakeiras Он отказался от Postgresql потому что неправльно сделал что-то (хотя по умолчанию даже Постгрес работает в Хероку) и вместо того чтобы разобраться, полез в Mongodb. А потом будет ходить по миру и распевать что SQL бд плохие для старпёров, а вот Mongodb для крутых молодых продвинутых эффективных. Норм? Как-то вы рассуждаете и за себя и за того парня. Да, в немалой степени я отказался от Postgres из-за того, что мне не удалось решить проблему подключений (в heroku их максимум 20). Пробовал Hikari Pool - стало лучше, но проблема глобально осталась. Но изначально я хотел хранить объект в JSON-формате (или ему подобном), так как в моей первой версии приложении, результат парсера размещался как раз в JSON-файл. Но так как Dynos система heroku не поддерживает/не хранит файлы в принципе, моя библиотека обновлялась каждые 24ч при рестарте приложения. Поэтому я подумал о БД. Mongo прекрасно, на мой взгляд, подходит для моих задач: облачный склад для моих документов (объектов с игрой). Каждой БД найдется своё применение. А если вы я выбрал не Postgres а Oracle? Я выбрал то, что мне подошло. Ну столкнулся я и в Монго с трудностями, наверное, надо было попробовать Redis? Нет, я решил копать в Монго дальше, и что в этом плохого? Во втором своем проекте я, скорее всего, буду использовать Postgres. Я уже учусь, развиваюсь. Не всё сразу. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2020, 12:43 |
|
Поле объекта в качестве уникального ключа в документе MongoDB (Spring Data)
|
|||
---|---|---|---|
#18+
Дмитрий Мух miroooha, я вот тут подумал о том, что вы же действительно можете использовать в качестве _id не ObjectId, а строку при чём ведь она уже есть в самой ссылке на Google Play: https://play.google.com/store/apps/details?id=com.n3twork.tetris Вот же: com.n3twork.tetris . Используйте этот id в своём парсере и тогда всё у вас заработает с MongoRepository. Имя пакета приложения? Но говорят, что строку в качестве primary key (ведь id по сути и есть primary key) не стоит использовать? Я попробовал и всё работает! :) Как можно по-другому достать значение параметра id из URL? Код: java 1. 2. 3. 4. 5. 6. 7.
Просто с помощью классов URI/URL не получилось. Может есть готовые решения в сторонних библиотеках? Ссылка может быть как такой: https://play.google.com/store/apps/details?id=com.playdigious.deadcells.mobile&hl=en Так и: https://play.google.com/store/apps/details?id=com.playdigious.deadcells.mobile ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2020, 12:55 |
|
Поле объекта в качестве уникального ключа в документе MongoDB (Spring Data)
|
|||
---|---|---|---|
#18+
miroooha dakeiras Он отказался от Postgresql потому что неправльно сделал что-то (хотя по умолчанию даже Постгрес работает в Хероку) и вместо того чтобы разобраться, полез в Mongodb. А потом будет ходить по миру и распевать что SQL бд плохие для старпёров, а вот Mongodb для крутых молодых продвинутых эффективных. Норм? Как-то вы рассуждаете и за себя и за того парня. Да, в немалой степени я отказался от Postgres из-за того, что мне не удалось решить проблему подключений (в heroku их максимум 20). Пробовал Hikari Pool - стало лучше, но проблема глобально осталась. Мне кажется что ты до конца недоисследовал проблему. 20 физческих сеансов к БД - даже для нагруженных продуктовых систем - это нормально. Надо только вовремя возвращать соединения в пул обратно и для 99% кейсов тебе их хватит с головой. Исключение - это длинные транзакции и ETL. Но ETL у тебя нет ведь у тебя Монго. И длинных транзакций у тебя тоже скорее всего нет. В монге обычно все корректировки документов - микро-атомарные транзакции. Тоесть сведя задачу к Монге ты доказал что у тебя оно прекрасно и работало бы в Postgres просто ты где-то не додавил проблему до конца. А надо было просто понаблюдать что эти 20 сеансов в пуле у тебя делают. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2020, 13:07 |
|
Поле объекта в качестве уникального ключа в документе MongoDB (Spring Data)
|
|||
---|---|---|---|
#18+
miroooha Дмитрий Мух miroooha, я вот тут подумал о том, что вы же действительно можете использовать в качестве _id не ObjectId, а строку при чём ведь она уже есть в самой ссылке на Google Play: https://play.google.com/store/apps/details?id=com.n3twork.tetris Вот же: com.n3twork.tetris . Используйте этот id в своём парсере и тогда всё у вас заработает с MongoRepository. Имя пакета приложения? miroooha Но говорят, что строку в качестве primary key (ведь id по сути и есть primary key) не стоит использовать? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2020, 13:10 |
|
Поле объекта в качестве уникального ключа в документе MongoDB (Spring Data)
|
|||
---|---|---|---|
#18+
miroooha Я попробовал и всё работает! :) Кросавчег! ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2020, 13:17 |
|
Поле объекта в качестве уникального ключа в документе MongoDB (Spring Data)
|
|||
---|---|---|---|
#18+
miroooha Просто с помощью классов URI/URL не получилось. Может есть готовые решения в сторонних библиотеках? Ссылка может быть как такой: https://play.google.com/store/apps/details?id=com.playdigious.deadcells.mobile&hl=en Так и: https://play.google.com/store/apps/details?id=com.playdigious.deadcells.mobile Ну тебе надо в строке найти "id=" и потом цепочку символов до следующего "&". Это же просто банально. Да может быть есть сторонние библиотеки. Но разве тривиальное решение для тебя - неприемлемо? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2020, 13:22 |
|
Поле объекта в качестве уникального ключа в документе MongoDB (Spring Data)
|
|||
---|---|---|---|
#18+
Дмитрий Мух miroooha пропущено... Имя пакета приложения? miroooha Но говорят, что строку в качестве primary key (ведь id по сути и есть primary key) не стоит использовать? Да, этот параметр по сути является именем пакета приложения, и по идее он всегда уникален. Если разобрать .apk файл с игрой, его можно будет там найти. Знаю, так как ковырял .apk файлы по молодости. Цитату в студию! :) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2020, 13:23 |
|
Поле объекта в качестве уникального ключа в документе MongoDB (Spring Data)
|
|||
---|---|---|---|
#18+
miroooha Дмитрий Мух пропущено... Имя? Параметр id - это имя? Не идентификатор? Серъёзно? пропущено... А я говорю, что стоит. И могу ещё раз процитировать документацию. Да, этот параметр по сути является именем пакета приложения, и по идее он всегда уникален. Если разобрать .apk файл с игрой, его можно будет там найти. Знаю, так как ковырял .apk файлы по молодости. Оу, ну не надо про .apk, мобильные приложения я писал, знаю что это такое :) Хорошо, давайте так. Имя пакета приложения на сайте Google Play является идентификатором этого самого приложения. Поэтому вы спокойно можете его использовать у себя в базе как _id документа. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2020, 13:29 |
|
Поле объекта в качестве уникального ключа в документе MongoDB (Spring Data)
|
|||
---|---|---|---|
#18+
mayton miroooha пропущено... Как-то вы рассуждаете и за себя и за того парня. Да, в немалой степени я отказался от Postgres из-за того, что мне не удалось решить проблему подключений (в heroku их максимум 20). Пробовал Hikari Pool - стало лучше, но проблема глобально осталась. Мне кажется что ты до конца недоисследовал проблему. 20 физческих сеансов к БД - даже для нагруженных продуктовых систем - это нормально. Надо только вовремя возвращать соединения в пул обратно и для 99% кейсов тебе их хватит с головой. Исключение - это длинные транзакции и ETL. Но ETL у тебя нет ведь у тебя Монго. И длинных транзакций у тебя тоже скорее всего нет. В монге обычно все корректировки документов - микро-атомарные транзакции. Тоесть сведя задачу к Монге ты доказал что у тебя оно прекрасно и работало бы в Postgres просто ты где-то не додавил проблему до конца. А надо было просто понаблюдать что эти 20 сеансов в пуле у тебя делают. Не отрицаю, что не до конца разобрался. Но нашел альтернативную рабочую версию, стоит ли мешки ворочать? Я обязательно попробую решить эту проблему и разобраться, но уже на другом проекте (или на этом же, но на другой ветке). Записал себе в блокнотик. mayton miroooha Просто с помощью классов URI/URL не получилось. Может есть готовые решения в сторонних библиотеках? Ссылка может быть как такой: https://play.google.com/store/apps/details?id=com.playdigious.deadcells.mobile&hl=en Так и: https://play.google.com/store/apps/details?id=com.playdigious.deadcells.mobile Ну тебе надо в строке найти "id=" и потом цепочку символов до следующего "&". Это же просто банально. Да может быть есть сторонние библиотеки. Но разве тривиальное решение для тебя - неприемлемо? Я бы даже сказал слишком банально. Но меня всегда интересовали другие возможные решения. Я изначально пишу то, что приходит в голову, а потом улучшаю, если это необходимо и возможно. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2020, 13:30 |
|
Поле объекта в качестве уникального ключа в документе MongoDB (Spring Data)
|
|||
---|---|---|---|
#18+
miroooha Цитату в студию! :) The _id field may contain values of any BSON data type , other than an array. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2020, 13:30 |
|
Поле объекта в качестве уникального ключа в документе MongoDB (Spring Data)
|
|||
---|---|---|---|
#18+
miroooha Я бы даже сказал слишком банально. Но меня всегда интересовали другие возможные решения. Я изначально пишу то, что приходит в голову, а потом улучшаю, если это необходимо и возможно. Ну тот солюшен на Stream-ах работает? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2020, 13:33 |
|
Поле объекта в качестве уникального ключа в документе MongoDB (Spring Data)
|
|||
---|---|---|---|
#18+
Дмитрий Мух Имя пакета приложения на сайте Google Play является идентификатором этого самого приложения. Утвердительно киваю головой. :) mayton miroooha Я бы даже сказал слишком банально. Но меня всегда интересовали другие возможные решения. Я изначально пишу то, что приходит в голову, а потом улучшаю, если это необходимо и возможно. Ну тот солюшен на Stream-ах работает? Работает вери велл, наверное. По крайней мере, работает на том, что успел протестировать. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2020, 13:38 |
|
Поле объекта в качестве уникального ключа в документе MongoDB (Spring Data)
|
|||
---|---|---|---|
#18+
авторПробовал Hikari Pool - стало лучше, но проблема глобально осталасьв Спринге и так Hikari используется по умолчанию. И он настроен по умолчанию на 5-10 коннектов если мне память не изменяет. Так что нормально он пашет с Хероку. Скорее всего у тебя 2 приложения к 1 базе подключались. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2020, 13:44 |
|
Поле объекта в качестве уникального ключа в документе MongoDB (Spring Data)
|
|||
---|---|---|---|
#18+
miroooha Работает вери велл, наверное. По крайней мере, работает на том, что успел протестировать. Ну и прекрасно. Пусть работает. Нагрузка на него - слабая. Сколько раз в секунду ты его дёрнешь? Вряд-ли слишком много. Тебе надо больше качать и вставлять в свою монгу. Это знаешь как старый двигатель в Москвич 2141. Пока он работает - пускай он грязный весь в подтеках масла и закопченый. А как только ты решил его "перебрать" и промысть дескыть чтоб лучше было - тут двигателю и капец. Надо будет заново ремонтировать. Вобщем старый админски-девопский прицип. Да? Работает - и ладньенько. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2020, 13:56 |
|
Поле объекта в качестве уникального ключа в документе MongoDB (Spring Data)
|
|||
---|---|---|---|
#18+
mayton miroooha Работает вери велл, наверное. По крайней мере, работает на том, что успел протестировать. Ну и прекрасно. Пусть работает. Нагрузка на него - слабая. Сколько раз в секунду ты его дёрнешь? Вряд-ли слишком много. Тебе надо больше качать и вставлять в свою монгу. Это знаешь как старый двигатель в Москвич 2141. Пока он работает - пускай он грязный весь в подтеках масла и закопченый. А как только ты решил его "перебрать" и промысть дескыть чтоб лучше было - тут двигателю и капец. Надо будет заново ремонтировать. Вобщем старый админски-девопский прицип. Да? Работает - и ладньенько. У меня тут как раз в деревне под окном Москвич 2140 1984 года стоит. Хоть сейчас заводи и езжай. :D Правда на большие расстояние рискованно, в любой момент может пернуть и загнуться. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2020, 14:38 |
|
Поле объекта в качестве уникального ключа в документе MongoDB (Spring Data)
|
|||
---|---|---|---|
#18+
Тут такое дело: давно думал, есть ли решение описанному ниже вопросу. Google Play определяет страну, из которой подключается пользователь по IP-адресу (вроде как). При запуске с локальной машины парсер парсит информацию о стоимости игры в рублях - всё ок. При старте с heroku парсер уже подключается с европейского адреса, и вся страница отображается в соответствующей локали и с соответствующими ценами (евро). Перевести содержимое страницы на русский смог с помощью простого костыля (суфикс &hl=ru к основному адресу), но на цену данный суффикс не влияет. Она конкретно привязана к соединению. Можно ли как-то обмануть Google помимо использования прокси/VPN (работают через раз с Jsoup)? Может в heroku есть какие-нибудь настройки? Иль забить и смириться? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2020, 23:32 |
|
Поле объекта в качестве уникального ключа в документе MongoDB (Spring Data)
|
|||
---|---|---|---|
#18+
miroooha Тут такое дело: давно думал, есть ли решение описанному ниже вопросу. Google Play определяет страну, из которой подключается пользователь по IP-адресу (вроде как). При запуске с локальной машины парсер парсит информацию о стоимости игры в рублях - всё ок. При старте с heroku парсер уже подключается с европейского адреса, и вся страница отображается в соответствующей локали и с соответствующими ценами (евро). Перевести содержимое страницы на русский смог с помощью простого костыля (суфикс &hl=ru к основному адресу), но на цену данный суффикс не влияет. Она конкретно привязана к соединению. Можно ли как-то обмануть Google помимо использования прокси/VPN (работают через раз с Jsoup)? Может в heroku есть какие-нибудь настройки? Иль забить и смириться? А проблема в чём? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2020, 00:24 |
|
|
start [/forum/topic.php?fid=59&msg=39975394&tid=2120753]: |
0ms |
get settings: |
8ms |
get forum list: |
5ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
53ms |
get topic data: |
3ms |
get forum data: |
1ms |
get page messages: |
452ms |
get tp. blocked users: |
0ms |
others: | 7ms |
total: | 531ms |
0 / 0 |