saas, стенфорд

20 февраля, 2012 | Нет комментариев

Движемся, потихоньку осваиваю.

CodeFest, новосиб, 31 марта — 1 апреля

20 февраля, 2012 | Нет комментариев

Скоро объявят официальную программу и начнётся регистрация.

Предварительная программа: http://codefest.ru/program/2012-03/

Цена будет > 3000 рублей.

Ну что, кто со мной?

Хайтех

18 февраля, 2012 | 2 Комментариев Откомментить в дискуссии

Танай, горные лыжи/сноуборд

17 февраля, 2012 | 2 Комментариев Откомментить в дискуссии

Т.к. в наш технопарк приезжал Путин, у меня случился отгул. Будние дни отлично подходят для выезда в место, где в выходные не протолкнуться. Горнолыжные склоны относятся к таким местам.

Сегодня был Танай, на границе кемеровской и новосибирских областей. Невысокая гладкая горка, кресельные подъёмники и 5-6 склонов.
Горка отратрачена, льда нет, но местами есть затвердевший снег, без льда. В целом скучная горка, быстрые гладкие спуски. После шерегеша такие горки не вставляют.

Фотки:
Идём с парковки. Парковка бесплатная.

Миша

Выкат

Я

Лена и Миша

MongoDB, хранение файлов в базе

13 февраля, 2012 | 5 Комментариев Откомментить в дискуссии

В интернетах бытует мнение, что хранить файлы в БД — школоло. Разрушаем стереотип с Mongo GridFS.

Введение:
MongoDB предоставляет возможность хранить файлы любого размера в Mongo GridFS
Для драйвера PHP — это обычная коллекция, в которой есть поле для хранения бинарных данных.
Бинарные данные в свою очередь разбиваются на чунки(небольшие куски).
Бинарные данные можно извлечь как целиком, так и почунково(это экономит память).

Плюсы хранения данных в БД MongoDB:
MongoDB может хранить миллионы файлов в БД, хранение такого объёма данных в файловой системе может вызвать проблемы(начиная с IO проблем, заканчивая проблемами доступа к данным из разных серверов).
MongoDB реплицирует данные на все сервера, что упрощает доступ к данным на отдельно взятом сервере.
Нет проблем с бекапами и целостностью данных на разных серверах. надёжность обеспечивается MongoDB.
К загруженному файлу можно прикрепить метаданные (описание, комментарии, лайки, и.т.д.)
Т.к. файлы хранятся в чунках — можно работать с любой частью файла.

Минусы:
Быстродействие ниже, чем nginx + файловая истема. Сравним:
nginx + файловая система, получаем 6559.31 операций в секунду
apache + файловая система: получаем 2625.37 операций в секунду
nginx + модуль nginx-gridfs, получаем 1083.88 операций в секунду

Вывод: nginx + fs на высоте, но это решение не даёт масштабируемости и гибкости.
nginx + nginx-gridfs даёт приличные результаты, которые существенно возрастут, при использовании нескольких серверов MongoDB.

Благодарность, http://tokarchuk.ru за тесты.

Соседи по технопарку развлекаются

13 февраля, 2012 | 2 Комментариев Откомментить в дискуссии

Самолёт на радиоуправлении.

MongoDB, когда хранить документ вложенным в другой, а когда в отдельной коллекции

12 февраля, 2012 | 1 Комментарий. Закомментить!!!

Задача: хранить авторов к публикациям.
Делема: хранить авторов в отдельной коллекции или внутри документа публикации?

Решение #1:

{
  "_id" : ObjectId("4dd491695072aefc456c9aca"),
  "username" : "alphareplicant",
  "email" : "roybatty@androids.org",
  "fullname" : "Roy Batty",
  "joined_at" : ISODate("2011-05-19T03:41:29.703Z"),
  "address" : {
    "street" : "13 Tannhauser Gate",
    "city" : "Caprica",
    "state" : "CC",
    "zipcode" : 512
  },
}

Решение #2:

{
  _id : ObjectId("4dcd2abe5981aec801010000"),
  title : "The only perfect site is hind-site",
  content : "Loren ipsum dolor sit amet…",
  saved_at : ISODate('2011-05-16T18:42:57.949Z'),
  author_id : ObjectId("4dd491695072aefc456c9aca")
}

Так как же поступить?
Этот вопрос всегда возникает, при проектировании способа хранения данных. в nosql решениях.

Решение #1:
Плюсы: данные о авторе доступны в основном документе публикации, что экономит на количестве запросов в базу.
Минусы: Если документы существенно велики, и используется не курсор, а массив, для работы с данными. Можно допустить перерасход памяти.

решение #2:
Плюсы: лёгкие документы
Минусы: дополнительная коллекция, документы которой можно извлечь дополнительным запросом.

Правило:
Если документ коллекции содержит в себе вложенный документ, как часть его, и, вложенный документ не требуется как самостоятельный документ — его следует включить, согласно решению #1. Чаще всего это характеризуется связью 1-1 (Один к одному).
Если вложенный документ является самостоятельным и является вложенным в другие документы (например категория), его следует вынести в отдельную коллекцию. Связь между документами будет 1-∞(один ко многим) или ∞-∞(много ко многим).

ubuntu, fork-bomb, fuser

12 февраля, 2012 | Нет комментариев

Признак бага:
ubuntu 11.10, в top много процессов зомби, родитель у которых fuser.

Решение:

в /etc/cron.d/php5
заменить скрипт на:

09,39 *     * * *     root   [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -depth -mindepth 1 -maxdepth 1 -type f -cmin +$(/usr/lib/php5/maxlifetime) -delete

Подробнее: http://ubuntuforums.org/showthread.php?t=1862472&page=2

Ubuntu IAD

MongoDB,особенности работы с replica set

12 февраля, 2012 | Нет комментариев

Когда вы делаете find(), драйвер MongoDB старше версии 1.1.0+ пошлёт запросы на получение данных на один из слейвов. Причём если вы его не определили при запросе, драйвер сам его выберет.

Автоматически будет выбран слейв с лучшим пингом =)

Более подробнее здесь http://www.php.net/manual/en/mongo.queries.php

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

имхо очень хорошая штука.

MongoDB IAD

MongoDB, книги

12 февраля, 2012 | Нет комментариев
  1. PHP and MongoDB Web Development Beginner’s Guide (Rubayeet Islam)
  2. MongoDB in Action (KYLE BANKER)
  3. 50 Tips and Tricks for MongoDB Developers (Kristina Cbodorow)
  4. MongoDB: The Definitive Guide (Kristina Chodorow and Michael Dirolf)
  5. Scaling MongoDB (Kristina Chodorow)
© 2010 - 2025 Ядоблог. Ничего не защищено.
Powered by Лаборатория Яда. Написать Яду