← All posts tagged NoSQL

Продолжаем наш марафон уриной по монговысеру. Многое мы с вами уже знаем, но пора добавить в копилку ещё немного прекрасного.

on 32-bits systems led to losing all data silently after some 3GB
losing all data silently after some 3GB

cryto.net

Ха-ха, монгоблядки начинают понимать, что надо изобретать базу.
There was a lot of talk about schemas at the conference. For a "schema-less" database, as MongoDB has been promoted, this may seem odd but it does appear that MongoDB, Inc has re-discovered that a regular structure to the documents stored in the database can be helpful for managing the evolution of a database.
Хотя там всё такое же: и индексы, и валидаторы.

compose.io

Я писал как-то, что мы избавились от жанги в проекте. Это было первым важным, победным шагом на пути к здоровью сервиса. Сегодня мы сделали следующий — погасли последние инстансы монги, только данные вживых на крайний случай. Осталось сменить mysql на постгрес, и можно будет говорить о СТАБИЛЬНОСТИ. Ура, товаrищи!

Надо запомнить сегодняшний кейс для собеседований.
Есть монгоколлекция на 500кк записей (содержат информацию о некоторых событиях) для кучи объектов с полями obj_id, timestamp и т.д. Есть объект (obj_id = 1), для которого в этой коллекции лежит 10кк записей. Задача: брать из этих десяти миллионов по 50к для аггрегации. Сложность: skip() дичайше сканит все предыдущие события, т.е. чем больше число, переданное в skip(), тем дольше работает вся кверя. Дискас.

MongoDB — это быстро!
2014-06-16T19:04:03.772+0000 [conn128] query buzzoola.stat_tuple query: { $query: { ev_id: 4273 }, $orderby: { timestamp: 1 } } planSummary: IXSCAN { ev_id: 1, timestamp: 1 } cursorid:125433744307 ntoreturn:50000 ntoskip:9138532 nscanned:9144499 nscannedObjects:9144498 keyUpdates:0 numYields:388205 locks(micros) r:714168583 nreturned:5966 reslen:4194604 5091311ms

Кто не понимает, что произошло, подсказываю
IXSCAN... но тут внезапно:
5091311ms

С хабра:
Вы столько раз употребили термин «Big Data», что стало интересно, а на какие объемы данных рассчитана БД?
На те, что в Excel уже не умещаются.

Задеплоил на работе обновленную архитектуру приложения, смигрировав часть важных данных из монги в скл. Даже не смотря на ущербность мускула, отклик бэкенда внезапно увеличился в несколько раз (хотя такой цели не преследовалось). Where is your god now? inb4: не умеете работать с монгой.

Запустили тест для любимой монги, который в два потока пишет, в один читает проиндексированные записи. Спустя десяток итераций количество считанных/записанных документов упало на порядок, а спустя еще пару итераций всё окончательно слегло. Robust web-scalable production-ready solution has died.

Не люблю я когда продвигают nosql-решения в качестве основных хранилищ. Почти каждый день на работе мне приходится работать с монгой. И каждый раз (без исключения) появляются новые (или давно известные) проблемы.
Сегодня оказалось, что сериализовать по-человечески питоний Decimal нельзя. Написать энкодер можно, впихнуть его в базу можно, но он либо не будет работать на апдейтах, либо вместе с декодом Decimal монга попробует продвинуть свой нативный адаптер, создав новый айдишник (на апдейте-то, ага). Логики никакой. Одна надежда, что проблема только в pymongo, а в остальных либах всё было бы хорошо.