O. 
    
    
 
    
    Aleksey 
    
    
        
        
        
        Господа, а кто нить пробовал использовать mongo in memory как замену memcached/redis ?
    
 
    
    vveare138 
    
    
        
        
        
        мм
    
 
    
    vveare138 
    
    
        
        
        
        а для чего
    
 
    
    vveare138 
    
    
        
        
        
        что ты там хранить собираешься?
    
 
    
    Aleksey 
    
    
        
        
        
        то что сейчас храню в мемкеше.
    
 
    
    Aleksey 
    
    
        
        
        
        результаты выборок из базы данных
    
 
    
    vveare138 
    
    
        
        
        
        тебе недостаточно тех структур данных которые предоставляет редис/мемкеш?
    
 
    
    Aleksey 
    
    
        
        
        
        достаточно. но резервирование не радует
    
 
    
    Aleksey 
    
    
        
        
        
        ну и по всёй видимости надо использовать не монгу а percona mongo
    
 
    
    Евгений 
    
    
        
        
        
        Привет. Это нормальная практика, когда таскаешь uuid записей в другие документы? Типа внешние ссылки в sql
    
 
    
    Cap 
    
    
        
        
        
        Это звоночек что на самом деле нужна была sql
    
 
    
    Viktor 
    
    
        
        
        
        А если нужен сразу sql и document store? Использовать сразу две технологии?
    
 
    
    Cap 
    
    
 
    
    Viktor 
    
    
        
        
        
        Есть мероприятие и список участников, сейчас сделано так, что в мероприятии хранится список участников и их статусы (собирается посетить, не придет итд) и чем больше участников, тем жирней объект. В реляционке было бы две таблицы и только в том случае, когда мне нужны все участники, я бы лез в другую таблицу или делал бы джойн для получения кортежа: айди мероприятия, название, кол-во участников по какому-то критерию
    
 
    
    Viktor 
    
    
        
        
        
        Сейчас пока спасает то, что объект мероприятия изменяется редко после определенного момента и я его могу закешировать
    
 
    
    Cap 
    
    
        
        
        
        Классический кейс для sql базы
    
 
    
    Viktor 
    
    
        
        
        
        И в этом же приложении есть "анкета", с большим кол-вом атрибутов, которые удобно хранить в одном документе и у них нет внешних зависимостей
    
 
    
    Cap 
    
    
 
    
    Alexander 
    
    
        
        
        
        в постгресе?
    
 
    
    Alexander 
    
    
        
        
        
        а то мускуль не особо в джейсон умеет
    
 
    
    Viktor 
    
    
        
        
        
        Про постгрес думал, но пока не дошли руки
    
 
    
    Viktor 
    
    
        
        
        
        Сериализовать в json не хочу, т.к. есть поиск по полям, например find({$exists: "age"})
    
 
    
    Alexander 
    
    
        
        
        
        ну судя по всему нужно
    
 
    
    Alexander 
    
    
        
        
        
        поэтому приволокли монгу
    
 
    
    Viktor 
    
    
        
        
        
        Да, поэтому и не только, плюс еще удобная поддержка драйвером полиморфизма. У меня .net
    
 
    
    Viktor 
    
    
        
        
        
        На sql такое раскладывать очень обломно
    
 
    
    Alexander 
    
    
        
        
        
        ну хз... монго сильно начинает проседать, когда начинаются поиски по связям
    
 
    
    Viktor 
    
    
        
        
        
        По факту мне связи нужны только в одном-двух местах на всем проекте, но они performance critical
    
 
    
    Alex 
    
    
 
    
    Alexander 
    
    
        
        
        
        в sql ты тоже можешь подобие find({$exists: "age"}) запилить
    
 
    
    Alexander 
    
    
        
        
        
        age is not null
    
 
    
    Viktor 
    
    
        
        
        
        Можно, тогда неудобно хранить\выгружать и как мне кажется доступ в монге по айдишнику быстрей, чем фильтр по таблице
    
 
    
    Alex 
    
    
        
        
        
        а в sql доступ не по ID ? лол
    
 
    
    Alex 
    
    
        
        
        
        и что мешает в том же постгресе расширить это типом JSONB ?
    
 
    
    Alex 
    
    
        
        
        
        ой да ладно это делается менее чем за неделю.
    
 
    
    Viktor 
    
    
        
        
        
        Я сейчас не о случае в вакууме, когда я сажусь делать новый проект, а конкретно про рабочий кейс
    
 
    
    Viktor 
    
    
        
        
        
        ЛОЛ
    
 
    
    Alex 
    
    
        
        
        
        у меня был опыт
    
 
    
    Viktor 
    
    
        
        
        
        По-моему слишком смелое заявление без знания кодобазы
    
 
    
    Alex 
    
    
        
        
        
        мышки плакали кололись но упорно ели кактус :)
    
 
    
    Alex 
    
    
        
        
        
        ну судя по тому что выше, кодобаза таки вполне стандартная
    
 
    
    Alexander 
    
    
 
    
    Viktor 
    
    
 
    
    Alexander 
    
    
        
        
        
        нет
    
 
    
    Alexander 
    
    
        
        
        
        остались
    
 
    
    Alexander 
    
    
        
        
        
        просто удалили монгу )))
    
 
    
    Alex 
    
    
        
        
        
        Есть кейсы где SQL не подойдет но их скажем так ограниченное количество, и зачаствую на тех же кейсах, монга тоже не нужна будет с вероятностью весьма большой :)
    
 
    
    Viktor 
    
    
        
        
        
        Было бы все так просто) у меня перформанс хаки завязаны на патчи в монге, придется код лопатить нехило, плюс npgsql (.net драйвер) местами очень мерзкий
    
 
    
    Viktor 
    
    
        
        
        
        Пришлось в другом проекте даже собственный пулинг писать
    
 
    
    Viktor 
    
    
        
        
        
        Потому что ну невыносимо было этим пользоваться
    
 
    
    Alex 
    
    
        
        
        
        собственный пулинг много где приходится использовать, это как бы не новость
    
 
    
    Cap 
    
    
 
    
    Viktor 
    
    
        
        
        
        Сейчас скажу
    
 
    
    Viktor 
    
    
        
        
        
        ~300 тысяч, объект в среднем 48кбайт
    
 
    
    Alex 
    
    
        
        
        
        premature optimization as is
    
 
    
    Cap 
    
    
        
        
        
        Что выбираешь и за сколько мс это происходит?
    
 
    
    Viktor 
    
    
        
        
        
        Есть набор перформанс тестов в apache jmeter
    
 
    
    Viktor 
    
    
        
        
        
        Там была раньше проблема, что т.к. объект жирный, то на сериализацию уходило процессорное время
    
 
    
    Viktor 
    
    
        
        
        
        Кеш и сокращение обращений к данной коллекции решило проблему, сейчас есть коллекция, в которую чисто аппендится новый стейт, там 8.5млн объектов, там была только проблеа с group, но я вроде решил и это
    
 
    
    Viktor 
    
    
        
        
        
        Хотя, может подскажете решение лучше
    
 
    
    Cap 
    
    
        
        
        
        Сформулируй вопрос
    
 
    
    Viktor 
    
    
        
        
        
        Есть коллекция, типа история стейтов, основная операция чтения - сгруппировать по признаку и взять последнее по дате. Я делаю поиск, потом сортировку по дате в обратном направлении, потом группирую по признаку и беру первое, что попадется в каждом, навесил на это индекс, проверил, что он используется для данного запроса. Сейчас покажу как выглядит запрос
    
 
    
    Viktor 
    
    
        
        
        
        .aggregate([
          { $match: { eventid: 12345, categoryid: 25 } },
          { $sort: { created: -1 } }
          { $group: { _id: "$questionid", state: { $first: "$answerText" } } }
          ])
    
 
    
    Viktor 
    
    
        
        
        
        Индекс такой { eventid: -1, categoryid: 1, created: -1, questionid:1 }
    
 
    
    Евгений 
    
    
 
    
    Alex 
    
    
        
        
        
        и что на этом кейсе монга реально будет быстрее чем РСУБД ? вроде все банально
    
 
    
    Viktor 
    
    
        
        
        
        товарищи, я понимаю, что проще сказать "перепиши на %технология нэйм%", но давайте предметно обсудим можно ли здесь что-то еще улучшить или нет
    
 
    
    Alexander 
    
    
        
        
        
        в связи с тем, что монга может терять данные и это было учтено в проектировании, мы просто стёрли монгу и поставили постгрес