Egor
интересно, теперь буду знать
так и еще тогда
Egor
а вообще, нужно как-то кешить монгу?
Egor
или не?
Nick
зависит от случая
Egor
я просто думал монга немного умная и может сама это делать...иногда
Nick
можно хранить в монге терабайты, а работать с десятком гигов - тогда можно
Nick
но вообще обо всех таких "оптимизациях" надо адумываться когда уже чтото тормозит
Egor
а на сервере есть смысл стейт дублировать?
Nick
иначе на первых парах добавленная сложность может стать большей проблемой чем мифический прирост производительности в будущем
Nick
опять же зависит от случая
Egor
не спорю, оверхед может вообще выйти за рамки дедлайна))
Nick
все решения принимаются изза необходимости, а не просто захотелось
Egor
ну да, ну к примеру часто очень стучаться в базу нее хочется, взял, провалидировал стейт на сервере, если не совпадает6 пошел в базу
Nick
если вы сейчас знаете, что надо хранить оч мног оинфы, при этом рабочий набор данных требует какихто манипуляций по всему что есть (агрегаты всякие, таблицы рейтингов и т.п.) то да иеет смысл
Nick
Egor
=)
Nick
и это так
Nick
вот прямо сейчас у нас на проекте будет использоваться хибер со своим умным кешем, но работас базой будет происходить из нескольких приложух (знаю что хибер тут так себе) и вот у нас уже ест ьпробелма инвалидации этого гребанного кеша
Nick
а мы даже не начали ничего делать
Nick
если все находится в одной приложухе, то почему бы и нет
Egor
ну что, удачи с проектом, все проинвалидируешь :D
спасибо за помощь)
yopp
Даже если эти 150 человек будут одновременно читать что-то на сайте, очень маловероятно что у вас даже 20 запросов в секунду будет. Учитывая что у вас там не будет миллионов комментариев, производительность ваша самая последняя проблема.
Anonymous
Человек не виноват, что у него такое имя
Bruno
Anonymous
Может кто-то делал что-то похожее?
Sergei
если ты не знаешь, то лучше не проектировать
Sergei
тоже не факт
Anonymous
тоже не факт
Там связей много будет. В SQL придумал как сделать. в Монго - нет
Nick
Anonymous
похожее на что?
Сорри. Стер уже сообщение. Похожее на сервис расписания поездов
Мечтатель
ㅤㅤㅤㅤㅤ
#ask
How to fix this error?
ㅤㅤㅤㅤㅤ
Pavel 🕷
ребята, тут есть просженые носклщики? интересует mongo vs cassandra на текущий момент времени, не холивара ради, а фидбека для
yopp
две разные базы данных, с совершенно разными подходами
yopp
сравнение субд в отрыве от конкретного применения бесполезны
Slava
да, два разных мира. скажите хотя бы для каких целей\задач выбираете бд
Pavel 🕷
нужна отказоустойчивоемость и индексы внутри обьекта по нескольким полям
Pavel 🕷
шардинг внутри реплики, реплики возможны в разных датацентрах
yopp
вы сейчас про требования к субд уже говорите
Slava
я больше имел ввиду какой тип нагрузки, write\read, как много данных, rps и все в таком духе
yopp
а вы про свою предметную область расскажите
Pavel 🕷
наверно тут монгу лучше взять, потому как в кассандре индекс примари только
Pavel 🕷
Egor
я конечно не шарю, но бывали случаи, когда в проекте оказывалось до 3 разных баз и больше?
yopp
продакшен системы бывают и сложнее
Slava
Pavel 🕷
тобишь мессенгеры, текст кол-во и все такое
Slava
Pavel 🕷
Slava
у кассандры дорогое чтение, очень
Pavel 🕷
какой вердикт?
yopp
берите то, с чем опыта больше
Pavel 🕷
с монгой больше
Slava
тогда вы сами ответили на вопрос)
yopp
значит берите её. судя по всему, у вас ещё нет пользовательской базы, так что вам лучше потратить ресурсы на то, чтоб быстрее доставить mvp
yopp
и собрать фидбек
Pavel 🕷
спасибо)
Egor
не работает compound index в subdocument-массиве
{
bar: String,
foo: [{
a: String,
b: String
}]
}
schema.index({ 'foo.a': 1, 'foo.b': 1 }, { unique: true }}
когда добавляю документ с помощью push/addToSet дубликаты все-равно добавляются
кто знает как решить?
yopp
Egor
@dd_bb
Mongoose: paper.findAndModify(
{
_id: ObjectId("5af761303e34a19ad48be03e"),
user: ObjectId("5af72a522f2dbc92d7d23c52")
},
[],
{
$setOnInsert: { __v: 0 },
$push: {
rating: {
_id: ObjectId("5af766739f45ec9b136aecd9"),
user: ObjectId("5af72a522f2dbc92d7d23c52"),
reaction: "test"
}
}
},
{ runValidators: true, new: true, upsert: true, remove: false, fields: {} }
);
если правильно понял, то вот
Egor
кстати, нашел такой солюшен, он нормальный?
https://github.com/Automattic/mongoose/issues/2226#issuecomment-226634928
yopp
@dd_bb
Mongoose: paper.findAndModify(
{
_id: ObjectId("5af761303e34a19ad48be03e"),
user: ObjectId("5af72a522f2dbc92d7d23c52")
},
[],
{
$setOnInsert: { __v: 0 },
$push: {
rating: {
_id: ObjectId("5af766739f45ec9b136aecd9"),
user: ObjectId("5af72a522f2dbc92d7d23c52"),
reaction: "test"
}
}
},
{ runValidators: true, new: true, upsert: true, remove: false, fields: {} }
);
если правильно понял, то вот
Нет, нужен аналог вот этого https://docs.mongodb.com/manual/reference/method/cursor.explain/#cursor.explain в вашем дайвере
Egor
ну да, я и скинул отчет выше
какой есть
Egor
http://thecodebarbarian.com/whats-new-in-mongoose-4.10-unique-in-arrays.html
еще солюшен
жалко только, что на апдейт не пашет
Vadim
Есть какой нить учебник по монго для новичков желательно на русском?
Egor
советую сразу взять проект и параллельно решать проблемы, которые возникают
Anonymous
Egor
ну я и таких чуваков видел, нормально все, фигачили покруче сеньеров
Egor
arrayFilters пашет у кого?
Egor
у меня для массивов двойной вложенности не пашет
Egor
профиксил с помощью явного указания ObjectId
Amir
хм. а если у меня результат выборки вот такой
[{'out': [{'script': {'name': ['v1']}}, {'script': {'name': ['v2']}}]}]
а мне нужен только массив вида ['v1', 'v2'] - как это реализовать без боли?
Amir
собственно сама выборка: find({}, {'_id': 0, 'raw.out.script.name':1})