Facebook のエンジニアたちは本日、@Scale カンファレンス中に一連のオープンソースの圧縮およびデータベース ツールを公開しました。
このソフトウェアは、この広大なソーシャルネットワーク内で非常に大規模に利用されています。カリフォルニアの巨大企業は、ソースコードの一部を世界と共有し、その見返りとして有用なパッチを入手したいと考えています。新機能は以下のとおりです。
Zstandard – ブログ投稿 – コード – BSD Simplified と特許条項
米国のテレビコメディ「シリコンバレー」では、リチャード・ヘンドリックスが「パイド・パイパー」と呼ばれる優れたデータ圧縮アルゴリズムを開発し、彼と彼のスタートアップ企業は、グーグルの薄っぺらなパロディである精神異常の技術大手フーリと対立することになる。
ヘンドリックス氏はFacebookで勤務し、Zstandardを開発しました。これは、圧縮と解凍においてzlibやxzよりも高速で、lz4やzlibよりも優れた圧縮率を誇るロスレスデータ圧縮アルゴリズムです。実用面では、zstdコマンドラインツールはgzipよりもわずかに優れた圧縮率を持ち、圧縮と解凍の速度ははるかに高速です。
基本的な考え方は、zlibを、ほぼ分岐がなく並列実行に最適化され、パフォーマンスを向上させるコードに置き換えることです。このライブラリは、最先端の確率圧縮設計である有限状態エントロピーの恩恵を受けるなど、zlibに対する様々な改良点も備えています。zlibは、zipおよびgzipアーカイブの圧縮やウェブトラフィックの転送など、ほぼあらゆる用途で使用されているため、Facebookは優れたライブラリの採用を強く望んでいます。
プロジェクトのREADMEより:
Zstandardは現在Facebook社で導入されており、様々なフォーマットやユースケースにおいて、膨大な量のデータの圧縮・解凍に日常的に利用されています。Zstandardは本番環境でも安全であると考えられています。
Facebookの広報担当者は「zlibの20年間の成功に刺激を受けており、zlibが成し遂げた成果をZstandardが業界にさらに貢献してくれることを期待している」と付け加えた。
ただし、注意が必要です。Zstandardソースの3条項BSDライセンスには、追加の条件が含まれています。それは、自身のプロジェクトや製品でソフトウェアを使用している間は、Facebookを特許侵害で訴えないこと、またFacebookが先に訴えてきた場合に反訴しないことです。
MyRocks – ブログ投稿 – コード – GPL v2
Facebook は、Google の LevelDB から派生した RocksDB を採用し、これを Oracle の MySQL 5.6 のブランチと組み合わせ、いくつかの拡張機能を加えて、MyRocks と名付けました。
RocksDBは、効率的なデータ圧縮機能を備えた高速なキーバリューストレージシステムです。ただし、レプリケーションやSQLインターフェースはサポートされていません。そこで、オープンソースのMySQLと統合すれば、MyRocksが完成します。
FacebookはMySQLとそのInnoDBストレージエンジンを大量に使用しています。しかし現在、Facebookのエンジニアたちは、膨大なユーザーデータベースをMySQLからMyRocksに移行しているとのことです。
Facebook の技術者である Yoshinori Matsunobu 氏は、「MyRocks を当社のデータセンター地域の 1 つにあるこのデータベース層に導入したところ、圧縮された InnoDB と比べて同じデータ量で 50 パーセントも少ないストレージ容量を使用できるようになりました」と述べています。
データベースコードはまだ新しく、Facebookのハイパースケールニーズに特化したものです。外部キー、自動デッドロック検出、ネイティブパーティショニング、FULLTEXTおよびSPATIALインデックスのサポートといった機能が欠けています。Facebookは、人々が協力してソフトウェアの改善に協力してくれることを期待しています。
ついにFacebookが360度動画の安定化のための新しいアルゴリズムを開発しました。ご興味のある方は、こちらで技術的な概要をご覧ください。これは社内開発のため、公開できるコードはありません。
他のオープンソースの Facebook プロジェクトについては、こちらをご覧ください。®