Даступная СКБД Apache Cassandra 4.0

Арганізацыя Apache Software Foundation прадставіла рэліз размеркаванай СКБД Apache Cassandra 4.0, якая адносіцца да класа noSQL-сістэм і разлічанай на стварэнне высокамаштабуюцца і надзейных сховішчаў велізарных масіваў дадзеных, якія захоўваюцца ў форме асацыятыўнага масіва (хэша). Выпуск Cassandra 4.0 прызнаны гатовым для працоўных укараненняў і ўжо пратэставаны ў інфраструктурах кампаній Amazon, Apple, DataStax, Instaclustr, iland і Netflix c кластарамі, якія налічваюць больш за 1000 вузлоў. Код праекту напісаны на мове Java і распаўсюджваецца ў рамках ліцэнзіі Apache 2.0.

Першапачаткова СКБД Cassandra была распрацавана кампаніяй Facebook і ў 2009 годзе перададзена пад заступніцтва фонду Apache. Прамысловыя рашэнні на базе Cassandra разгорнутыя для забеспячэння працы сэрвісаў такіх кампаній, як Apple, Adobe, CERN, Cisco, IBM, HP, Comcast, Disney, eBay, Huawei, Netflix, Sony, Rackspace, Reddit і Twitter. Напрыклад, разгорнутая кампаніяй Apple інфраструктура захоўвання на базе Apache Cassandra налічвае больш за тысячу кластараў, якія ўключаюць 160 тысяч вузлоў і захоўваюць больш за 100 петабайт дадзеных. У кампаніі Huawei выкарыстоўваецца больш за 300 кластараў Apache Cassandra, якія ўключаюць 30 тысяч вузлоў, а ў Netflix – больш за 100 кластраў, якія ахопліваюць 10 тысяч вузлоў і апрацоўваюць больш за трыльён запытаў у дзень.

СКБД Cassandra аб'ядноўвае ў сабе цалкам размеркаваную hash-сістэму Dynamo, якая забяспечвае практычна лінейную маштабаванасць пры павелічэнні аб'ёму дадзеных. Cassandra выкарыстоўвае мадэль захоўвання дадзеных на базе сямейства слупкоў (ColumnFamily), адрозную ад сістэм падобных memcachedb, якія захоўваюць дадзеныя толькі ў звязку ключ / значэнне, магчымасцю арганізаваць захоўванне хэшаў з некалькімі ўзроўнямі ўкладзенасці. Для спрашчэння ўзаемадзеяння з БД падтрымліваецца мова фармавання структураваных запытаў CQL (Cassandra Query Language), які нагадвае SQL, але зрэзаны па функцыянальнасці. З магчымасцяў можна адзначыць падтрымку прастор імёнаў і сямействаў слупкоў, стварэнне азначнікаў праз выраз «CREATE INDEX».

СКБД дазваляе ствараць устойлівыя да збояў сховішча: якія змяшчаюцца ў БД дадзеныя аўтаматычна рэпліцыруюцца на некалькі вузлоў размеркаванай сеткі, якая можа ахопліваць розныя цэнтры апрацоўкі дадзеных. Пры збоі вузла, яго функцыі на лёце падхапляюцца іншымі вузламі. Даданне новых вузлоў у кластар і абнаўленне версіі Cassandra вырабляецца на лета, без дадатковага ручнога ўмяшання і пераканфігураванні іншых вузлоў. Драйверы з падтрымкай CQL падрыхтаваны для моў Python, Java (JDBC/DBAPI2), Ruby, PHP, C++ і JavaScript (Node.js).

Асноўныя навіны:

  • Павышана прадукцыйнасць і маштабаванасць. Падвышаная эфектыўнасць абмену дадзенымі ў фармаце SSTable (Sorted Strings Table) паміж вузламі. Аптымізаваны пратакол абмену паведамленнямі паміж вузламі (Internode Messaging Protocol). Хуткасць перадачы патокаў дадзеных паміж вузламі ўзрасла да 5 разоў (галоўным чынам дзякуючы ўжыванню тэхнікі Zero Copy і перадачы SSTables цалкам), а прапускная здольнасць пры аперацыях чытання і запісы да 25%. Аптымізаваны працэс інкрыментальнага аднаўлення. Затрымкі з-за прыпынення выканання зборшчыкам смецця зніжаны да некалькіх мілісекунд.
  • Дададзена падтрымка лога аўдыту, які дазваляе адсочваць аперацыі аўтэнтыфікацыі карыстальнікаў і ўсе выкананыя запыты CQL.
  • Дададзена магчымасць вядзення поўнага бінарнага лога запытаў, які дазваляе захоўваць увесь трафік запытаў і адказаў. Для кіравання прапанаваны каманды "nodetool enablefullquerylog|disablefullquerylog|resetfullquerylog", а для аналізу лога пастаўляецца ўтыліта fqltool. Прадастаўлены каманды для пераўтварэння лога ў чытэльны выгляд (Dump), параўнанні зрэзаў актыўнасці (Compare) і паўторнага выканання (Replay) для аналізу c прайграваннем умоў, уласцівых рэальнай нагрузцы.
  • Дададзена падтрымка віртуальных табліц, якія адлюстроўваюць не дадзеныя, якія захоўваюцца ў SSTables, а інфармацыю выводную праз API (метрыкі прадукцыйнасці, інфармацыя аб наладах, змесціва кэша, звесткі аб падлучаных кліентах і да т.п.).
  • Падвышаная эфектыўнасць захоўвання дадзеных у сціснутым выглядзе, што дазваляе зменшыць спажыванне дыскавай прасторы і падвысіць прадукцыйнасць аперацый чытання.
  • Дадзеныя, якія адносяцца да сістэмнай прасторы ключоў (system.*), зараз па змаўчанні размяшчаюцца ў першай дырэкторыі замест размеркавання па ўсіх дырэкторыях з дадзенымі, што дазваляе захаваць працаздольнасць вузла ў выпадку выйсця са строю аднаго з дадатковых дыскаў.
  • Дададзена эксперыментальная падтрымка часовай рэплікацыі (Transient Replication) і лёгкіх кворумаў (Cheap Quorums). Часавыя рэплікі не захоўваюць усе дадзеныя і выкарыстоўваюць інкрыментны аднаўленне для ўзгаднення з поўнымі рэплікамі. Лёгкія кворумы рэалізуюць аптымізацыю аперацый запісу, пры якой запіс у часавыя рэплікі не вырабляецца пакуль не даступны дастатковы набор поўных рэплік.
  • Дададзена эксперыментальная падтрымка Java 11.
  • Дададзена эксперыментальная опцыя для параўнання ўсіх дрэў Меркла (Merkle Tree). Напрыклад, уключэнне опцыі на кластары з 3 вузламі, у якім дзве рэплікі аднолькавыя, а адна састарэлая, прывядзе да выканання абнаўлення састарэлай рэплікі з выкарыстаннем толькі адной аперацыі капіравання актуальнай рэплікі.
  • Дададзены новыя функцыі currentTimestamp, currentDate, currentTime і currentTimeUUID.
  • Дададзена падтрымка арыфметычных аперацый у запытах CQL.
  • Прадастаўлена магчымасць выканання арыфметычных аперацый паміж дадзенымі з тыпамі "timestamp" / "date" і "duration".
  • Дададзены рэжым для прадпрагляду патокаў дадзеных, неабходных для аднаўлення (nodetool repair -preview) і магчымасць праверкі цэласнасці аднаўляльных дадзеных (nodetool repair -validate).
  • У запытах SELECT з'явілася магчымасць апрацоўкі элементаў Map і Set.
  • Дададзена падтрымка распаралельвання этапу пачатковай пабудовы матэрыялізаваных уяўленняў (cassandra.yaml:concurrent_materialized_view_builders).
  • У камандзе «nodetool cfstats» дададзеная падтрымка сартавання па вызначаных метрыках і абмежаванні колькасці выводных радкоў.
  • Дадзеныя налады для абмежавання падлучэння карыстальніка толькі да пэўных датацэнтраў.
  • Дададзена магчымасць абмежавання інтэнсіўнасці (rate limit) аперацый стварэння і ачысткі снапшотаў.
  • У cqlsh і cqlshlib рэалізавана падтрымка Python 3 (падтрымка Python 2.7 пакуль захавана).
  • Спынена падтрымка платформы Windows. Для запуску Cassandra у Windows рэкамендуецца выкарыстоўваць Linux-акружэнні, створаныя на аснове падсістэмы WSL2 (Windows Subsystem for Linux 2) ці сістэм віртуалізацыі.



Крыніца: opennet.ru

Дадаць каментар