• Какой database command соответствует mongo shell метод find()?

    @alxalx
    Тоже задался этим же вопросом, могу предположить только, что find() реализован через aggregation pipeline, а значит ему соответствует команда aggregate и $match stage.
    Ответ написан
    1 комментарий
  • Dual-primary DRBD: почему именно ocfs2/gfs/другая кластерная ФС?

    lesovsky
    @lesovsky
    System engineer and PostgreSQL DBA
    потому что нужен распределенный менеджер блокировок (DLM) для контроля за тем кто какие файлы читает/изменяет. так как кластерные фс используют этот механизм у них не возникает проблем с которой вы столкнулись при использовании ext3... но и в случае ocfs/gfs, и на старуху бывает проруха ;)

    p.s. не люблю ни drbd, ни кластерные системы )))
    p.p.s. вообще во многих распределенных системах используется такой механизм в том или ином виде, name node в hadoop, gtm в postgres-xc, metadata сервера в ceph и т.д.
    Ответ написан
    Комментировать
  • Dual-primary DRBD: почему именно ocfs2/gfs/другая кластерная ФС?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Почему так происходит, ведь DRBD работает с блоками и ничего не знает о развернутой поверх ФС

    Потому что не-кластерная ФС не ожидает изменения блоков на носителе "в обход" себя.
    Кластерные ФС либо организуют доступ данным на носителе таким образом, чтобы узнавать об изменениях ФС выполненных другими нодами кластера, либо синхронизируют ноды по отдельному каналу.
    Ответ написан
    Комментировать
  • Когда в PHP использовать интерфейсы, а когда абстрактные классы?

    try4tune
    @try4tune
    С точки зрения архитектуры:

    Интерфейс описывает свойства. Обратите внимание на классические названия интерфейсов: Throwable, Countable, Comparable, Iterable и т.д. Возьмем, к примеру, интерфейс Rollable (катящийся), и Foldable (складывающийся).

    Абстрактный класс же описывает сущность. Например, стол: Table_Abstract. Стол может быть деревянным, тогда будет Table_Wood extends Table_Abstract. Также стол может быть хирургическим: Table_Surgical extends Table_Abstract. В таком случае Table_Abstract объединяет общий свойства всех столов (скажем, площадь поверхности, наличие ножек и т.п.). А конкретный класс описывает сущность определенного типа столов.

    Связью же интерфейсов и классов Вы описываете свойства. Например, стол можно катить: Table_Abstract implements Rollable. Деревянный стол, например, можно сложить: Table_Wood implements Foldable.
    Ответ написан
    5 комментариев