The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Увидела свет БД Apache Cassandra 1.1.0

24.04.2012 18:35

Организация Apache Software Foundation представила релиз распределённой БД Apache Cassandra 1.1.0, относящейся к классу noSQL-систем и рассчитанной на создание высокомасштабируемых и надёжных хранилищ огромных массивов данных, представленных в виде хэша. Изначально проект был разработан в недрах Facebook и в 2009 году передан под покровительство фонда Apache. Промышленные решения на базе Cassandra развернуты для обеспечения сервисов таких компаний, как Adobe, Cisco, IBM, Rackspace и Twitter. Наиболее крупный кластер серверов, обслуживающих единую БД Cassandra, размер данных в которой превышает 300 Тб, насчитывает более 400 машин.

БД Cassandra написана на языке Java и объединяет в себе полностью распределённую hash-систему Dynamo, обеспечивающую практически линейную масштабируемость при увеличении объема данных. Cassandra использует модель хранения данных на базе семейства столбцов (ColumnFamily), отличающуюся от систем подобных memcachedb, которые хранят данные только в связке ключ/значение, возможностью организовать хранение хэшей с несколькими уровнями вложенности. Cassandra относится к категории хранилищ повышенно устойчивых к сбоям: помещаемые в БД данные автоматически реплицируются на несколько узлов распределённой сети или даже равномерно распределяются по нескольким дата-центрам. При сбое узла, его функции на лету подхватываются другими узлами. Добавление новых узлов в кластер и обновление версии Cassandra производится на лету, без дополнительного ручного вмешательства и переконфигурирования других узлов.

Для упрощения взаимодействия с БД поддерживается язык формирования структурированных запросов CQL (Cassandra Query Language), на первый взгляд напоминающий SQL, но существенно урезанный по функциональности. Например, можно выполнять только простейшие запросы SELECT с выборкой по определённому условию, но без поддержки сортировки и группировки. Добавление и обновление данных производится через единое выражение UPDATE, операция INSERT отсутствует (если записи нет, при выполнении UPDATE она создаётся). Из возможностей можно отметить поддержку пространств имён и семейств столбцов, создание индексов через выражение "CREATE INDEX". Драйверы с поддержкой CQL подготовлены для языков Python, Java (JDBC/DBAPI2) и JavaScript (Node.js).

Улучшения, представленные в новой версии:

  • Переработан процесс обновления схемы данных и реализована поддержка автоматического разрешения конфликтов при возникновении одновременных обновлений;
  • Значительно расширен язык формирования запросов CQL (Cassandra Query Language), осуществлён переход на обратно не совместимую версию CQL 3.0, но оставлена поддержка и старой версии CQL 2.0, которая пока используется по умолчанию (для включения CQL 3.0 следует использовать опцию "--cql3"). Основные изменения в CQL 3.0 касаются поддержки использования составных ключей для упрощения денормализации;
  • Изоляция выполнения обновлений на уровне строк. Многостолбцовые обновления теперь выполняются не только атомарно, но и изолированно на уровне отдельных строк, т.е. теперь пользователь увидит сразу все изменения, а не как раньше, имеет шанс прочитать смесь старых и новых данных;
  • Реализованы средства для гибкого управления размещением данных по директориям, которые позволяют вынести хранение семейства столбцов (ColumnFamily) на отдельных раздел, например, на более быстрый SSD-накопитель;
  • Упрощена конфигурация кэшей столбцов и ключей, которые отныне являются глобальными .


  1. Главная ссылка к новости (https://blogs.apache.org/found...)
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/33676-apache
Ключевые слова: apache, cassandra, nosql, database
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (25) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, sashkan (ok), 20:06, 24/04/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    если нет сортировки, то зачем там индексы?
     
     
  • 2.2, Andrey Mitrofanov (?), 20:10, 24/04/2012 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Мо быть, для поиска??
     

  • 1.3, evgeny_t (ok), 20:14, 24/04/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • –4 +/
    самое сложное в таких системах это индексы
    фигачить туда сюда по хешу много ума не надо
    не удивлюсь что с индексами там всё херово и на большых обьёмах просто не работает
     
     
  • 2.4, rstone (??), 20:31, 24/04/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Точно работает на 300 миллионов записей ( ключей ) .
    В среднем  около 6 колонок , размер записи около 3к .
     
  • 2.10, Аноним (-), 23:37, 24/04/2012 [^] [^^] [^^^] [ответить]  
  • –1 +/
    <С очень скиптическим видом>Так вот почему Facebook начинает тормозить если туда больше 10-ти пользователей одновременно зайдет</С очень скиптическим видом>
     
     
  • 3.12, Kibab (ok), 00:54, 25/04/2012 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Кому-то надо быстро выходить из фейсбука, выключать компьютер со своим тормозным интернетом и учить русский язык.
     
     
  • 4.13, Aleks Revo (ok), 05:21, 25/04/2012 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Мечтаете обанкротить фейсбук и озолотить преподавателей русского? )))))
     
     
  • 5.19, Kibab (ok), 10:18, 25/04/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > Мечтаете обанкротить фейсбук и озолотить преподавателей русского? )))))

    Давно пора :))) А то сейчас тенденция прямо обратная, к сожалению.

     
  • 2.23, migosm (?), 14:08, 25/04/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Индексы в привычном виде в Cassandra только на вторичные атрибуты(на value), и то есть ограничение, что они работают только в пределах одного узла.
     

  • 1.5, _Ahatanhel_ (ok), 20:50, 24/04/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    >на первый взгляд напоминающий SQL, но существенно урезанный по функциональности

    зачем тогда его используют?

     
     
  • 2.6, arka (?), 22:36, 24/04/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Видимо для того, чтобы упростить вход в разработку на кассандре уже знающим SQL. Или есть какие-то другие варианты?
     
     
  • 3.7, _Ahatanhel_ (ok), 22:59, 24/04/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > Видимо для того, чтобы упростить вход в разработку на кассандре уже знающим
    > SQL. Или есть какие-то другие варианты?

    нет, я имел ввиду а почему нельзя было использовать SQL, если CQL все равно хуже?

     
     
  • 4.8, VoDA (ok), 23:09, 24/04/2012 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Потому что нет JOIN-ов, которые классика SQL. для джоинов потребуется создание специальных серверов и мержинг различных потоков данных со всего хранилища. Что суть накладно, да и не особо адекватно на тех объемах для которых создан subj.
     
     
  • 5.14, Aleks Revo (ok), 05:24, 25/04/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > Потому что нет JOIN-ов, которые классика SQL. для джоинов потребуется создание специальных
    > серверов и мержинг различных потоков данных со всего хранилища. Что суть
    > накладно, да и не особо адекватно на тех объемах для которых
    > создан subj.

    То бишь первые версии MySQL были NoSQL на самом деле? )))
    Или не только первые? (:TrollFace:)

     
     
  • 6.18, letsmac (ok), 09:04, 25/04/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > То бишь первые версии MySQL были NoSQL на самом деле? )))
    > Или не только первые? (:TrollFace:)

    Первые версии были багодромом. Вообще почитай про ANSI SQL, прочисть чакры.

     
  • 5.16, Аноним (-), 08:31, 25/04/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > Потому что нет JOIN-ов, которые классика SQL.

    Вы о чем вообще? Какие нафиг джойны в «ColumnFamily» СУБД?

     
     
  • 6.24, VoDA (ok), 21:53, 25/04/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Рекомендую прочитать пост к которому и относится мой ответ.
     
  • 4.9, _Ahatanhel_ (ok), 23:10, 24/04/2012 [^] [^^] [^^^] [ответить]  
  • +/
    и почему меня кто то уже минусить начал, я же не тролю, мне просто интересно
     
     
  • 5.11, Аноним (-), 23:43, 24/04/2012 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Это не хабр, тут всем пофиг на плюсики/минусы, и карма не играет никакой роли. Так что не парьтесь :)
     
  • 4.15, Аноним (-), 08:05, 25/04/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > нет, я имел ввиду а почему нельзя было использовать SQL, если CQL все равно хуже?

    Странный вопрос. SQL — это язык общения с реляционными БД. Cassandra таковой не является. Она как бы «из другой оперы». Да и собственно внешний вид языка запросов, по-моему, здесь не особо важен.

     
  • 4.17, letsmac (ok), 09:03, 25/04/2012 [^] [^^] [^^^] [ответить]  
  • +/
    SQL-компилер весч очень прожорливая и уничтожающая простоту и скорость. В данном случае нафиг не нужна.
     
     
  • 5.25, VoDA (ok), 12:07, 27/04/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > SQL-компилер весч очень прожорливая и уничтожающая простоту и скорость. В данном случае
    > нафиг не нужна.

    Компилер даже SQL на распределенных системах вещь копеечная. Основная проблема в том, что сейчас система работает подобно ndb нодам MySQL. Для поддержки SQL придется сделать аналог sql нод MySQL (что не сложно) куда нужно сливать все данные выборки, и где уже производить JOIN. Сама необходимость слить все данные запроса в одну ноду убивает основных бонусы распределенных хранилищ.

     

  • 1.20, Ваня (??), 13:02, 25/04/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    300 машин (= серверов?) и 400 Тб??? Т.е. по 1,3 Тб на сервер? Что-то фуфловенько как-то...
     
     
  • 2.21, pkdr (?), 14:05, 25/04/2012 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Не забывайте про то, что данные ещё и дублируются на нескольких нодах для отказоустойчивости.
     
     
  • 3.22, Andrey Mitrofanov (?), 14:08, 25/04/2012 [^] [^^] [^^^] [ответить]  
  • +1 +/
    ...и индексы могут быть в несколько раз больше данных.
     
     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру