Представлена новая открытая СУБД

    Представлена новая открытая система управления базами данных — VoltDB, ориентированная на обработку транзакций в реальном времени (OLTP). Проектирование и разработка VoltDB велась под руководством Майкла Стоунбрейкера, одного из основателей проектов Ingres и PostgreSQL.

    VoltDB опережает по производительности традиционные OLTP СУБД в односерверной конфигурации в 45 раз, поддерживает выполнение запросов на языке SQL и гарантирует транзакционную целостность данных (ACID, атомарность и изолированность транзакций).

    Суть архитектуры VoltDB в комбинации хранения всех данных в памяти с концепцией распределённой организации и разбиения БД по разделам (партицирование). Для сохранения данных на диск используется концепция снапшотов, отражающих срез данных, актуальных на момент создания снапшота. Работа с данными осуществляется через хранимые процедуры на языке Java, копии которых прикрепляются к каждому из разделов (ODBC/JDBC и прямое выполнение SQL-операторов для всей базы не поддерживается). При выполнении запроса, затрагивающего несколько разделов, в каждом из нужных разделов вызывается хранимая процедура, а затем результаты агрегируются.

    СУБД распространяется в двух вариантах: коммерческом, с обеспечением полноценной поддержки, и свободном «Community Edition». Исходные тексты доступны по лицензии GPL.

    Основные элементы архитектуры


    • Все данные постоянно держатся в оперативной памяти, что обеспечивает максимальную пропускную способность и исключает необходимость буферизации.
    • VoltDB распределяет данные и их SQL-обработчики по узлам, каждый из который привязан к своему процессорному ядру.
    • Каждый однопоточный раздел работает в автономном режиме, что исключает необходимость блокировок и фиксации операций.
    • Данные автоматически реплицируются внутри кластера, что позволяет добиться высокой доступности и исключает необходимость ведения журнала.
    • Производительность VoltDB увеличивается почти линейно при добавлении дополнительных серверов в кластер.

    Результаты измерения производительности


    • VoltDB обработала 53 тысячи транзакций в секунду на одном сервере, в то время как другие СУБД на том же оборудовании могли выполнить только 1155 транзакций. При увеличении числа серверов до 12, кластер позволил выполнить 560 тысяч транзакций в секунду.
    • Тестирование работы онлайн-игры на 12-узловом кластере продемонстрировало производительность в 1,3 миллиона транзакций в секунду.
    Поделиться публикацией

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

    Комментарии 77
      –26
      >VoltDB опережает по производительности традиционные OLTP СУБД в односерверной конфигурации в 45 раз
      >опережает
      >Java
      tell me moar.
        +10
        Я тоже немного не понял. В 45 раз быстрее за счет того, что все хранится в оперативной памяти? А что будет, если вдруг свет вырубят? Ну, и непонятно как быть с по-настоящему большими БД, которые в оперативку не влезут.

          +1
          Это вот такое, видимо, кино imdb. Сам с таким не сталкивался.
            0
            Если вырубят свет, то
            Для сохранения данных на диск используется концепция снапшотов, отражающих срез данных, актуальных на момент создания снапшота

            То есть возможно вы потеряете данные, но не больше, чем накопилось за время между снапшотами + снапшоты позволят оставшимся после отключения света данным быть целостными.

            А по-настоящему большие БД влазят в память благодаря партицированию.
            Суть архитектуры VoltDB в комбинации хранения всех данных в памяти с концепцией распределённой организации и разбиения БД по разделам (партицирование)
              0
              А по-настоящему большие БД влазят в память благодаря партицированию.
              Суть архитектуры VoltDB в комбинации хранения всех данных в памяти с концепцией распределённой организации и разбиения БД по разделам (партицирование)


              Поясни? Каким образом partitioning гаррантирует сохранность данных?
                0
                В комментарии на который я отвечал было 2 вопроса: один касался сохранности, второй размеров БД. Само по себе партицирование не гарантирует сохранность данных, а увеличивает пропускную способность.
                Тем не менее, есть механизм, позволяющий увеличить сохранность, учитывая кластерную структуру, как уже написали здесь.
            –6
            толстяк.
              +3
              троллефобия это болезнь
              +1
              что такое «moar»?
                +3
                «исчо»
                tell me moar
                аффар, пеши исчо :)
                  +1
                  интернет мем, на всяких чанах особенно популярен — lurkmore.ru/Moar
              • НЛО прилетело и опубликовало эту надпись здесь
                +3
                это все конечно хорошо и красиво, но что если у меня база в несколько террабайт, где я им столько памяти нарисую. или мне предлагается сделать кластер на 100500 серверов?
                • НЛО прилетело и опубликовало эту надпись здесь
                    +9
                    >Не понимаю я, почему в штыки воспринимаете так это всё. Какие-то поверхностные суждения без вникания в технологию.

                    Наверное потому что статья поверхностная.
                      –1
                      Причем тут шаред хостинг, у меня выделенный Oracle RAC. А теперь что мне даст ваша СУБД? У меня нет и близко памяти 4 терабайта держать в них. Даже каких то жалких 400 гигов памяти не хватит держать.
                      • НЛО прилетело и опубликовало эту надпись здесь
                      +5
                      я думаю, раз такие пироги, эта база достаточно умна, чтобы закидывать в память не все данные, если ее не хватает. проанализировать и понять, что чаще всего нужно — я думаю, разработчики это сделали.

                      это во-первых, а во-вторых — у вас много баз весом в террабайт?
                      даже у какой-нибудь популярной онлайн-игры база вряд-ли будет весить больше 20—30Гб.
                      а учитывая то, какой кластер нужен будет для обеспечения игры такого масштаба — то это сущие мелочи. 32Гб на узел — нынче таким никого не испугаешь.

                      и в третьих — в 90% (если не больше) случаев базы сайтов занимают до 100мб. ну до 200мб.
                      при этом для сайта с такой базой уже нужен какой-нить VPS, а это, как правило, минимум 512мб памяти (у Воли у самого дешевого сразу гиг, например).

                      Так что не нужно столь драматизировать и пытаться использовать вещи для того, для чего они не предназначены
                        +1
                        Там где есть многотерабайтные базы данных, распределённая обработка их особенно актуальна.

                        Когда несколько дней назад начала распространяться информация про VoltDB, сразу же пошёл смотреть, что за зверь. Слишком быстро выяснилось, что в очередной раз надежда не оправдалась.
                          +1
                          А что именно не оправдало надежд? Я тоже хочу поиграться в ближайшее время.
                        • НЛО прилетело и опубликовало эту надпись здесь
                            0
                            Базы данных только для сайтов используются?

                              0
                              базы данных делаются универсальные, для всего сразу?
                              0
                              32Гб? У меня скоро дома столько будет стоять :) Что за объем для сервера? :)
                              +2
                              А чем вы сейчас пользуетесь?
                                +1
                                Я почитал описание, ограничения на память в ноде там нет. Если у вас несколько терабайт — то 12 нод по 256Гб даст вам уже 3 терабайта. Главное, чтобы ваши таблицы можно было partitioning.
                                  0
                                  Данная БД скорее должна использоваться как оперативная, а уже срезы, аналитика и история могут перекочёвывать в более традиционные хранилища. Вы же не делаете запросы по всем своим террабайтам данных? А если делаете то у вас скорее кластер, что для Вольта, по идее, родная среда…
                                    0
                                    И кстати, судя по описанию, на одной машине поднимется несколько нод Вольта (по одной на процессорное ядро)
                                  +1
                                  >поддерживает выполнение запросов на языке SQL
                                  >Работа с данными осуществляется через хранимые процедуры на языке Java, копии которых прикрепляются к каждому из разделов (ODBC/JDBC и прямое выполнение SQL-операторов для всей базы не поддерживается)

                                  вот тут можно немного пояснений?
                                    +3
                                    VoltDB automatically partitions database tables across the available cluster nodes. Both the capacity and performance of the database can be increased by adding nodes to the cluster. VoltDB automatically redistributes the partitions to the new configuration when you reload the data.

                                    VoltDB distributes the rows across the partitions using a hash partitioning scheme. The user identifies, for each partitioned table, which column is used as input to the internal hashing function. Note that not all tables have to partitioned; you can choose to replicate smaller lookup (read-intensive) tables.

                                    Официальная дока
                                    +1
                                    Вещь в себе. Нету SQL-клиентов кроме как для erlang'а. Доки по протоколу тоже не ощущаю.
                                    • НЛО прилетело и опубликовало эту надпись здесь
                                        +6
                                        У вас есть желание писать клиент путем reverse enginering'а и потом юзать? У меня ни малейшего. Хотя бы потому что исходный код может меняться, и следить за изменениями не представляется возможным. Для решения таких проблем придумали спецификации (другими словами соглашения).
                                        • НЛО прилетело и опубликовало эту надпись здесь
                                      +5
                                      Будущее за открытым совтом. Больше баз данных, красивых и разных!
                                        +8
                                        С шахматами и поэтессами.
                                          +11
                                          С кластерами и партициями.
                                        +3
                                        Какие-то сомнительные цифры с точностью до одной транзакции.
                                        На каком сервере тестировалось? Какая структура БД? Какие запросы?
                                          +4
                                          > VoltDB обработала 53 тысячи транзакций в секунду на одном сервере, в то время как другие СУБД на том же оборудовании могли выполнить только 1155 транзакций.

                                          Интересно, а если измерять производительность, скажем, сутки.
                                          Как сильно будет тормозить механизм снапшотов?
                                            +4
                                            По первому впечатлению от документации — мощная штука. Но, не то, чтобы на любителя. В смысле — любитель с ней (IMHO) не справится.

                                            Аппаратные требования — 2 и больше ядер (от 8 для оптимальной производительности)
                                            Память — от 4 Гб

                                            Каждой таблице сопоставляются процедуры, содержащие SQL и дополнительные обсчеты этого SQL. Фактически — каждой таблице соответствует класс Java, отвечающий за все манипуляции с таблицей.

                                            Производительность достигается за счет партиционирования таблиц, отказа от постоянного журналирования и хранения транзакции в ОЗУ.
                                            Крайне специфическое применение (во всяком случае — на текущий момент)
                                            In other words, VoltDB's target audience is what have traditionally been known
                                            as Online Transaction Processing (OLTP) applications


                                            Есть шанс, что через пару-тройку версий их этой штуки может поллуиться нечто более, чем юзабельное (Может быть, уже получилось — но тут надо пробовать.)

                                              0
                                              Ну вообще-то большая часть приложений (тех же сайтов) как раз рассчитаны на OLTP.
                                                +2
                                                Судя по документации, имеются в виду высоконагруженные (в самом полном смысле слова «высоко») проекты типа on-line бронирования, продаж или аукционов. Причем — (опять же суда по моим ощущениям — возможно, когда я документацию перечитаю более внимательно, эти ощущения изменятся) не проекты целиком, но именно их транзакционная часть. То есть что-то вроде поддержки только корзины интернет-магазина из расчета 50 килопокупок в секунду.
                                                  0
                                                  Нагруженные сайты как раз в большинстве своем живут на грамотном кешировании на всех возможных уровнях.
                                                  Самая первая задача при такой оптимизации звучит так: «разгрузить базу».
                                                    0
                                                    это не везде возможно
                                                      0
                                                      Само собой. Все по мере возможности, насколько задача позволяет.
                                                0
                                                1) Иметь серьёзную базу данных с гарантией атомарности хорошо, но для enterprise нужен кластер. Что в этом случае с производительностью — не ясно.

                                                2) Само понятие транзакции означает, что по её завершении обязана быть произведена запись на жёсткий диск либо результатов, либо transaction log. Если этого не делать (или делать не каждую транзакцию), то скорость разумеется возрастает, но надёжность сильно падает — БД уже нельзя назвать транзакционной.
                                                  0
                                                  2) «Данные автоматически реплицируются внутри кластера, что позволяет добиться высокой доступности и исключает необходимость ведения журнала» — нет необходимости постоянно сбрасывать логи на диск, если упадёт одна нода, данные будут доступны на другой/других.
                                                    –2
                                                    Если упадут ВСЕ ноды и сразу? Или если нода только одна и она упадёт?
                                                      +4
                                                      VoltDB achieves durability through intra-cluster and inter-cluster replication. Data is synchronously committed to multiple execution sites within the cluster to provide durability against node failures. Transactions are asynchronously committed between clusters to provide durability against full-cluster failures (e.g., catastrophic data center events).

                                                      И правильно. Незачем утруждать себя и читать описание продукта на сайте. Идиоты вроде меня все равно ответят.
                                                        0
                                                        Ключевое слово «asynchronously». Т.е. есть ненулевая вероятность, что СУБД отрапортовала об успешной транзакциии, но на диске ее не будет.
                                                          0
                                                          Asynchronously в этом контексте означает, что писаться транзакции будут независимо друг от друга. Система все равно количество нод знать будет, все они будут писаться по простой мат. формуле — это же очевидно. Ну ей богу, ну неужели вы думаете, что они там _настолько_ дибилы?
                                                            +2
                                                            Да нет, не дибилы.

                                                            Просто надо отдавать себе отчет, что чудес — не бывает. Любое архитектурное решение — всегда компромис, выигрыш в чем-то за счет чего-то другого. Здесь, очевидно, выигрыш в производительности за счет надежности.
                                                              0
                                                              Причём тут дебилы? Теорему Брюера ещё никто не отменял.
                                                        0
                                                        Тогда получается, что эта БД на одной машине не в состоянии обеспечить ACID? точнее именно последний пункт — Durability, говорящий о том что если транзакция закоммичена, то сбой ей уже не страшен. Получается ACID начинается с 2 машин в кластере…
                                                    +7
                                                    Странное какое-то сравнение с «другими СУБД», которые выдали 1155 транзакций в секунду, все СУБД одинаково 1155??? Напомнило рекламу порошка «круче других в 100500 раз».

                                                    А так решение интересное.
                                                      –2
                                                      Доставляет. Наконец кто-то собрал все _хорошие_ идеи, разбросанные по сотням постоянно появляющихся DBMS, и сделал не просто что-то новое, а что-то новое изначально не мертво-рожденное.

                                                      Если команда не сдуется, рынок ждет передел.
                                                        +1
                                                        Если гарантируется «D» (из ACID), то данные полюбому скидываются на диск при записи. Этот момент как они оптимизировали? Что-то нечисто тут со сравнением с другими СУБД.
                                                          0
                                                          Этот момент уже обсуждается выше. Но на мой взгляд ваша фраза показательна, именно благодаря тому, что у людей получилось посмотреть на проблему немного по другому — у них получилось интересное решение.
                                                          0
                                                          Результаты TPC тестов есть?

                                                          tpc.org
                                                            +2
                                                            Она ещё в пелёнках эта VoltDB — да, новая СУБД на рынке OLTP, ей понадобятся годы чтобы убедить людей не смотреть в сторону того же MySQL Cluster. То что она обгоняет обычные СУБД которые вообще не предназначены для OLTP это ни о чём не говорит как и цифра в 53к tps, тот же nbd выдавал в тестах уже миллион транзакций в секунду на одной машине, для баз полностью в памяти нет в этом никакой фантастики. А отложенные синки на диск это фрукт в себе, я думаю через полгодика можно будет думать о VoltDB, а пока о ней нужно только читать :)
                                                              0
                                                              > VoltDB обработала 53 тысячи транзакций в секунду на одном сервере, в то время как другие СУБД на том же оборудовании могли выполнить только 1155 транзакций

                                                              Kdb меряли?
                                                                –3
                                                                > ориентированная на обработку транзакций в реальном времени (OLTP)

                                                                Вообще-то OLTP вовсе не означает «обработку транзакций в реальном времени».
                                                                  +2
                                                                  Я так понимаю, что ребята решили пожертвовать Partition-tolerance в обмен на производительность. Непонятно, что будет если одна из нод кластера решит прилечь. Во всех FAQ этот вопрос игнорируется.

                                                                  Так же интересно посмотреть как происходит JOIN для данных расположенных на разных нодах.

                                                                  И непонятно что у них с лицензией. На сайте пишут GPL v3, в исходниках встречаются GPL, MIT и BSD.
                                                                    0
                                                                    ни GPL ни MIT ни BSD не мешают выпустить конечный продут под GPL3
                                                                    0
                                                                    без ссылок на сами тесты «в 45 раз быстрее» и т.п. сложно воспринимать адекватно.
                                                                      +1
                                                                      Где бенчмарки? иначе цифры выглядят голословными
                                                                      • НЛО прилетело и опубликовало эту надпись здесь
                                                                          0
                                                                          А если смонтировать кусок оперативки в качестве диска и в него установить MySQL, то скорость тоже станет в 45 раз быстрее.
                                                                          А если поступиь как википедия, и поставить зеркала баз на десятке серверов, с одним мастер-сервером, то вот и кластер получится.
                                                                          • НЛО прилетело и опубликовало эту надпись здесь
                                                                            +2
                                                                            Если бы большинство комментаторов прочитали хотя бы статью на википедии про Стойнбрейкера, думаю было бы куда меньше подколов и сомнений.
                                                                            0
                                                                            Я так понял, что вы уже погоняли данную базу.
                                                                            Интересно сравнение с другими бесплатными базами.
                                                                            Мы сейчас используем Nexus, интересно было бы сравнить.
                                                                            Реально о производительности можно говорить только при сравнении на действующих проектах.
                                                                            Если есть инфа, то просьба поделится.
                                                                            Заявленные характеристики удивили.
                                                                              –2
                                                                              Еще одна MongoDB
                                                                                0
                                                                                С постепенным приходом и развитием твердотельных накопителей SSD производительность и остальных СУБД увеличится. Не совсем понятно, зачем ещО одна.

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

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