>>1189435 (OP) Оп, хули ты просто выпернул тред и все? За тебя что ли вбрасывать? Btw, тред не взлетит - уже есть баз данных тред с дбашниками вместо населения. Ну ладно, вброшу.
> redis > cassandra Не нужно - есть Индеец Зажигай. Лучше во всем кроме апдейтов с кассандрой, там чуть хуже.
> mongodb Говорят postgre лучше с джейсонами, когда их добавили и допилили.
Теперь отсоси мне, ты должен был это написать в оппосте, пидар.
> Говорят postgre лучше с джейсонами, когда их добавили и допилили. Подтверждаю. Индексы и напердоленный язык запросов завезли, на триггеры можно повесить валидацию схемы и данных и жить как король. Ясен-красен, нереляционки не за JSON берут, если не долбоебы, но пострес пилят явно люди, умеющие в баланс между реляционным манямирком и нереляционным хуяк-хуяк-и-в-продакшен. Процедурки на Питоне, Перле и Lua — это вообще охуеть.
Изучаю сейчас тарантул, суть такова: внутри однопоточный lua, работающий через корутины и к нему прицеплено хранилище, напоминающее монгу, то есть классические типизированные индексы, но данные можно хранить произвольной формы. Есть с персистенсом, есть inmemory, есть мастер-мастер репликация. Есть ещё транзакции, с которым надо будет поэкспериментировать ещё (+ как они заработают через репликацию), но с виду доверия особенного не внушают.
В целом мне нравится идея, мы как бы не изолируем полностью реализацию СУБД, а даём возможность её дописать под свои нужды, имея внутри достаточно мощные библиотеки, на 99% эту СУБД имплементирующие. Никаких эзотерических языков, как напридумывали для хранимок в SQL.
Что хуёво это очень древний луа (5.1), кооперативная многозадачность (можно неправильным кодом повесить весь инстанс), судя по документации нет VACUUM, то есть он постоянно беспрерывно просто срёт на диск, и вот ещё нужно выяснить насколько хуёвые там транзакции.
Насчёт монго: во-первых без транзакций очень плохо, почти все рано или поздно эти транзакции пытаются как-то наколхозить по мере развития проекта. Во-вторых полнотекстовый поиск умеет искать только по целым словам, там нет n-grams. В-третьих нет очень нужной функции CONVERT_TZ, и да, её нельзя сделать вычитая/добавляя N часов. В-четвёртых индекс устроен так, что при обновлении документа он временно оттуда вываливается, тем самым на какой-то момент пользователи не увидят какие-то документы в общем списке, хотя никто их оттуда не удалял. В-пятых, как по мне, очень мешает лимит 16Мб, особенно если какую-то сущность планируется эмбедить внутрь коллекции-родителя как список ObjectId. В-шестых, опять же, нет VACUUM.
ПГ справится со всеми этими недостатками. Слышал только что на ПГ сложно навернуть geodistance, сложно поставить PostGIS. А в монге оно из коробки работает норм. Ещё краем уха слышал что даже SQLite уже тоже себе добавляет json field.
>>1189502 >В целом мне нравится идея, мы как бы не изолируем полностью реализацию СУБД, а даём возможность её дописать под свои нужды https://www.datomic.com/
А я напоминаю, что бд должна хранить данные, а не обрабатывать. Это для всяких >В-третьих нет очень нужной функции CONVERT_TZ, и да, её нельзя сделать вычитая/добавляя N часов Я хуй знает, в любом яп можно это сделать, прибавляя вычитая N часов, о чем ты?
>>1189765 Ты действительно, как ты выражаешься, «хуйзнает». Таймзоны это сложнее чем просто добавить N часов. Специально же написал об этом, видимо это трудно осознать. К примеру задача сделать group by по дням некоторых событий с учётом таймзоны пользователя.
>>1189765 Смотрите, ДИПЛОМИРОВАННЫЙ ДЖАВА СПЕЦИАЛИСТ собирается передавать данные с базы на сервер приложения, после чего отправлять их назад вместо того, чтобы их просто обработать на месте.
Сколько недель будешь расссчитывать хотя бы небольшой кросс джоин таблиц на пару миллионов значений, которые следует сгруппировать?
Пытаюсь сделать юзеров и выдать им права доступа к базам. Смотрел и на офф. сайте и гуглил. Создаю командой createUser и в параметре roles указываю список из одного элемента (root для root или dbAdminAnyDatabase для администратора, например). В обоих случаях в параметр roles автоматически прописывается параметр db (смотрю по записям в документе). В итоге и root, и администратор работают только для одной базы, а в других у них прав нет.
Это нормально для mongodb или я не то делаю? Возможно сделать юзера с правами администратора для всех баз?
Ну вы хоть описывайте свою говнину так чтобы посторонние поняли о чём оно и где его применять. А то какие-то там апдейты лучше/хуже, это ж ни о чём не говорит.
В общем, смысл nosql баз данных - это замена оперативной памяти/кучи для всяких сетевых/применений, когда обычные SQL базы данных на роль оперативы годятся плохо.
>>1190798 Подумой. >>1190815 Тред не для войтивайти и юаней. Поэтому и не понимаешь ничего. >>1190818 Пиздеж. >>1190826 > монга > агрегирование Ебать ты долбоеб, земля те пухом, братишка.
>>1191430 Именно так. Ответ предполагает наличие знания бигдаты. Есть кандидат написал в резюме, что он как Ленка БИГ ДАТА ДИСТРИБЬЮТЕД АРХИТЕКЧУРС СО СПЕШАЛ КЛАУД СПЕШИАЛИСТ и обдристывается, то значит, что он пиздит.
> хадуп зашквар, ноу вискас На-на-на, хадуп стек не зашквар и у него много задач.
> Типо как загадка на собеседовании, на одном стуле хадуп, на втором игнит. На какой сам сядешь, какой мамаше поставишь Валидный вопрос если человек работал с обоими технологиями. Если сможет пояснить, то он как минимум имеет представление об обоих. Если нет, то просто умное слово в резюме написал.
Репощу тут. Когда-то был тред БД, но что-то не нашёл, спрошу тут. Есть около 50 миллионов записей по ~килобайту, нужно запилить удобный просмотр, сортировку и т.д. Вопрос по производительности. В идеале бы запилить в вебе чтоб не таскать везде БД, но я так понимаю с таким размером нужен оверпрайсный сервак если больше 3.5 человек будет пользоваться? На какие вообще скорости рассчитывать и сколько сожрет оперативки? В локальной БД же нормально будет шевелиться или на рядовой кофеварке 2ядра/4гига тоже будет больно?
>>1191534 >50 миллионов записей по ~килобайту >запилить в вебе > В локальной БД Ты планируешь всю эту мошну выгружать пользователю на страницу? Как? Почему? Зачем?
>>1191534 50 гигабайт голых данных это не бигдата нихуя. И 50 гигабайт чего? Табличные данные? Ключ-значение? Логи с датой события и текстом? Что?
Для первых двух случаев (в твоем случае) берешь оракл, mssql, постгре, хуячишь схему под данные, добавляешь индексы если нада (если действительно надо, они не бесплатные) и загружаешь свои 50 гигабайт говна. Для фронта к говну можно не писать обертку, а просто юзануть любую Data API платформу - например тот же Dreamfactory. Вот у тебя и фронт, и рест говнище, и секьюрити из коробки к твоему датасету. Только внимательно следи за запросами - они должны быть эффективными, никаких фуллсканов, никакой выгрузки половины БД за раз, только паджинирование, только хардкор.
В третьем случае поднимаешь ELK, грузишь датасет и обмазываешься полнотекстовым поиском и визуализацией данных.
Чтобы обходить corner-case реляционных. В частности бессмысленные и беспощадные соединительные таблицы, потому что реляционные бд являются child->parent only.
>>1189435 (OP) Анон, есть сайт, который сделан с помощью Django, база данных представляет собой mongoDB. Так вот, Анонче, как же можно сделать консольный запрос к базе к данных? Проблема усугубляется тем, что это не мой проект. Если слышал, про Open EDX, то поймешь о чем я. Документации хуй да нихуя. Так вот, кто разбирается в Django, помогите советом.
В общем пытаюсь импортировать из Excel'я в MS SQL. И чо за хуйня? На превьюхе первый пик. Только какого то хрена последние два столбца названы F7 и F8, а в таблице, которую я создавал O1 и O2. И уже на следующем шаге пик 2. Как чинить? Чего ему надо, сволочи этакой?
>>1189435 (OP) Аноны, работал кто-нибудь с mongo дб? У меня тут запрос, который делает много lookup'ов, сторонних коллекций в основную. К сожалению пока я их не могу убрать, так что ищу советов по по оптимизации. К счастью все эти лукапы не зависят друг от друга и могли бы выполняться параллельно. Я перепробовал несколько решений, пока единственное работающее было - через $facet, но оно оказалось в 2 раза медленнее обычной последовательности лукапов ( в причине чего кстати я не могу разобраться ). Может кто помочь? inb4 да, я знаю что я пытаюсь восстоздать реляционную модель данных на нереляционной базе
>>1237570 Скажем, приспичило тебе в приложение прикрутить полнотекстовый и фасетный (как в каком-нибудь Амазоне) поиск и ты рррраааз такой и поднимаешь инстанс ИластикСерча или Солра, проводишь синхронизацию данных, прикручиваешь нужное API у себя на бекенде и бац (бац-бац-бацбац!) пользователи твоей системы могут искать всякую фигную и клацать на категории (подкатегории, под-подкатегории) разной шляпы и все это будет быстро-быстро. Только учти, что они основаны на Лусине, а она не транзакционная. Или, скажем, приперло тебе прикрутить кэширование в свое приложение, т.к. каждый раз ходить в базу данных дорого и ваще не по-пацански и ты такой бац и прикручиваешь какой-нибудь Hazelcast или Redis и кэшируешь данные там, что делает твое приложение быстрее, а волосы мягкими и шелковистыми. Или вот взять пример, решил ты запилить сервис, который будет предлогать оптимальные туристические маршруты (на какой самолет сесть, где купить билет на автобус и как доехать). На всяких PostgreSQL это будет проблематично сделать, да и не для того их разрабатывали. И ты такой бац (бац-бац-бацбац) и уже не прошло и получаса как ты поднимаешь инстанс Neo4j, проектируешь свою модель данных в виде направленного графа и пишешь запросы к графовой базе данных, которая будет тебе за десятки миллисекунд прокладывать оптимальные туристические маршруты для твоих пользователей. Стоит ли говорить, что какая-нибудь реляционная база данных просто сдулась бы на первом запросе на ндцатом джоине выжрав всю память на сервере.
И еще - если бы кто подсказал как полностью профилировать запросы в монго - было бы классно. Сейчас например я не могу в explain найти информацию о том, что происходит в lookup и т.д., только простейшие матчи. анон >>1240701
>>1240744 Индексы добавил на foreignField, но explain почему-то не показывает информацию по ним вообще, так что я не могу понять - использует он их или нет. Судя по скорости - вроде да
>>1240769 Да ничего ты не пытался. Версию монги не указал. А между прочим была целая куча багов по explain, который не мог нормально вывести данные по плану запроса. Да и сам запрос ты не предоставил. Вангую, что у тебя там кривой запрос и explain не туда воткнул ко всему прочему. Инфа соточка так сказать.
>>1241084 Я уже говорил что план аггрегации получить не проблема, но в нем нет никакой информации о не $match стадиях, просто копия из реквеста. СО молчит. Я конкретно ищу информацию о $lookup. В эксплейне - просто показывается копия стадии из реквеста, никаких данных об использовании индекса, длительности выполнения и т.д.