LINUX.ORG.RU

MongoDB 1.6.0

 , , ,


0

1

MongoDB — документо-ориентированная система управления базами данных (СУБД) с открытым исходным кодом, не требующая описания схемы таблиц. Написана на языке C++.

Шардинг

Шардинг готов для использования в производстве, давая возможность масштабировать MongoDB горизонтально. При необходимости единственный экземпляр mongod может быть преобразован в распределённый кластер с нулевым временем простоя.

Replica Sets

Replica sets — новый метод репликации, который предоставляет возможность автоматически переключаться среди участников кластера.

Replica pairs объявлен устаревшим; использующим данный функционал рекомендуется перейти на использование replica sets.

Другие улучшения

  • Опция w (и wtimeout) форсирует запись на n серверов до успешного завершения операции (особенно хорошо работает с replica sets)
  • $or-запросы
  • Улучшенная многопоточность
  • $slice-оператор для возвращения части массива (подмассива)
  • 64 индекса на каждую коллекцию (в 1.4 было 40)
  • 64-битные целые могут быть представлены в командной оболочке посредством NumberLong
  • Команда findAndModify теперь поддерживает upserts (аналог SQL MERGE). Также теперь позволяется указывать поле, которое должно быть получено
  • $showDiskLoc — опция для отображения местонахождения документа на диске
  • Поддержка IPv6 и доменных сокетов UNIX
  • C++ клиент отделён от бинарного пакета

>>> Подробности

★★

Проверено: catap ()

Ответ на: комментарий от tailgunner

>Номер счета, с которого деньги ушли, и номер счета, на который они пришли.

{«type»:«posting», «date»:«2010-08-09» «debit»:«50» «credit»:«51» «amount»:«100»}

Помнится, твой любимый наезд на собеседника — сказать что у него дислексия. Ты, паходу, частенько это слово в детстве слышал, вот оно и въелось тебе в речевой центр.

anonymous ()
Ответ на: комментарий от anonymous

А остатки на счетах менять не надо?

anonymous ()
Ответ на: комментарий от anonymous

> Помнится, твой любимый наезд на собеседника — сказать что у него дислексия.

В твоем случае это не наезд. Где номера счетов? Что является документом - счет или акт перевода?

Ты, паходу, частенько это слово в детстве слышал, вот оно и въелось тебе в речевой центр.

Еще я люблю наезжать на пафосных придурков, которые пишут безграмотно.

tailgunner ★★★★★ ()
Ответ на: комментарий от anonymous

>А остатки на счетах менять не надо?

ппц. И эти люди будут говорить мне за избыточность и достоверность?

anonymous ()
Ответ на: комментарий от tailgunner

>Где номера счетов?

Читай, тут вроде почти по-русски написано:

«type»:«posting», «date»:«2010-08-09» «debit»:«50» «credit»:«51» «amount»:«100»}

или вот совсем по-русски:

{«тип»:«проводка», «Дата»:«09.08.2010» «Дебет»:«50» «Кредит»:«51» «Сумма»:«100»}

Что является документом - счет или акт перевода?

Бухгалтерская справка.

Еще я люблю наезжать на пафосных придурков, которые пишут безграмотно.

Наверное, каждую неделю зеркало меняешь?

anonymous ()
Ответ на: комментарий от anonymous

>ппц. И эти люди будут говорить мне за избыточность и достоверность?
т.е. каждый раз заново пересчитываем.
Избыточность это конечно плохо, но иногда, например, в случае больших накладных расходов ею можно чуть чуть пожертвовать. Думаю это тот самый случай.

anonymous ()
Ответ на: комментарий от anonymous

>> Что является документом - счет или акт перевода?

Бухгалтерская справка.

Бумажная?

tailgunner ★★★★★ ()
Ответ на: комментарий от anonymous

>Смысла намного больше когда функционал транзакций реализован на уровне СУБД

смотря какой ценой. СУБД без транзакций востребованы.

У вас в трехзвенке сервер приложений единственным незашифрованным

паролем с СУБД коннектится?

а у вас все еще логины с паролями по незашифрованным каналам вместо сертификатов с ключами?

AVL2 ★★★★★ ()
Ответ на: комментарий от anonymous

>т.е. каждый раз заново пересчитываем.

Наоборот.

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

Ну да, конечно, посчитать остаток когда это необходимо — это же такие мегатонны накладных расходов! Не то что пересчитывать при каждой поводке, это же повысит производительность на порядки!

anonymous ()
Ответ на: комментарий от tailgunner

>>> Что является документом - счет или акт перевода?

Бухгалтерская справка.

Бумажная?

Предлагаешь гранитные скрижали?

anonymous ()
Ответ на: комментарий от anonymous

>>>> Что является документом - счет или акт перевода?

Бухгалтерская справка.

Бумажная?

Предлагаешь гранитные скрижали?

Мне в данном случае материальные объекты неинтересны... мне нужны абстракции: документы в MongoDB.

tailgunner ★★★★★ ()
Ответ на: комментарий от AVL2

а у вас все еще логины с паролями по незашифрованным каналам вместо сертификатов с ключами?

У меня то как раз по зашифрованным.
Вы не ответили на вопрос.

anonymous ()
Ответ на: комментарий от anonymous

это же такие мегатонны накладных расходов! А разве нет? N - операция просмотра остатков = 10 (в месяц) PT - количество проводок = 30000 (с начала года) P - добавлено проводок за месяц 10000

S1 = (N*PT)+P S2 = (P*2)+N

Ну и помножим на кол-во бухов.

anonymous ()
Ответ на: комментарий от anonymous

это же такие мегатонны накладных расходов!
А разве нет?
N - операция просмотра остатков = 10 (в месяц)
PT - количество проводок = 30000 (с начала года)
P - добавлено проводок за месяц 10000

S1 = (N*PT)+P
S2 = (P*2)+N

Ну и помножим на кол-во бухов.

anonymous ()
Ответ на: комментарий от tailgunner

>Мне в данном случае материальные объекты неинтересны... мне нужны абстракции: документы в MongoDB.

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

Ответ прежний: бухгалтерская справка. (конечно, в данном случае можно было бы ответить «приходник», но в приведенном документе для этого явно недостаточно атрибутов)

anonymous ()
Ответ на: комментарий от anonymous

> Стрелок, ты, если не в теме, конечно можешь глупости говорить, или вопросы наивные задавать

Я этот наивный вопрос задаю уже не первый раз: что является документом.

Ответ прежний: бухгалтерская справка.

Итак, бухгалтерская справка является документом MongoDB, представляющим перевод денег со счета на счет? Являются ли сами счета документами?

tailgunner ★★★★★ ()
Ответ на: комментарий от anonymous

>S1 = (N*PT)+P S2 = (P*2)+N

поясни, где что и почему именно так, как ты написал, а не по другому

anonymous ()
Ответ на: комментарий от tailgunner

Я этот наивный вопрос задаю уже не первый раз: что является документом

Ну дык, кто ж виноват, что ты читать не умеешь?

Являются ли сами счета документами?

Нет, а что? Ты где-то выше увидел такой документ?

anonymous ()
Ответ на: комментарий от anonymous

>> Являются ли сами счета документами?

Нет, а что? Ты где-то выше увидел такой документ?

Я увидел номера счетов: 50 и 51 (если это номера счетов, конечно - ты так и не сказал, что в твоей JSON-строке является номерами счетов). Если счетам не соответствуют документы, то где хранятся текущие суммы? Что вообще соответсвует счету?

tailgunner ★★★★★ ()
Ответ на: комментарий от anonymous

Конечно расчёты грубые и примерные. Для простоты предположим, что операция выборки данных и добавления стоит одинаково и равна 1.
S1 случай когда мы ведем бухгалтерию сначала года и не храним пересчитанные остатки.
N - сколько раз бух. смотрит в документ в котором есть остатки
N*PT = 10*30000 = 300000
P стоимость добавления проводок за текущий месяц + 10000
Итого 310 000

S2 случай когда мы каждый раз меняем значение остатков на счетах и его не нужно пересчитывать заново (да, это немного избыточно).

S2
тут вкралась ошибка
должно быть так:
S2 = P + Pfix*2 + N
Pfix - стоимость операции изменения остатков для 2-х счетов
новые проводоки за месяц запись проводок 10000 + 2 + 10 = 10 012

вот вам и разница 310 000 против 10 12


anonymous ()
Ответ на: комментарий от tailgunner

>Я увидел номера счетов: 50 и 51 (если это номера счетов, конечно - ты так и не сказал, что в твоей JSON-строке является номерами счетов)

По-моему, я это ясно написал, даже в двух редакциях.

Если счетам не соответствуют документы, то где хранятся текущие суммы?

А чем, по-твоему, вообще является счет (в терминах предметной области) и за каким забором там надо хранить «текущие суммы» (что это вообще такое? сальдо? И на кой банан тебе сдалось сальдо после каждой проводки?)

Что вообще соответсвует счету?

MapReduce

anonymous ()

Ещё один минус в Mongodb. Неявное объявление структуры документов.
С одной стороны похоже на плюс. Круто!!! Не надо объявлять структуру!
Потом заливаем данные одним скриптом. Потом для этой-же коллекции другим. Блииин я название атрибута перепутал. Чо делать!!!!
И такие ошибки могут возникать очень часто. Не, ну дисциплинирует конечно. Но что случилось с моими данными!

anonymous ()
Ответ на: комментарий от anonymous

Теперь я посчитаю.

S1 случай когда мы ведем бухгалтерию сначала года и не храним пересчитанные остатки.

N — кол-во проводок; c — кол-во запросов остатка. Всякую хитрую оптимизацию, которую позволяет, например, cjuchdb, мы не учитываем. Получаем:

вставка=O(1) выборка=O(N*c)

S2 случай когда мы каждый раз меняем значение остатков на счетах и его не нужно пересчитывать заново (да, это немного избыточно).

Ошибка №1. Остатки НУЖНО пересчитывать (иначе, как узнать его значение?)

И — ВНЕЗАПНО — ты предлагаешь пересчитывать эти остатки после каждой(!) проводки. В итоге получаем: вставка=O(N*N) выборка=O(1*c)

Да, просто феерическая экономия! Срочно звони в Стокгольм!

anonymous ()
Ответ на: комментарий от anonymous

>> Что вообще соответсвует счету?

MapReduce

То есть, чтобы узнать сумму на счету (ах да, «сальдо»), нужно запускать жаваскрипт, который проведет MapReduce по всем «бухгалтерским справкам»? Это рекомендованный метод решения таких задач? Кажется, я понимаю, откуда требование к крайней масштабируемости :D

tailgunner ★★★★★ ()
Ответ на: комментарий от anonymous

>Ещё один минус в Mongodb. Неявное объявление структуры документов.

Это для тебя «неявное», потому что ты не владеешь предметной областью. А любой бухгалтер влет сечёт «каракули» типа:

Д 50, К51 100-00

и прочие «самолетики»

Это как для тебя print «HelloWorld»

anonymous ()
Ответ на: комментарий от anonymous

Вы неправильно поняли. Я не предлагаю пересчитывать остатки после каждой проводки. Зачем? Пересчет остатков можно сделать в случае крайней необходимости. Просто каждая проводка изменяет значение остатков. Это не лишает возможности произвести пересчёт и для сверки.

Всякую хитрую оптимизацию, которую позволяет, например, cjuchdb, мы не учитываем

Это ту которая точно также будет хранить сальдо?

Ошибка №1. Остатки НУЖНО пересчитывать (иначе, как узнать его значение?)

Их не нужно пересчитывать постоянно, ибо они уже хранятся в базе пересчитанные!

Срочно звони в Стокгольм!

Вы туда уже звонили?

anonymous ()
Ответ на: комментарий от anonymous

И вобще зачем их постоянно пересчитывать (проводки) у меня же транзакции используются и я уверен в своей СУБД

anonymous ()
Ответ на: комментарий от tailgunner

>по всем «бухгалтерским справкам»?

Да, при чем — два раза.

Это рекомендованный метод решения таких задач?

Это единственный надежный метод решения задачи на протяжении последних 500 лет.

Кажется, я понимаю, откуда требование к крайней масштабируемости :D

Кажется, я понимаю, откуда такой пионерский задор у SQL-троллей: от безграмотности. С таким знанием предметной области, как у наших специалистов_по_всему, любые технологии будут повержены. Ну да что там, дело известное: http://www.demotivation.ru/images/20090520/vwe4ydh39rxb.jpg

anonymous ()
Ответ на: комментарий от anonymous

Вы у себя деньги в кошельке после каждой траты пересчитываете заново?
Или по текущему сальдо ориентируетесь?

anonymous ()
Ответ на: комментарий от anonymous

>У меня то как раз по зашифрованным.

ну тогда не совсе понятно, в чем суть вопроса.

Средства шифрации канала есть, средства безопасной аутентификации тоже. Все, что нужно, это желание их использовать.

Вы не ответили на вопрос.

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

AVL2 ★★★★★ ()
Ответ на: комментарий от tailgunner

>То есть, чтобы узнать сумму на счету

Ты же хотел нормализацию данных...

AVL2 ★★★★★ ()
Ответ на: комментарий от anonymous

>Вы неправильно поняли.

Ну конечно, тут ведь только ты дартаньян

Это ту которая точно также будет хранить сальдо?

Это ту, которая делает инкрементальный MapReduce. В этом случае выборка получается O(logN)

Я не предлагаю пересчитывать остатки после каждой проводки. Зачем?

А значения остатков ты из астралов брать собираешься?

Их не нужно пересчитывать постоянно, ибо они уже хранятся в базе пересчитанные!

Не, ну я ж говорю — гений! Просто гений — и всё тут!

...алсо, че там насчет консистентности было? ась?

Вы туда уже звонили?

не, а я че? это ж ты за нобелевкой поедешь.

anonymous ()
Ответ на: комментарий от anonymous

> Это единственный надежный метод решения задачи на протяжении последних 500 лет.

Абак рулит.

http://www.demotivation.ru/images/20090520/vwe4ydh39rxb.jpg

Ссылка на демотиватор - какое достойное завершение спора (по ссылке не ходил, естественно) %)

tailgunner ★★★★★ ()
Ответ на: комментарий от AVL2

Что толку от аутентификации, если в СУБД нет нормальных средств разграничения доступа, если ошибка в программе позволит непривелигированному хакеру Васе дропнуть все коллекции? (например все проводки)

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

А я и не просил за всех я у Вас интересовался

anonymous ()
Ответ на: комментарий от anonymous

>Вы у себя деньги в кошельке после каждой траты пересчитываете заново?

да. Мало ли — сдачу не так дали, или, патрег оброни, выронил пока доставал. А ты нет? Может, ты и наличие кошелька проверяешь только непосредственно у кассы?

Или по текущему сальдо ориентируетесь

С вопросами ориентации — это на другой ресурс.

anonymous ()
Ответ на: комментарий от anonymous

А значения остатков ты из астралов брать собираешься?

А если мозг включить и посты перечитать? Все равно непонятно откуда?
Изменить текущее значение сальдо для счета на основе суммы проводки
И пересчитать сальдо на текущую дату по суммам проводок для Вас одно и тоже?


Не, ну я ж говорю — гений! Просто гений — и всё тут!

Я Вас тоже люблю!

...алсо, че там насчет консистентности было? ась?

а она где-то нарушена?

не, а я че? это ж ты за нобелевкой поедешь.

Да не я скромный. Может Вы самии мне нобелевеку пробъёте. Тем более знаете куда звонить. Я с Вами поделюсь потом честно-честно!



anonymous ()
Ответ на: комментарий от tailgunner

>Абак рулит.

Да понятно уж давно, читать ты не умеешь.

Ссылка на демотиватор - какое достойное завершение спора

Сколько пафоса! А по теме есть что сказать?

anonymous ()
Ответ на: комментарий от anonymous

да. Мало ли — сдачу не так дали, или, патрег оброни, выронил пока доставал.


И мелочь тоже?

А ты нет?

Нет я по карте рассчитываюсь.

Может, ты и наличие кошелька проверяешь только непосредственно у кассы?
Ага. Там все равно только банковская карта, да пропуск.


С вопросами ориентации — это на другой ресурс.

А Вы всегда так на слово «ориентация» реагируете?
А цвета Вас не волнуют «розовый» там, «голубой» да и вообще все цвета «радуги»?

anonymous ()
Ответ на: комментарий от anonymous

>А если мозг включить и посты перечитать? Все равно непонятно откуда?

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

...алсо, че там насчет консистентности было? ась?

а она где-то нарушена?

Нет, не нарушена. Её просто нет. Поскольку наш гений хранит отдельно значение остатка и изменяет его при каждой проводке.

Тем более знаете куда звонит

Нет, спасибо, мне тут лулзов хватит.

anonymous ()
Ответ на: комментарий от anonymous

Нет, не нарушена. Её просто нет. Поскольку наш гений хранит отдельно значение остатка и изменяет его при каждой проводке.


Вы мне пример конткретной проблемы обрисуйте в связи с этим.

anonymous ()
Ответ на: комментарий от anonymous

Специально для Вас выдержка из википедии:

Проблема поддержки консистентности данных

Проблема поддержки консистентности данных остро стоит в задачах управления большими базами данных. Одним из способов избавится от проблем, связанных с поддержкой консистентности, является устранения дублирования информации. Одна и та же информация может быть записана с базе данных в нескольких местах (но, возможно в разном виде) или частично повторяться. Это требует синхронизации кусочков повторяющейся информации друг с другом.

С другой стороны, дублирование информации в различных местах позволяет писать более простые и эффективные алгоритмы поиска данных (алгоритмы выполнения различных запросов). При решении проблемы поддержки консистентности данных необходим разумный баланс между скоростью (сложностью алгоритмов) извлечения данных и скоростью (сложностью алгоритмов) хранения и модификации данных.

anonymous ()
Ответ на: комментарий от anonymous

В mongodb нет ни триггеров ни ссылочной целостности ни транзакций ни проверки вводимых данных, ни проверки на соответствие структуре вводимых данных. ID объектов могут слететь внезапно.
Какая к черту в этой СУБД может быть консистентность данных!

anonymous ()
Ответ на: комментарий от anonymous

>Там все равно только банковская карта, да пропуск.

Круто! Терять нечего, за то — сколько пафоса! Ведь я прав? Тебя ведь за утерю пропуска не будут в первый отдел тягать все две недели до выдачи «волчьего билета»?

Вы всегда так на слово «ориентация» реагируете?

Нет, что Вы? Только в контексте идиотских вопросов!

А цвета

О, да Вы профи!

anonymous ()
Ответ на: комментарий от anonymous

> Тебя ведь за утерю пропуска не будут в первый отдел тягать все две недели до выдачи «волчьего билета» Конечно не будут. Сотрут ID пропуска в базе и всё.

anonymous ()
Ответ на: комментарий от anonymous

>Вы мне пример конткретной проблемы обрисуйте в связи с этим.

Да какие проблемы? Ну, подумаешь, данные неконсистентны, говно какое! Зато у нас настоящая «взрослая» ынтырпраес РСУБД с транзакциями, а не пионерский носкуль!

anonymous ()
Ответ на: комментарий от anonymous

>Конечно не будут. Сотрут ID пропуска в базе и всё.

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

anonymous ()
Ответ на: комментарий от anonymous

А вы википедию-то почитайте почитайте. В этом пионерском носкуле (mongodb) проблема консистентности стоит горааздо острее.

Примера значит не будет. Обосновать не можете.

anonymous ()
Ответ на: комментарий от anonymous

>выдержка из википедии:

Ну че, круто! А ты это к чему?

anonymous ()
Ответ на: комментарий от anonymous

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

Да не, чтоб чужих не пропускать. Если кто чужой сунется, его охранник не пропустит. Фото на мониторе не его ведь будет. Да и по звонку ID заблокировать не проблема будет.

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.