node.js и SQLite 3 — теперь друзья

    node.js — один из лучших каркасов для создания серверов на основе событийных машин, основанный на движке JavaScript V8, теперь получил по-настоящему асинхронную, неблокирующую привязку к базам данным SQLite 3.

    Домашняя страница проекта.

    Большое спасибо Orlando Vazquez и Ryan Dahl за выполненную работу.

    Похожие публикации

    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 28

      –2
      Оракл бы прикрутили…
      Вот было бы в масть.
        –2
        вот уж точно:)
          +1
          Лично мне для полного счастья не хватает только асинхронных С++ биндингов к mySQL. Есть написанные на JS но это не самое быстрое решение…
            0
            Могу сказать, что заниматься асинхронностью в MySQL начну уже на будущей неделе :) Как только допишу всё связанное с fetchResult.
            Конкретный список неблокирующих функций можно обсудить в вики на гитхабе.
              0
              Собственно говоря нативные функции работают в 6-10 раз быстрее, чем то что написано на JS, сегодня тестил.

              Довольно интересно получается, в PHP было нормальным долгое формирование ответа на основе шаблонов, тогда как скомпилированные шаблоны в NodeJS сильно уменьшают процентную долю этих операций.
                0
                ещё бы… в пхп это дело парсилось интерпритатором при каждом обращении, а в некоторых шаблонизаторах (таких как xtemplate) ещё и регулярками при каждом обращении…

                А node выплювывает из оперативки, с молниеносной скоростью шаблон со всеми данными, а кеш можно выносить на аболютно новый уровень… мне очень нравится такой подход =)
                0
                В рассылке node.js предлагали использовать вместо limysql библиотеку libdrizzle, в которой реализована родная асинхронность.

                drizzle.org/ — форк mysql, но я не уверен, что drizzle ещё совместим по протоколу с mysql.
                  0
                  Судя по официальным материалам, libdrizzle поддерживает и будет поддерживать сервера MySQL, начиная с версии сервера 4.1.

                  www.mysqlconf.com/mysql2009/public/schedule/detail/6658
                    0
                    Ryan в последний раз говорил про библиотеку mysac. Кроме того он вроде бы сам что-то писал, но не выкладывал кода. Планируется включить этот драйвер в поставку node, так что делать двойную работу не очень хочется. Я спросил на днях в рассылке, пока что реакции не было. Так что пока разбираюсь с libeio.
              –1
              >неблокирующую
              И даже на запись? Ведь в sqlite3, насколько мне известно, невозможна одновременная запись.
                –1
                Почитал ссылку. Очевидно имеется ввиду неблокирование работы трэдов приложения при обращении к БД.
                  0
                  Неблокируемость здесь описана с точки зрения машины событий.

                  Цикл событий получает контроль обратно сразу же, и когда-нибудь позже произойдёт событие «Запись произведена успешно».
                    0
                    Если посмотреть readme, используется SQLite в синхронном режиме в отдельном потоке.

                    Асинхронный родной режим SQLite не используется в связи с отсутствием необходимых коллбэков, впрочем, не вижу смысла пересказывать readme :)
                  0
                  Это только для v8?
                    0
                    Код привязан к V8, так как используется прослойка на C++.
                      0
                      Прослойку я видел. Осталось понять, для чего это надо
                        0
                        Вариантов много.

                        Например, у нас используются приложения стека Ruby/EventMachine/SQLLite.

                        Можно будет перенести их на платформу node.js, избавившись от проблем EventMachine.
                    0
                    да да. сюда бы ещё native client присобачить. вот будет песня.
                      0
                      1. Во-первых, этот клиент использует SQL Lite C API. Не знаю, что можно найти роднее :)
                      2. Во-вторых, Javascript в V8 компилируется в родной машкод. что гарантирует очень хорошую производительность.

                      Так что вашего комментария я не понял :)
                        0
                        NaCl гарантирует ещё более хорошую производительность.
                          0
                          Вы имеете ввиду это — en.wikipedia.org/wiki/Google_Native_Client?
                          node.js никаким образом не пересекается с этой технологией.

                          node.js написан на C++, и компилируется в родной код, что обеспечивает скорость выше, чем скорость NaCl.

                          И в качестве языка для написания приложений используется Javascript, который понятен для любого Web-разработчика.
                            0
                            NaCl позволить запускать как гарантированно нэйтивный код, так и интерпретаторы для всех остальных языков портированных в него, например ruby и php.
                              0
                              Но он же по определению медленнее родного кода.

                              Почитайте Wiki, там внедрена программная изоляция кода, что обеспечивает скорость «лишь немного ниже» родной.

                              NaCl вообще предназначен для Web-браузеров, а не для серверов.

                              На серверах мы запускаем доверенный код, и лишние затраты на изоляцию излишни.
                                0
                                V8 тоже как-то не для серверов изначально разрабатывался.
                                Затраты на изоляцию там ничтожно меньше потерь на обеспечение динамической природы js.
                                  0
                                  Писать Web-приложения на C++ вряд ли будут многие.

                                  Скорее всего на динамических языках, наподобие Ruby или Javascript.

                                  Javascript/NaCl вряд ли будет по тем же соображениям быстрее Javascript/V8.

                                  Но Вы правы в том, что V8 изначально создавался не для серверов.
                        0
                        Вероятно, Вы имели ввиду создание клиента SQL Lite 3 под платформу NaCl.

                        Думаю, это не нужно. Работа с базами данных более правильно вынести на уровень склеивающего кода, то есть Javascript, тем более, что HTML5 Storage и Google Gears уже давно определёны.
                        +3
                        > SQL Lite
                        это что за самодеятельность? =_="
                          0
                          Что-то взгляд мозолило, а что, — понять не мог. Спасибо :)

                        Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                        Самое читаемое