powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Поле объекта в качестве уникального ключа в документе MongoDB (Spring Data)
25 сообщений из 78, страница 3 из 4
Поле объекта в качестве уникального ключа в документе MongoDB (Spring Data)
    #39975007
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dakeiras
авторТо есть вам досталась система на MongoDB, вы перенесли её на SQL базу... И в итоге получили убытки?

Простите, но мне видится, что проблема тут не в MongoDB.

Не перенесли а дуплицировали данные, OLAP.

Но проблема и правда не в монго, как я выше и написал. Проблема в том что не нужно было его использовать изначально.
Это объектная БД, она не приспособлена для 90% случаев работы например в банковоской сфере.
За банковскую сферу не скажу, потому как в ней не работал, хоть и были предложения.

И при этом беглое гугление говорит, что такие крупные финансовые конгломераты, как Citigroup Inc., вполне успешно используют MongoDB в автоматизации определённых процессов.
...
Рейтинг: 0 / 0
Поле объекта в качестве уникального ключа в документе MongoDB (Spring Data)
    #39975016
dakeiras
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторCitigroup
Они и Кобол используют до сих пор. Это не говорит ни о чём.

Насчёт миграции - вот и ответ на ваш вопрос касательно "печальных результатов".
Лишние трудозатраты, потеря времени, как следствие убытки приумножаемые фактором срочности.

А всё потому что неправильные решения были приняты изначально.
...
Рейтинг: 0 / 0
Поле объекта в качестве уникального ключа в документе MongoDB (Spring Data)
    #39975020
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dakeiras
авторCitigroup

Они и Кобол используют до сих пор. Это не говорит ни о чём.

Насчёт миграции - вот и ответ на ваш вопрос касательно "печальных результатов".
Лишние трудозатраты, потеря времени, как следствие убытки приумножаемые фактором срочности.

А всё потому что неправильные решения были приняты изначально.
Хорошо, тут мне нечего обсуждать, так как нет подробностей, да и нет никакого желания.

Вот только из этого не следует, что ТСу не подходит MongoDB.

Его задача:
miroooha
У меня есть два вида поиска игры - по названию (если игра есть в БД) и по ссылке. Парсер работает по ссылке. Ты ему ссылку, а он тебе готовый объект с информацией об игре. После каждого запроса по ссылке объект сохраняется в БД, чтобы в дальнейшем игру можно было искать по названию. При использовании парсера я не беру информацию из БД, я её туда только кладу. А при поиске по названию из БД только беру.
отлично ложится на MongoDB.

И очевидно, что вы слишком субъективны в этом вопросе.
...
Рейтинг: 0 / 0
Поле объекта в качестве уникального ключа в документе MongoDB (Spring Data)
    #39975021
dakeiras
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий Мух
dakeiras
пропущено...

Они и Кобол используют до сих пор. Это не говорит ни о чём.

Насчёт миграции - вот и ответ на ваш вопрос касательно "печальных результатов".
Лишние трудозатраты, потеря времени, как следствие убытки приумножаемые фактором срочности.

А всё потому что неправильные решения были приняты изначально.

Хорошо, тут мне нечего обсуждать, так как нет подробностей, да и нет никакого желания.

Вот только из этого не следует, что ТСу не подходит MongoDB.

Его задача:
miroooha
У меня есть два вида поиска игры - по названию (если игра есть в БД) и по ссылке. Парсер работает по ссылке. Ты ему ссылку, а он тебе готовый объект с информацией об игре. После каждого запроса по ссылке объект сохраняется в БД, чтобы в дальнейшем игру можно было искать по названию. При использовании парсера я не беру информацию из БД, я её туда только кладу. А при поиске по названию из БД только беру.
отлично ложится на MongoDB.

И очевидно, что вы слишком субъективны в этом вопросе.

Он отказался от Postgresql потому что неправльно сделал что-то (хотя по умолчанию даже Постгрес работает в Хероку) и вместо того чтобы разобраться, полез в Mongodb.

А потом будет ходить по миру и распевать что SQL бд плохие для старпёров, а вот Mongodb для крутых молодых продвинутых эффективных.

Норм?
...
Рейтинг: 0 / 0
Поле объекта в качестве уникального ключа в документе MongoDB (Spring Data)
    #39975024
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dakeiras
Дмитрий Мух
пропущено...

Хорошо, тут мне нечего обсуждать, так как нет подробностей, да и нет никакого желания.

Вот только из этого не следует, что ТСу не подходит MongoDB.

Его задача:
пропущено...
отлично ложится на MongoDB.

И очевидно, что вы слишком субъективны в этом вопросе.

Он отказался от Postgresql потому что неправльно сделал что-то (хотя по умолчанию даже Постгрес работает в Хероку) и вместо того чтобы разобраться, полез в Mongodb.

А потом будет ходить по миру и распевать что SQL бд плохие для старпёров, а вот Mongodb для крутых молодых продвинутых эффективных.

Норм?

У вас явно слишком предвзятое отношение к MongoDB.

Да пусть себе ходит.
Это будет дюже забавно: написал простейший парсер для Google Play и теперь ходит по миру и распевает, что SQL БД плохие
...
Рейтинг: 0 / 0
Поле объекта в качестве уникального ключа в документе MongoDB (Spring Data)
    #39975026
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miroooha,

я вот тут подумал о том, что вы же действительно можете использовать в качестве _id не ObjectId, а строку
при чём ведь она уже есть в самой ссылке на Google Play: https://play.google.com/store/apps/details?id=com.n3twork.tetris

Вот же: com.n3twork.tetris .

Используйте этот id в своём парсере и тогда всё у вас заработает с MongoRepository.
...
Рейтинг: 0 / 0
Поле объекта в качестве уникального ключа в документе MongoDB (Spring Data)
    #39975030
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Делов-то:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
import org.bson.types.ObjectId;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.index.Indexed;
import org.springframework.data.mongodb.core.mapping.Document;

@Document(collection = "googleplaygames")
@Builder(builderClassName = "GooglePlayGameBuilder", toBuilder = true)
@AllArgsConstructor
@NoArgsConstructor
@Getter
@FieldDefaults(level = AccessLevel.PRIVATE)
public final class GooglePlayGame implements Serializable {
    @Id
    String id;
    @Indexed(unique = true)
    String title;
    String currentVersion
...
...
Рейтинг: 0 / 0
Поле объекта в качестве уникального ключа в документе MongoDB (Spring Data)
    #39975329
miroooha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dakeiras

Он отказался от Postgresql потому что неправльно сделал что-то (хотя по умолчанию даже Постгрес работает в Хероку) и вместо того чтобы разобраться, полез в Mongodb.

А потом будет ходить по миру и распевать что SQL бд плохие для старпёров, а вот Mongodb для крутых молодых продвинутых эффективных.

Норм?

Как-то вы рассуждаете и за себя и за того парня. Да, в немалой степени я отказался от Postgres из-за того, что мне не удалось решить проблему подключений (в heroku их максимум 20). Пробовал Hikari Pool - стало лучше, но проблема глобально осталась.

Но изначально я хотел хранить объект в JSON-формате (или ему подобном), так как в моей первой версии приложении, результат парсера размещался как раз в JSON-файл. Но так как Dynos система heroku не поддерживает/не хранит файлы в принципе, моя библиотека обновлялась каждые 24ч при рестарте приложения. Поэтому я подумал о БД.

Mongo прекрасно, на мой взгляд, подходит для моих задач: облачный склад для моих документов (объектов с игрой).

Каждой БД найдется своё применение. А если вы я выбрал не Postgres а Oracle?

Я выбрал то, что мне подошло.

Ну столкнулся я и в Монго с трудностями, наверное, надо было попробовать Redis? Нет, я решил копать в Монго дальше, и что в этом плохого?

Во втором своем проекте я, скорее всего, буду использовать Postgres. Я уже учусь, развиваюсь. Не всё сразу.
...
Рейтинг: 0 / 0
Поле объекта в качестве уникального ключа в документе MongoDB (Spring Data)
    #39975339
miroooha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дмитрий Мух
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.
private String getAppId(String URL) throws URISyntaxException {
    URI uri = new URI(URL);
    Map<String, String> params = Arrays.stream(uri.getQuery().split("&"))
            .map(s -> s.split("="))
            .collect(Collectors.toMap(k -> k[0], v -> v.length > 1 ? v[1] : ""));
    return params.get("id");
}


Просто с помощью классов 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
...
Рейтинг: 0 / 0
Поле объекта в качестве уникального ключа в документе MongoDB (Spring Data)
    #39975360
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miroooha
dakeiras

Он отказался от Postgresql потому что неправльно сделал что-то (хотя по умолчанию даже Постгрес работает в Хероку) и вместо того чтобы разобраться, полез в Mongodb.

А потом будет ходить по миру и распевать что SQL бд плохие для старпёров, а вот Mongodb для крутых молодых продвинутых эффективных.

Норм?

Как-то вы рассуждаете и за себя и за того парня. Да, в немалой степени я отказался от Postgres из-за того, что мне не удалось решить проблему подключений (в heroku их максимум 20). Пробовал Hikari Pool - стало лучше, но проблема глобально осталась.

Мне кажется что ты до конца недоисследовал проблему. 20 физческих сеансов к БД - даже для нагруженных продуктовых
систем - это нормально. Надо только вовремя возвращать соединения в пул обратно и для 99% кейсов тебе их хватит с
головой. Исключение - это длинные транзакции и ETL. Но ETL у тебя нет ведь у тебя Монго. И длинных транзакций
у тебя тоже скорее всего нет. В монге обычно все корректировки документов - микро-атомарные транзакции.
Тоесть сведя задачу к Монге ты доказал что у тебя оно прекрасно и работало бы в Postgres просто ты где-то
не додавил проблему до конца. А надо было просто понаблюдать что эти 20 сеансов в пуле у тебя делают.
...
Рейтинг: 0 / 0
Поле объекта в качестве уникального ключа в документе MongoDB (Spring Data)
    #39975364
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miroooha
Дмитрий Мух
miroooha,

я вот тут подумал о том, что вы же действительно можете использовать в качестве _id не ObjectId, а строку
при чём ведь она уже есть в самой ссылке на Google Play: https://play.google.com/store/apps/details?id=com.n3twork.tetris

Вот же: com.n3twork.tetris .

Используйте этот id в своём парсере и тогда всё у вас заработает с MongoRepository.

Имя пакета приложения?
Имя? Параметр id - это имя? Не идентификатор? Серъёзно?

miroooha
Но говорят, что строку в качестве primary key (ведь id по сути и есть primary key) не стоит использовать?
А я говорю, что стоит. И могу ещё раз процитировать документацию.
...
Рейтинг: 0 / 0
Поле объекта в качестве уникального ключа в документе MongoDB (Spring Data)
    #39975382
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miroooha
Я попробовал и всё работает! :)

Кросавчег!
...
Рейтинг: 0 / 0
Поле объекта в качестве уникального ключа в документе MongoDB (Spring Data)
    #39975384
Фотография 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=" и потом цепочку символов до следующего "&".
Это же просто банально. Да может быть есть сторонние библиотеки. Но разве
тривиальное решение для тебя - неприемлемо?
...
Рейтинг: 0 / 0
Поле объекта в качестве уникального ключа в документе MongoDB (Spring Data)
    #39975386
miroooha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дмитрий Мух
miroooha
пропущено...

Имя пакета приложения?
Имя? Параметр id - это имя? Не идентификатор? Серъёзно?

miroooha
Но говорят, что строку в качестве primary key (ведь id по сути и есть primary key) не стоит использовать?
А я говорю, что стоит. И могу ещё раз процитировать документацию.

Да, этот параметр по сути является именем пакета приложения, и по идее он всегда уникален. Если разобрать .apk файл с игрой, его можно будет там найти. Знаю, так как ковырял .apk файлы по молодости.

Цитату в студию! :)
...
Рейтинг: 0 / 0
Поле объекта в качестве уникального ключа в документе MongoDB (Spring Data)
    #39975391
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miroooha
Дмитрий Мух
пропущено...
Имя? Параметр id - это имя? Не идентификатор? Серъёзно?

пропущено...
А я говорю, что стоит. И могу ещё раз процитировать документацию.

Да, этот параметр по сути является именем пакета приложения, и по идее он всегда уникален. Если разобрать .apk файл с игрой, его можно будет там найти. Знаю, так как ковырял .apk файлы по молодости.

Оу, ну не надо про .apk, мобильные приложения я писал, знаю что это такое :)

Хорошо, давайте так.

Имя пакета приложения на сайте Google Play является идентификатором этого самого приложения.
Поэтому вы спокойно можете его использовать у себя в базе как _id документа.
...
Рейтинг: 0 / 0
Поле объекта в качестве уникального ключа в документе MongoDB (Spring Data)
    #39975392
miroooha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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=" и потом цепочку символов до следующего "&".
Это же просто банально. Да может быть есть сторонние библиотеки. Но разве
тривиальное решение для тебя - неприемлемо?

Я бы даже сказал слишком банально. Но меня всегда интересовали другие возможные решения. Я изначально пишу то, что приходит в голову, а потом улучшаю, если это необходимо и возможно.
...
Рейтинг: 0 / 0
Поле объекта в качестве уникального ключа в документе MongoDB (Spring Data)
    #39975394
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miroooha
Цитату в студию! :)

The _id field may contain values of any BSON data type , other than an array.
...
Рейтинг: 0 / 0
Поле объекта в качестве уникального ключа в документе MongoDB (Spring Data)
    #39975396
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miroooha

Я бы даже сказал слишком банально. Но меня всегда интересовали другие возможные решения. Я изначально пишу то, что приходит в голову, а потом улучшаю, если это необходимо и возможно.

Ну тот солюшен на Stream-ах работает?
...
Рейтинг: 0 / 0
Поле объекта в качестве уникального ключа в документе MongoDB (Spring Data)
    #39975409
miroooha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дмитрий Мух

Имя пакета приложения на сайте Google Play является идентификатором этого самого приложения.

Утвердительно киваю головой. :)
mayton
miroooha

Я бы даже сказал слишком банально. Но меня всегда интересовали другие возможные решения. Я изначально пишу то, что приходит в голову, а потом улучшаю, если это необходимо и возможно.

Ну тот солюшен на Stream-ах работает?

Работает вери велл, наверное. По крайней мере, работает на том, что успел протестировать.
...
Рейтинг: 0 / 0
Поле объекта в качестве уникального ключа в документе MongoDB (Spring Data)
    #39975418
dakeiras
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторПробовал Hikari Pool - стало лучше, но проблема глобально осталасьв Спринге и так Hikari используется по умолчанию. И он настроен по умолчанию на 5-10 коннектов если мне память не изменяет. Так что нормально он пашет с Хероку.
Скорее всего у тебя 2 приложения к 1 базе подключались.
...
Рейтинг: 0 / 0
Поле объекта в качестве уникального ключа в документе MongoDB (Spring Data)
    #39975422
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miroooha
Работает вери велл, наверное. По крайней мере, работает на том, что успел протестировать.

Ну и прекрасно. Пусть работает. Нагрузка на него - слабая. Сколько раз в секунду ты его дёрнешь?
Вряд-ли слишком много. Тебе надо больше качать и вставлять в свою монгу.

Это знаешь как старый двигатель в Москвич 2141. Пока он работает - пускай он грязный весь
в подтеках масла и закопченый. А как только ты решил его "перебрать" и промысть дескыть чтоб
лучше было - тут двигателю и капец. Надо будет заново ремонтировать.

Вобщем старый админски-девопский прицип. Да? Работает - и ладньенько.
...
Рейтинг: 0 / 0
Поле объекта в качестве уникального ключа в документе MongoDB (Spring Data)
    #39975468
miroooha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton
miroooha
Работает вери велл, наверное. По крайней мере, работает на том, что успел протестировать.

Ну и прекрасно. Пусть работает. Нагрузка на него - слабая. Сколько раз в секунду ты его дёрнешь?
Вряд-ли слишком много. Тебе надо больше качать и вставлять в свою монгу.

Это знаешь как старый двигатель в Москвич 2141. Пока он работает - пускай он грязный весь
в подтеках масла и закопченый. А как только ты решил его "перебрать" и промысть дескыть чтоб
лучше было - тут двигателю и капец. Надо будет заново ремонтировать.

Вобщем старый админски-девопский прицип. Да? Работает - и ладньенько.

У меня тут как раз в деревне под окном Москвич 2140 1984 года стоит. Хоть сейчас заводи и езжай. :D Правда на большие расстояние рискованно, в любой момент может пернуть и загнуться.
...
Рейтинг: 0 / 0
Поле объекта в качестве уникального ключа в документе MongoDB (Spring Data)
    #39975710
miroooha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тут такое дело: давно думал, есть ли решение описанному ниже вопросу.

Google Play определяет страну, из которой подключается пользователь по IP-адресу (вроде как). При запуске с локальной машины парсер парсит информацию о стоимости игры в рублях - всё ок. При старте с heroku парсер уже подключается с европейского адреса, и вся страница отображается в соответствующей локали и с соответствующими ценами (евро).
Перевести содержимое страницы на русский смог с помощью простого костыля (суфикс &hl=ru к основному адресу), но на цену данный суффикс не влияет. Она конкретно привязана к соединению.

Можно ли как-то обмануть Google помимо использования прокси/VPN (работают через раз с Jsoup)?
Может в heroku есть какие-нибудь настройки?

Иль забить и смириться?
...
Рейтинг: 0 / 0
Поле объекта в качестве уникального ключа в документе MongoDB (Spring Data)
    #39975725
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miroooha
Тут такое дело: давно думал, есть ли решение описанному ниже вопросу.

Google Play определяет страну, из которой подключается пользователь по IP-адресу (вроде как). При запуске с локальной машины парсер парсит информацию о стоимости игры в рублях - всё ок. При старте с heroku парсер уже подключается с европейского адреса, и вся страница отображается в соответствующей локали и с соответствующими ценами (евро).
Перевести содержимое страницы на русский смог с помощью простого костыля (суфикс &hl=ru к основному адресу), но на цену данный суффикс не влияет. Она конкретно привязана к соединению.

Можно ли как-то обмануть Google помимо использования прокси/VPN (работают через раз с Jsoup)?
Может в heroku есть какие-нибудь настройки?

Иль забить и смириться?

А проблема в чём?
...
Рейтинг: 0 / 0
Поле объекта в качестве уникального ключа в документе MongoDB (Spring Data)
    #39975768
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miroooha,

Нужен юз кейс.
Например:
- юзверь германии встал с кровати
- нажал урл ffffffffff
- мой сервер ответил ыыыыыыы
...
...
Рейтинг: 0 / 0
25 сообщений из 78, страница 3 из 4
Форумы / Java [игнор отключен] [закрыт для гостей] / Поле объекта в качестве уникального ключа в документе MongoDB (Spring Data)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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