INT 21h

Домашняя страница самого страшного прерывания

MongoDB и почему SQL не скоро умрет

№ 2535 В разделе "Администрирование" от February 9th, 2011,

Решил я тут побаловаться новыми плюшками и все-таки попробовать эту MongoDB. Давайте возмем простой пример, где реализуем маленький чат падонкаф.

Код оказался не сложным (и не более простым, чем с SQL):

<h1>Скажи миру привет!</h1>
<form action="" method="post">
    <input type="text" name="hello" style="width: 250px;"/> 
    <input type="submit" value="Сказать!"/>
</form>

<?php
//Открыли соединение
$m = new Mongo();
//Выбрали базу. Специально создавать ее не надо - сама создастся
$db = $m->helloworld;
//Выбрали таблицу. С созданием таблиц аналогично БД.
$hellos = $db->hellos;
 
if (!empty($_POST))
    if ($_POST['hello'] <> '')
        //Если есть данные в $_POST, то добавим их в таблицу hellos
        $hellos->insert(array('utime' => time(), 'text' => $_POST['hello']));
?>

<ul><?php
//Теперь выбираем все записи. Отсортируем по времени в обратном
//порядке и ограничим список 5 записями. Ничего сложного.
$hell = $hellos->find()->sort(array('utime' => -1))->limit(5);
 
foreach ($hell as $hello) {
    echo "<li>" . strip_tags($hello['text'], '') . " <span class='dt'>" . 
    date("d-m-Y H:i:s", $hello['utime']) . "</span></li>";
}
 
//Пытаемся удалить лишние записи
$to_delete = $hellos->find()->sort(array('utime' => -1))->skip(5);
if ($to_delete->count() > 0) $hellos->remove($to_delete);
 
?></ul>

Кстати, $to_delete->count() так и не отдало правильное колво элементов. MongoDB не смогло сделать skip и удалились все записи из таблицы.

MongoDB это хорошо, это удобно. Но… точно ничем не лучше и не удобней SQL.

SQL в сочетании с современными фреймворками становится гораздо более крутым инструментом, чем MongoDB. Тот же функционал в SQL реализуется так:

SELECT utime, text FROM hellos ORDER utime DESC LIMIT 5;

Ну а удалить записи можно так:

DELETE FROM hellos WHERE utime < (SELECT utime FROM hellos ORDER BY utime DESC LIMIT 1,5);

4 комментариев »

4 комментариев »

Comment by test1 | November 1, 2011 @ 15:03:53

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

Comment by 21h | November 1, 2011 @ 17:54:21

комментатор, сам ты нуб. замути мне запрос к базе с join и парой вложенных запросов. неудобно, да? учи sql, бездарь.

Comment by test2 | February 9, 2012 @ 14:35:16

Автор, ты нуб.
Нахуя в монго джойны?

Comment by 21h | February 9, 2012 @ 16:19:08

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

Форма отправки комментария

*

Разрешенные HTML-теги:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

RSS RSS Feed только для этого поста |


Комментарии
  • 21h: нене ) без меня )
  • Серегй: Не совсем грабить)) если грабить можно и без рации, есть более благие цели, вы просто ответьте на мой вопрос,...
  • 21h: магазин грабить собрались? ) не, тут я не помощник ;)
  • Серегй: А что бы мне поймать чужую волну, что мне для этого нужно сделать? Допустим я купил данную рацию себе, мне...
  • 21h: слушать никто не запрещает. нет закона, который запрещает слушать. те, кто говорит иначе нагло врут. а если...
  • Серегй: Я хотел узнать могу ли я просто прийти с данной рацией baofeng uv-5r, допустим на объект, ну или вообще...
  • 21h: У меня есть только эти 2. По другим ничего не знаю. В интернете можно скачать инструкцию к вашей модели рации,...
  • Серегй: Добрый день! Хотелось бы задать пару вопросов по поводу раций, у Вас есть куда можно обратиться ТАТ.
  • 21h: потому, что нейросетью проще. яркость светофора меняется в зависимости от времени суток от маленькой красной...
  • Михаил: А зачем нейросеть? Почему цвет светофора определить без нейросетей?