mongodb

149 views
Skip to first unread message

ufm

unread,
Jan 15, 2013, 2:11:57 PM1/15/13
to erlang-...@googlegroups.com
Hi!

А кто каким коннектором пользуется? А то что-то "официальный" уже приходится допиливать.

WBR,
    Fyodor.

Serge Matveenko

unread,
Jan 16, 2013, 3:49:38 AM1/16/13
to erlang-...@googlegroups.com
2013/1/15 ufm <ufm...@gmail.com>:

> А кто каким коннектором пользуется? А то что-то "официальный" уже приходится
> допиливать.

А что не так с официальным? Что допиливаете? Может быть это будет
полезно сообществу и вы предложите свои патчи в "апстрим"?

--
Serge Matveenko
mailto: se...@matveenko.ru
github: http://lnkfy.com/1
linkedin: http://lnkfy.com/S

Max Lapshin

unread,
Jan 16, 2013, 3:56:08 AM1/16/13
to erlang-...@googlegroups.com
у меня вот этот клон работает: https://github.com/master/emongo


2013/1/16 Serge Matveenko <se...@matveenko.ru>

--
--
Страница рассылки: http://groups.google.com/group/erlang-russian
Новости: http://erlanger.ru
Чат: xmpp://erl...@conference.jabber.ru
Чат для оффтопа: xmpp://erlang...@conference.jabber.ru
Правила, действующие в чате и рассылке: http://erlanger.ru/ru/erlang-at-conference-jabber-ru

Написать письмо: erlang-...@googlegroups.com
Отписаться: erlang-russia...@googlegroups.com



Alexander Alexeev

unread,
Jan 16, 2013, 4:00:40 AM1/16/13
to erlang-...@googlegroups.com
{mongodb, ".*", {git, "https://github.com/mongodb/mongodb-erlang.git",
"master"}},

О©╫О©╫О©╫ О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫. О©╫ О©╫О©╫О©╫ О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫? О©╫О©╫О©╫О©╫ О©╫О©╫О©╫-О©╫О©╫
О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫, О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫?

On 01/15/2013 11:11 PM, ufm wrote:
> Hi!
>
> О©╫ О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫? О©╫ О©╫О©╫ О©╫О©╫О©╫-О©╫О©╫ "О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫" О©╫О©╫О©╫
> О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫.
>
> WBR,
> Fyodor.
> --
> --
> О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫: http://groups.google.com/group/erlang-russian
> О©╫О©╫О©╫О©╫О©╫О©╫О©╫: http://erlanger.ru
> О©╫О©╫О©╫: xmpp://erl...@conference.jabber.ru
> О©╫О©╫О©╫ О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫: xmpp://erlang...@conference.jabber.ru
> О©╫О©╫О©╫О©╫О©╫О©╫О©╫, О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫ О©╫О©╫О©╫О©╫ О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫:
> http://erlanger.ru/ru/erlang-at-conference-jabber-ru
>
> О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫: erlang-...@googlegroups.com
> О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫: erlang-russia...@googlegroups.com
>
>


--
Best regards,
Alexander Alexeev
http://eax.me/

ufm

unread,
Jan 16, 2013, 7:15:23 AM1/16/13
to

При safe соединении update возвращает ok даже если документа, который мы апдейтим - нет. Хотя mongodb возвращает и "упех/неуспех" и количество реально оновлённых документов.

среда, 16 января 2013 г., 10:56:08 UTC+2 пользователь Max Lapshin написал:

Serge Matveenko

unread,
Jan 16, 2013, 7:20:22 AM1/16/13
to erlang-...@googlegroups.com
2013/1/16 ufm <ufm...@gmail.com>:

> При safe соединении update возвращает ok даже если документа, который мы
> апдейтим - нет. Хотя mongodb возвращает и "упех/неуспех" и количество
> реально оновлённых документов.

Ну, safe - это на самом деле, означает "смотри getLastError".
Его умеет смотреть do/5 http://api.mongodb.org/erlang/mongodb/mongo.html#do-5
Вы им пользуетесь?

ufm

unread,
Jan 16, 2013, 7:39:46 AM1/16/13
to erlang-...@googlegroups.com, s...@matveenko.ru
write(Request) ->
      Context = erlang:get(mongo_action_context),
    case Context#context.write_mode of
             unsafe ->
                      write(Context#context.connection, Context#context.database, Request);
          SafeMode ->
                    Params = case SafeMode of safe -> {}; {safe, Param} -> Param end,
                      Ack = write(Context#context.connection, Context#context.database, Request, Params),
                    case bson:lookup(err, Ack, undefined) of
                               undefined -> ok;
                               String ->
                                      case bson:at(code, Ack) of
                                             10058 -> erlang:exit(not_master);
                                              Code -> erlang:exit({write_failure, Code, String})
                                     end
                    end
    end.


Так вот, в Ack возвращается еще 'updatedExisting': bool и n: int
Как видно ни то ни другое не обрабатывается.
При этом попытка отапдейтить несуществующий документ _не_является_ ошибкой. Это фича: https://jira.mongodb.org/browse/JAVA-543
Так понятнее?

среда, 16 января 2013 г., 14:20:22 UTC+2 пользователь Serge Matveenko написал:

Max Lapshin

unread,
Jan 16, 2013, 7:48:51 AM1/16/13
to erlang-...@googlegroups.com, Serge Matveenko
Ну парни, монгодб сама по себе имеет не то что бы очень логичное и консистентное API

https://jira.mongodb.org/browse/SERVER-7601

ufm

unread,
Jan 21, 2013, 6:02:22 AM1/21/13
to erlang-...@googlegroups.com
Hi!

Прикольно. Этой штукой можно немножко поломать базу. :)
emongo:insert(pool1, "test", [{oid, {oid, "test"}}]).
emongo
:find_all(pool1, "test", []).
** exception exit: {emongo_unknown_type,7,<<"Nt">>}
     
in function  emongo_bson:decode_value/2 (src/emongo_bson.erl, line 245)
     
in call from emongo_bson:decode_document/2 (src/emongo_bson.erl, line 174)
     
in call from emongo_bson:decode_next/1 (src/emongo_bson.erl, line 167)
     
in call from emongo_bson:decode/2 (src/emongo_bson.erl, line 161)
     
in call from emongo_server:recv/4 (src/emongo_server.erl, line 60)
     
in call from emongo:'-fold_all_seq/5-fun-1-'/8 (src/emongo.erl, line 172)
     
in call from emongo:'-find_all_seq/3-fun-1-'/4 (src/emongo.erl, line 156)
     
in call from emongo:sequence/4 (src/emongo.erl, line 99)


Причем сама Mongo согласна - поломали таки базу:
       "valid" : false,
       
"errors" : [
               
"invalid bson object detected (see logs for more info)"
       
],
       
"advice" : "ns corrupt, requires repair",



Т.е. меня прям даже прикалывать начинает - mongodb что, вобще не глядя в базу bson кладёт? Без какой либо валидации?



среда, 16 января 2013 г., 10:56:08 UTC+2 пользователь Max Lapshin написал:
у меня вот этот клон работает: https://github.com/master/emongo


Max Lapshin

unread,
Jan 21, 2013, 6:16:36 AM1/21/13
to erlang-...@googlegroups.com
Видимо да, а зачем валидация, когда все клиенты написаны без единой баги?


2013/1/21 ufm <ufm...@gmail.com>

Paul Peregud

unread,
Jan 21, 2013, 8:32:04 AM1/21/13
to erlang-...@googlegroups.com
Осторожно, Макс: https://en.wikipedia.org/wiki/Poe%27s_law

:)


2013/1/21 Max Lapshin <max.l...@gmail.com>



--
Best regards,
Paul Peregud
+48602112091

Max Lapshin

unread,
Jan 21, 2013, 8:40:40 AM1/21/13
to erlang-...@googlegroups.com
Можно предположить, что авторы монги решили просто класть bson без проверки по следующим причинам:

1) в современных NoSQL данных валидация пользователей не нужна, потому что он ровно один, это приложение и никаких авторизаций уже нет
2) положили bson, отдали bson, его только индексируем, поэтому с точки зрения хранения это просто блоб
3) нефига пользоваться сторонними клиентами

других идей у меня нет

ufm

unread,
Jan 21, 2013, 9:02:39 AM1/21/13
to erlang-...@googlegroups.com
Да ладно, людей без чувства юмора в программирование пускать нельзя. Не выживут.

понедельник, 21 января 2013 г., 15:32:04 UTC+2 пользователь Павел Перегуд написал:

Дмитрий Омелечко

unread,
Jan 21, 2013, 9:22:14 AM1/21/13
to erlang-...@googlegroups.com
баянистый мульт почти по теме топика :)


21 января 2013 г., 16:02 пользователь ufm <ufm...@gmail.com> написал:
Reply all
Reply to author
Forward
0 new messages