Share to: share facebook share twitter share wa share telegram print page

Snappy (データ圧縮)

Snappy
作者
開発元 Google
初版 2011年3月18日 (2011-03-18)
最新版
1.2.1[1] ウィキデータを編集 / 2024年5月21日 (2か月前)
リポジトリ ウィキデータを編集
プログラミング
言語
C++
対応OS クロスプラットフォーム
プラットフォーム ポータブル
サイズ 2 MB
種別 データ圧縮
ライセンス
公式サイト google.github.io/snappy/ ウィキデータを編集
テンプレートを表示

Snappy(旧称: Zippy)は、LZ77の着想に基づいてGoogleによって開発されたC++で書かれている高速なデータ圧縮ライブラリであり、2011年にオープンソース化された[2][3]。Snappyは非常に速い圧縮速度と妥当な圧縮率を目的としており、高い圧縮率や他のデータ圧縮ライブラリとの互換性は目的としていない。64ビットモードで動作する2011年頃のWestmereのクロック周波数2.26 GHzのCore i7プロセッサのシングルコアを使用した場合、圧縮速度は250 MB/sで、展開速度は500 MB/sである。圧縮率はgzipより20–100%低くなる[4][5]

SnappyはBigtableMapReduceなどのGoogleのプロジェクトや、Google内部のRPCシステムのデータ圧縮など広く使用されている。SnappyはMariaDB ColumnStore[6]Apache CassandraCouchbase ServerApache HadoopLevelDB英語版MongoDBRocksDBApache LuceneApache SparkInfluxDB英語版などのオープンソースプロジェクトで使用することができる[4]。展開時に圧縮ストリーム内のエラーを検出するためにテストが行われる。Snappyのソースコードは一部の最適化を除いてインラインアセンブラを使用しておらず[7]、移植性がある。

ストリームフォーマット

Snappyの符号化はビット指向ではなく、バイト指向である[注釈 1]。このフォーマットではハフマン符号算術符号などのエントロピーエンコーダは使用されない。

ストリームの最初のバイトは圧縮前のデータのサイズを表し、可変長符号の使用を可能にするリトルエンディアンヴァリアントとして格納される[8]。各バイトの下位7ビットはデータに使用され、上位ビットはサイズを表すフィールドの終わりを示すフラグに使用される。

ストリーム内の残りのバイトは4つの要素型のいずれかを使用して符号化される。要素型は要素の最初のバイト(タグバイト)の下位2ビットで符号化される[9]:

  • 00 – リテラル – 非圧縮データ。上位6ビットはデータの長さ(len-1)を格納するために使用される。60よりも大きな長さは60(1バイト)から63(4バイト)の6ビット長で示される1–4バイトの整数に格納される。
  • 01 – 長さを3ビットとして格納し、オフセットを11ビットとして格納してコピーする。タグバイトの後の1バイトはオフセットの一部として使用される。
  • 10 – 長さを6ビットのタグバイトとして格納し、オフセットをタグバイトの後に2バイトの整数として格納してコピーする。
  • 11 – 長さを6ビットのタグバイトとして格納し、オフセットをタグバイトの後に4バイトのリトルエンディアン整数として格納してコピーする。

コピーは辞書[注釈 2]を参照する。オフセットは現在の位置から展開済みのストリームに戻るシフトである。長さは辞書からコピーするバイト数である。辞書のサイズはSnappyバージョン1.0のコンプレッサーでは32,768バイトに制限されていたが、バージョン1.1では65,536バイトに更新された。

Snappyフォーマットの完全な仕様書はGitHubにあるリファレンス実装のリポジトリにある[9]

圧縮されたストリームの例

次のテキストを圧縮する:

Wikipedia is a free, web-based, collaborative, multilingual encyclopedia project.

圧縮されたデータの16進ダンプは次のように始まる:

0000000: ca02 f042 5769 6b69 7065 6469 6120 6973  ...BWikipedia is

最初の2バイトのca02は圧縮前のデータのサイズを表すリトルエンディアンヴァリアントである[注釈 3][8]。従って、最上位バイトは「02」である。0x02ca(ヴァリアント) = 0x014a = 330バイト。次の2バイトの0xf042は66+1バイトのリテラルが続くことを示している。

0000010: 2061 2066 7265 652c 2077 6562 2d62 6173   a free, web-bas
0000020: 6564 2c20 636f 6c6c 6162 6f72 6174 6976  ed, collaborativ
0000030: 652c 206d 756c 7469 6c69 6e67 7561 6c20  e, multilingual
0000040: 656e 6379 636c 6f09 3ff0 1470 726f 6a65  encyclo.?..proje

72バイト目の0x09は01型のタグバイトで、length - 4 = 0102 = 210で、offset = 0x03f = 63または「pedia 」である。74バイト目の0xf014は20+1バイトの長さのリテラルである。

0000050: 6374 2e00 0000 0000 0000 0000 0000 0000  ct.

この例では、4文字以上の全ての共通部分文字列が圧縮処理によって除去された。より一般的なコンプレッサーは、これをより良く圧縮することができる。gzipやbzip2などの圧縮方法とは異なり、アルファベットをビットストリームに圧縮するために使用されるエントロピー符号はない。

インタフェース

Snappyのリファレンス実装の主なインタフェースはC++で書かれている。また、C言語向けの言語バインディングも提供している。サードパーティーによって言語バインディングと移植版が提供されており、C#Common LispCrystalErlangGoHaskellLuaJavaNimNode.jsPerlPHPPythonR言語RubyRustSmalltalkOpenCL[10]など向けのものが含まれている[4]

脚注

注釈

  1. ^ ストリームが出力または消費するのはバイト全体のみである。
  2. ^ 展開したばかりのデータ。
  3. ^ ヴァリアントの仕様についてはProtocol Buffersを参照。

出典

  1. ^ "Release 1.2.1"; 閲覧日: 2024年5月25日; 出版日: 2024年5月21日.
  2. ^ Avram, Abel; 笹井崇司 (2011年4月13日). “Google Snappy: 高速圧縮ライブラリ”. InfoQ. C4Media Inc.. 2023年12月14日時点のオリジナルよりアーカイブ。2023年12月14日閲覧。
  3. ^ Metz, Cade (2011年3月24日). “Google open sources MapReduce compression” (英語). The Register. Situation Publishing. 2023年12月14日時点のオリジナルよりアーカイブ。2023年12月14日閲覧。
  4. ^ a b c snappy” (英語). 2023年12月14日時点のオリジナルよりアーカイブ。2023年12月14日閲覧。
  5. ^ LZO vs Snappy vs LZF vs ZLIB, A comparison of compression algorithms for fat cells in HBase” (英語). sleepcoding. Tumblr (2011年4月14日). 2023年12月14日時点のオリジナルよりアーカイブ。2023年12月14日閲覧。
  6. ^ MariaDB Enterprise ColumnStore Storage Architecture” (英語). MariaDB Documentation. MariaDB. 2023年12月14日時点のオリジナルよりアーカイブ。2023年12月14日閲覧。
  7. ^ wmi-11; Victor Costan (2017年8月24日). “Add a loop alignment directive to work around a performance regression. · google/snappy@824e671” (英語). GitHub. GitHub, Inc.. 2023年12月14日閲覧。
  8. ^ a b Encoding” (英語). Protocol Buffers Documentation. Google LLC. 2023年12月14日時点のオリジナルよりアーカイブ。2023年12月14日閲覧。
  9. ^ a b snappy/format_description.txt at 27f34a580be4a3becf5f8c0cba13433f53c21337 · google/snappy” (英語). GitHub. GitHub, Inc.. 2023年12月14日閲覧。
  10. ^ Vitis_Libraries/data_compression at b7b347a00e24eacee2870c4a3ff55cd08870f364 · Xilinx/Vitis_Libraries” (英語). GitHub. GitHub, Inc.. 2023年12月14日閲覧。

関連項目

外部リンク

Read other articles:

Batalyon Zeni Tempur 20/Pawbili Pelle AlangLambang Yonzipur 20/PPADibentuk11 Agustus 2020NegaraIndonesiaCabangZeniTipe unitSatuan Bantuan TempurPeranPasukan Prasarana MiliterBagian dariKodam XVIII/KasuariMarkasSorong, Papua Barat DayaJulukanYonzipur 20/PPAMotoPawbili Pelle AlangBaretHijauMaskotEnggang HitamUlang tahun2 FebruariPertempuranOperasi Nemangkawi Batalyon Zeni Tempur 20/Pawbili Pelle Alang disingkat Yon Zipur 20/PPA sebelumnya bernama Detasemen Zeni Tempur 13/Pawbili Pelle Alang atau D…

Grumman F8F Bearcat adalah pesawat tempur sayap rendah (low wing) angkatan laut Amerika bermesin tunggal dari 1940-an. Pesawat ini digunakan ke pertengahan abad ke-20 di Angkatan Laut Amerika Serikat, yang Korps Marinir Amerika Serikat, dan angkatan udara dari negara-negara lain. Pesawat ini merupakan akhir pesawat tempur Grumman Aircraft yang bermesin piston. Versi modifikasi telah memecahkan rekor kecepatan untuk pesawat baling-baling, dan sangat populer di kalangan pemilik pesawat perang. Ref…

Silueta de Japón con los colores de la bandera LGBTSituación legal de las uniones entre personas del mismo sexo en Asia Actividad LGBT legal      Matrimonio      Otro tipo de unión      Tutela legal o convivencia no registrada (franjas: se ofrecen certificados no vinculantes)      Reconocimiento limitado de uniones en otros países      Sin reconocimiento   &#…

  لا بيسجا (بالإسبانية: Pesga, La)‏[1]   - بلدية -    لا بيسجا  خريطة الموقع تاريخ التأسيس 1835  تقسيم إداري البلد إسبانيا  [2] المقاطعة قصرش خصائص جغرافية إحداثيات 40°19′34″N 6°10′35″W / 40.325991666667°N 6.1762861111111°W / 40.325991666667; -6.1762861111111  [3] المساح…

Обґрунтування добропорядного використання для статті «Мосьє Миша (фільм)» [?] Опис Постер до фільму «Мосьє Миша» (фр. Monsieur La Souris, Франція, 1942) Джерело http://www.filmsdujeudi.com/images/affiches/LMONS02/afmons01.jpg Автор Студія-виробник та/або дистриб'ютор Час створення невідомо Мета використанн…

كلية الجراحين الملكيةمعلومات عامةصنف فرعي من كلية ملكيةmedical association (en) البلد المملكة المتحدة تعديل - تعديل مصدري - تعديل ويكي بيانات إن كلية الجراحين الملكية أو كلية الجراحة الملكية هي أحد أنواع المؤسسات التي أسسها العديد من الأعضاء الحاليين والسابقين من دول الكومنولث، وهذه …

Ronnie Coleman Datos personalesNombre completo Ronald Dean ColemanApodo(s) The KingNacimiento Monroe, Luisiana, Estados Unidos13 de mayo de 1964 (59 años)Nacionalidad(es) EstadounidenseAltura 1,80 m (5′ 11″)Carrera deportivaDeporte CulturismoEquipo universitario GSUEstado Retirado               Títulos Mister Olympia (1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005) Página web oficial[editar datos en Wikid…

هذه المقالة تحتاج للمزيد من الوصلات للمقالات الأخرى للمساعدة في ترابط مقالات الموسوعة. فضلًا ساعد في تحسين هذه المقالة بإضافة وصلات إلى المقالات المتعلقة بها الموجودة في النص الحالي. (يناير 2020) هذه المقالة يتيمة إذ تصل إليها مقالات أخرى قليلة جدًا. فضلًا، ساعد بإضافة وصلة إل…

العلاقات البوركينابية الفلسطينية     فلسطين   بوركينا فاسو السفارات لا توجد بعثات دبلوماسية متبادلة الحدود لا حدود برية مشتركة تعديل مصدري - تعديل   العلاقات البوركينابية الفلسطينية هي العلاقات الثنائية التي تجمع بين بوركينا فاسو ودولة فلسطين. لا تحتفظ أي من …

Not to be confused with The Scavengers (1969 film). 1959 Filipino filmThe ScavengersTheatrical release posterDirected byJohn CromwellWritten byEddie RomeroProduced byKane W. LynnEdgar F. RomeroStarring Vince Edwards Carol Ohmart Vic Diaz CinematographyFelipe SacdalanEdited byGervasio SantosMusic byTito ArevaloProductioncompanies Lynn-Romero Productions Independent International Pictures Hemisphere Pictures Release date October 1959 (1959-10) Running time79 minutesCountryPhilippinesLang…

1996 single by The Blue NileHappinessSingle by The Blue Nilefrom the album Peace at Last Released1996Length4:39 (album version)4:28 (single version)LabelWarnerSongwriter(s)Paul BuchananProducer(s)The Blue NileThe Blue Nile singles chronology Saturday Night (1991) Happiness (1996) Sentimental Man (1996) Happiness is a song by Scottish band The Blue Nile, which was released in 1996 as the lead single from their third studio album Peace at Last. It was written by Paul Buchanan and produced by the b…

Juan Carlos I dari SpanyolMantan Raja SpanyolBerkuasa22 November 1975 – 19 Juni 2014 (38 tahun, 209 hari)PendahuluAlfonso XIIIPenerusFelipe VIInformasi pribadiKelahiran5 Januari 1938 (umur 85)Roma, ItaliaWangsaWangsa Bourbon[1]Nama lengkapJuan Carlos Alfonso Víctor María de Borbón y Borbón-Dos SiciliasAyahInfante Juan, Comte BarcelonaIbuPutri María de las Mercedes dari Bourbón dan OrléansPasanganSophia dari Yunani dan DenmarkAnakElena, Adipati Wanita LugoCristina,…

Santo RemigiusSanto Remigius membaptis Clovis I, karya Master of Saint Gilles, ca. 1500 (National Gallery of Art, Washington, D.C.)Uskup dan Pengaku ImanLahirca. 437Cerny-en-Laonnois, Picardy, PrancisMeninggal13 Januari 533Rheims, Champagne, PrancisDihormati diGereja Katolik RomaPersekutuan AnglikanOrtodoks TimurPesta13 Januari[1][2]1 Oktober (pemboyongan relik)[2]Atributmerpati, buku, lenteraPelindungPrancis Patung Santo Remigius di Gereja Santo Remigius, Sim…

Isla Grande Isola Grande Ubicación geográficaRegión MediterráneoArchipiélago islas del Gran Estanque de MarsalaMar Mar Mediterráneo - mar TirrenoCoordenadas 37°52′16″N 12°27′47″E / 37.87111111, 12.46305556Ubicación administrativaPaís Italia ItaliaDivisión provincia de TrapaniRegión SiciliaCaracterísticas generalesGeología Isla marítimaSuperficie 1,19Longitud 7 kmAnchura máxima 1,4 kmPunto más alto ()PoblaciónPoblación deshabitada hab…

American video game developer Amazon GamesFormerlyAmazon Game Studios (2012–2020)TypeDivisionFoundedAugust 7, 2012; 11 years ago (2012-08-07)[1]HeadquartersSeattle, Washington, U.S.Key peopleChristoph Hartmann(vice president)[2][3]ParentAmazonDivisionsAmazon Games Orange County[4][5]Amazon LumberyardAmazon Games Montreal[6]Amazon Games San DiegoRelentless StudiosWebsiteamazongames.com Amazon Games (formerly Amazon Game Studios) …

County in Kansas, United States County in KansasJewell CountyCountyJewell County Courthouse in Mankato (2014)Location within the U.S. state of KansasKansas's location within the U.S.Coordinates: 39°48′N 98°14′W / 39.800°N 98.233°W / 39.800; -98.233Country United StatesState KansasFoundedFebruary 26, 1887Named forLewis R. JewellSeatMankatoLargest cityMankatoArea • Total914 sq mi (2,370 km2) • Land910 sq mi …

Der ehemalige östliche und südliche Flügel des Kreuzgangs um 1780 Ostflügel des Kreuzgangs und «Lehenhaus» um 1810 Die Abtei (rechts oben) auf Hans Conrad Gygers «Gygerplan» von 1667 Grabplatte des Kaplans Heinrich Mahler Das Kloster St. Martin (oft als Kloster auf dem Zürichberg bezeichnet) ist im Jahr 1127 als Niederlassung regulierter Augustiner-Chorherren entstanden. St. Martin wurde 1523 oder 1525 im Zuge der Reformation aufgelöst. Heute erinnern verschiedene Flurbezeichnunge…

American beauty pageant contestant Kira KazantsevKazantsev in March 2015Born (1991-07-20) July 20, 1991 (age 32)San Francisco, California, U.S.Alma materHofstra UniversityHeight5 ft 5 in (1.65 m)TitleMiss City of New York 2014Miss New York 2014Miss America 2015TermSeptember 14, 2014 – September 13, 2015PredecessorNina DavuluriSuccessorBetty CantrellSpouse Andrew Dixon ​(m. 2019)​Websitekirakazantsev.com Kira Dixon (née Kazantsev; born July…

Subfamily of flowering plants Alpinioideae Alpinia purpurata Scientific classification Kingdom: Plantae Clade: Tracheophytes Clade: Angiosperms Clade: Monocots Clade: Commelinids Order: Zingiberales Family: Zingiberaceae Subfamily: AlpinioideaeHassk.[1] Tribes & Genera See text Alpinioideae is a subfamily of plants in the family Zingiberaceae.[2] Tribes & genera Tribe Alpinieae Adelmeria Aframomum Alpinia Amomum - synonym Elettariopsis Aulotandra Conamomum Cyphostigma Ele…

1651 battle of the Khmelnytsky Uprising Battle of BerestechkoPart of the Khmelnytsky UprisingThe Battle of Berestechko between the Cossack Hetmanate and Crimean Khanate against the Polish–Lithuanian CommonwealthDate28 June — 10 July, 1651LocationBerestechko, Volhynian Voivodeship, Polish–Lithuanian CommonwealthResult Decisive Polish–Lithuanian victoryBelligerents Cossack Hetmanate Crimean Khanate Polish–Lithuanian CommonwealthCommanders and leaders Bohdan Khmelnytsky Tymofiy Khmelnytsk…

Kembali kehalaman sebelumnya