Победители Второго Соревнования по Программированию CUBRID it!

    Итак Второе Соревнование по Программированию CUBRID it! подошло к концу — время опустить занавес и объявить победителей.

    Но перед этим предлагаю кратко подвести итоги соревнования.

    Соревнование началось 1го июня, и у участников было 3 недели, чтобы:
    • найти самое оптимизированные решение для SQL задачи на PHP или Java и отправить их нам;
    • распространять информацию о соревнованиие на Твиттере, блогах и других сайтах.

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

    «Ну, и как прошло!?» — Вы спросите. После 3х недель, мы получили более 40 решений от более чем 350 участников с разных стран мира. И что очень радует, решения были очень хорошего качества!

    Поэтому хочу сказать всем участиникам Большое спасибо за Ваше усердие и внимание к CUBRID!

    Каким образом отбирали победителей?


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

    Как делают обычно проверку такого количества решений? Комиссия обычно запускает серию тестов и откидывает всех, чьи решения не прошли тесты. Но мы пошли по другому пути. Мы решили, что даже если решение выдает не совсем корректные выходные данные, мы должны оценить качество самого решения, подход, используемые алгоритмы, а также качество документации. За каждое из этих критериев полагалось определенное количество баллов. В результате у каждого участника было некоторое количество баллов.

    Вот именно оценка всего этого затянуло дату оглашения результатов.

    В результате получился список порядка 30 участников с достаточно высокими балами достойных внимания. Поэтому мы решили увеличить колчичество призов от 10 до 18.

    Из полученного списка всех участиников, отправивших свое решение, мы выбрали 18 с наивысшим количеством баллов.

    Перед тем как объявить этот список, хочу поделиться с некоторыми фактами соревнования и задать пару вопросов.
    • Итак первое место взял участник, решивший задачу, используя возможности только PHP. CUBRID использовался только для получения входных и сохранения выходных данных. Вся нагрузка была сконцертрирована на клиентском приложении. За это он получил наивысшее количество баллов — 92 из 100.
    • Были и те, которые решили задачу, воспользовавшись вычислительными возможностями инфраструктуры Google :). Ух, ты!!!
    • Один из победителей забыл указать свое пользовательское имя :). Не волнуйтесь! Мы в итоге узнали, кто это.
    • Вот это интересно! Решений на Java было в 3 раза больше, чем на PHP. Не ожидали!
    • Вопрос ко всем: что делать, если участник отправляет решение, которое, ну, вот замечательное, работает очень шустро, за исключением того, что выходные данные выводит не в требуемом формате? Что посоветуете нам делать в следующий раз?
    • Вопрос к участникам: Вы удостоверялись, что Ваша программа проходить только по тем таблицам, доступ к которым имеет пользователь public? (Это было требованием.)
    • Также Вы тестировали, чтобы Ваше решение работало как с CUBRID 8.3.1, так и новым 8.4.0?
    • Один из участников решил задачу, используя CONNECT BY! Это круто! (Одно из важных преимуществ CUBRID для обработки иерархических запросов, чего нет в MySQL. Кстати, в Oracle тоже есть! Очень удобно для реализации иерархических компонентов, как, например, комментарии.)
    • Один из пользователей решил пожертвовать производительностью и выдать огромное количество выходных данных (в конзоль). К сожалению, штрафные баллы потянули вниз.
    • Что радует, были участники, решившие задачу как на Java, так и на PHP!
    • 95% решений были получены в архивах .zip, 2% — .rar, 2% — незаархивированными, 1% — .gz, .tar и т.д.

    Активные пользователи соц. сетей


    За активное участие в распространении информации об этом соревновании мы наградили 8х пользователей Твиттера. Напомню, что необходимо было просто напросто твитить о соревновани, о CUBRID, либо делать ретвит наших твитов @CUBRID и постов в Facebook.
    Участники Призы
    pragmaticandy Apple iPod
    horiajurcut Подарочный сертификат Amazon на $100
    hnfirehose Подарочный сертификат Amazon на $100
    kumarshantanu Подарочный сертификат Amazon на $50
    neposas Подарочный сертификат Amazon на $50
    alexbrie Подарочный сертификат Amazon на $50
    oanabarbu10 Подарочный сертификат Amazon на $50
    chaeya Подарочный сертификат Amazon на $50

    Победители соревнования CUBRID it!


    Список главных победителей этого соревнования по программированию составили следующие участники. Поздравляем!

    Хочу также выделить трех участников: mubinov, Ekstazi и halyavin, которые являются также и Хабра пользователями. Вы молодцы!

    Участники Призы
    mubinov iPad 2!!!
    rafaljaw Kindle e-book Reader
    iverbitskiy Kindle e-book Reader
    k.volgin Фотоаппарат Nikon
    italia-fan Фотоаппарат Nikon
    Alin.Nedelcu Подарочный сертификат Amazon на $100
    mcyurdal Подарочный сертификат Amazon на $100
    artemkv Подарочный сертификат Amazon на $100
    Mihai Cazacu Подарочный сертификат Amazon на $100
    eljiudia Подарочный сертификат Amazon на $100
    Ekstazi Подарочный сертификат Amazon на $50
    caoy Подарочный сертификат Amazon на $50
    haji_armitage Подарочный сертификат Amazon на $50
    newpcraft Подарочный сертификат Amazon на $50
    a.grison Подарочный сертификат Amazon на $50
    halyavin Подарочный сертификат Amazon на $50
    hnguyendng Подарочный сертификат Amazon на $50
    oleg.britva Подарочный сертификат Amazon на $50

    Что дальше?


    А дальше будет еще одно соревнование! Скоро я напишу об этом, но дам намёк — это будет касаться уже приложений. Если у Вас есть уже приложение, над которым Вы работаете, попробуйте потестировать с СУБД CUBRID. Может оно будет работать с CUBRID без больших, а может и никаких, изменений.

    Ваши отзывы


    Во время всего соревнования и после мы получали разного рода отзывы от участников. Некоторые прислали нам свои довольно интересные идеи по поводы следующего соревнования. Мы даже решили провести один из них в этом году. Так что знайте, что мы всегда слушаем и очень ценим Ваши отзывы.

    Ниже приведу вырезки из пожеланий нескольких участников.
    • "… спасибо за это соревнование и за такую возможность..." (Claudiu Nita)
    • «Спасибо за это соревнование! В следующий раз я хотел бы увидеть задачи, где будет больше SQL. Оптимизация SQL запросов — самое интересное в таких соревнованиях.» (mubinov)
    • «Версия CUBRID для Mac OS X — было бы круто, даже если Мак не часто используется для веб серверов.» (Alexandre Grison)
    • «В целом я приятно удивлен, насколько быстр CUBRID.» (Mihai)
    • «Интересна была бы идея перемещения базы данных в другой формат или ее клонирование куда-либо.» (Claudiu Nita)
    • «Пожалуйста, сделайте так, чтобы было возможно использовать переменные в операторах FROM в Подготовленных запросах.» (artemkv)
    • «Замечательное соревнование. Мне очень понравилось. Спасибо Вам!» (MC)
    • "… Хотел бы поучаствовать в соревновании, где можно было бы использовать CUBRID в Веб приложениях реального времени с высокой нагрузкой." (Alexandre Grison)

    А у Вас, Хабра пользователи, есть комментарии по этому поводу?
    CUBRID
    10.58
    Company
    Share post

    Comments 24

      0
      CONNECT BY рулит :)
      помню как мучился с хранением деревьев и возможностью быстрого построения.
        +1
        Да, надо тратить столько времени, чтобы построить такое дерево, следить за целостностью при каждом вводе и, таким образом, жертвовать производительностью. В CUBRID и Oracle это займет пару минут написать такой запрос и еще не надо жертвовать производительность. Очень удобно.
          0
          Еще был вариант с views, union all и group by. :) Но я его не отсылал.
          0
          Я так и не проникся CONNECT BY, видимо неправильно готовил…
            0
            Имеешь ввиду, как решить ту задачу с CONNECT BY или, как им пользоваться?
              0
              Да, не получилось решить с CONNECT BY
        +1
        Ну, по поводу формату я им неделю вдалбливал что слишком много багов если не ввести определенный формат. И в итоге за это же и занизили баллы. Что хотелось бы в дальнейшем:
        1) Чтобы более внимательны были к вопросам, каждый вопрос внимательно изучали и понимали что имеется в виду. Не поверишь, но 10 раз спрашивал про формат, а меня так и не поняли в конце.
        2) Чтобы в статистике результатов были ссылки на решения призеров, а так же число баллов кто сколько набрал.
        3) Формат выходного результата. Если привести все к строке, то правила перевода должны быть либо как в cubrid manager либо как в csql.
        4) Проверять оф. форум не реже 3-х раз в день. Часто задаешь вопрос и ждешь аж сутки пока ответят. а без ответа дальше не сдвинешься.
          0
          А так — отличная возможность для всех узнать свои силы. А когда опубликуют решения можно будет многому научиться.
          0
          Вопрос к kadishmal, будут ли опубликованы решения? интересно, что же такое придумали другие участники.
          Согласен с Ekstazi, что были определенные трудности с пониманием того, в каком формате обрабатывать данные. Я решил использовать просто те значения, которые возвращали стандартные драйверы после обычного TO_CHAR() и видимо оказался прав.
          Вообще отличный конкурс, хорошая разминка мозгов. Задача была больше алгоритмической, чем на знание SQL и CUBRID.
            +1
            Я изначально пошел тем же путем, но, когда столкнулся с 0.0e0 был расстроен:
            select to_char(0.0e0);
            -> 0

            Можешь проверить. А сохранять в БД 0 как-то неправильно. Причем большая часть решений призеров по идее подвержена этой же проблеме. Ведь столбец типа float/real/double, и в нем хранится 0.0 (не 0). 0.0 — нечисловой. 0 — числовой.

            В своем решении я этот момент учел(и многие другие) что совсем не понравилось проверяющим по всей видимости.

            P.S.: Когда сможешь решение скинуть? Мне очень интересно как ты статистику подсчитывал.
              0
              скинул на мыло
                0
                О! Спасибо огромное.
              +1
              Может быть, мы опубликуем самые интересные, еще не решили. Как будет известно, дам знать в Твиттере. Кстати, Алмаз, ты же сам можешь написать отдельный пост и объяснить, каким именно образом ты решил задачу.
                0
                Скорее всего так и сделаю.
                  0
                  О, буду ждать.
              0
              Я тоже хабрапользователь — можете выделить в табличке. Вообще у меня БД CUBRID висла просто постоянно. Не знаю в чем дело, но желания ей воспользоваться у меня больше нет.
                0
                Выделил Вас тоже. Что касается «постоянно висла», было бы интересно узнать какая версия БД, ОС, и что Вы пытались сделать. Если есть конкретные вопросы, пожалуйста, задавайте. Буду рад решить все вопросы.
                  0
                  Версия 8.3.1, ОС Windows 7. Я пытался сделать кучу инсертов по одной штуке (если делать скопом, вообще всегда виснет). Иногда они отрабатывают, но чаще БД на очередном инсерте виснет. Если место заканчивается, БД виснет всегда, вместо того, чтобы выдать исключение в программу.
                    0
                    1. Если посмотрите на www.cubrid.org/windows_downloads, Windows 7 официально не поддерживается. На нем можно тестить, но просто на нем сервера не пишут. Попробуйте Винду либо ниже, либо на Линуксе. Проблем, уверен, не будет.
                    2. Еще лучше, попробуйте новый CUBRID 8.4.0. Вышел уже GA релиз. Он по производительности обходит предыдущую версию более чем в два раза. Были реализованы очень много оптимизаций. Можете посмотреть в www.cubrid.org/cubrid_840_key_features.
                    3. Было бы хорошо, если бы Вы могли предоставить пример запроса, какой интерфейс использовали, сколько запросов вбивали (отдельно и скопом). Мы можем обсудить как повторить этот тест и выяснить все.
                      0
                      Привет, давай обменяемся решениями? Мое в виде статьи есть. Можешь мне скинуть свое на почту?

              Only users with full accounts can post comments. Log in, please.