22新卒技術研修で実施したデータベース研修(データベース基礎編)の講義資料です。 動画:https://youtu.be/dseGQ2MZF1U SQL演習編 https://speakerdeck.com/mixi_engineers/2022-sql-training
最近、分散データベースとかNewSQLとかサーバレスなデータベースとか色々聞きますよね。 でも、専門ではない人たちにとって、「何が違うの?」「自分たちに必要なDBはどれなの?」という点が分かりづらいと思います。 私も良く聞かれます。 AuroraはNewSQLですか? NewSQLってサーバレスなんですか? スケールできないDBとか聞きますけど、リードレプリカ増やせますよね? などなど。この辺に基本的なところから答えられるように、順を追って解説していきましょう。 「コンピュートとストレージは別であれ」 と神が言うと、コンピュートとストレージは分離された。 と言うのは冗談ですが、まずはここからスタートしましょう。 クラウド以前のデータベースを使っていた人にはお馴染みのように、それまでデータベースは大きな1つの箱でした。 過去に私は下図でデータベース(厳密にはRDBMS)のコンポーネントを解説
近年のデータベースの新潮流にNewSQLと呼ばれる一群のデータベース製品群の登場がある。そのコンセプトを一言でいうと、RDBとNoSQLのいいとこどりである。SQLインタフェースと強いデータ一貫性(ACID)というRDBの利点と水平方向のスケーラビリティというNoSQLの長所を兼ね備えた夢のようなデータベースである。下図に見られるように、RDBとNoSQLが鋭いトレードオフを発生させていたのに対して、NewSQLではそれが解消されているのが分かる。 RDB vs NoSQL vs NewSQL本当にそのような夢の実現に成功しているか、というのはまだ議論が続いているが(クエリのスループットを出すためにレイテンシを犠牲にしているので本当にトレードオフを解消はしていない、などの問題が指摘されている)、商用でも利用可能な製品としてGoogle Spanner、TiDB、YugabyteDB、Coc
軽量な時系列データベースエンジンをスクラッチで開発する機会があったので、どのように実装したのかを必要知識の解説を交えながらまとめていきます。 実装はGo言語によるものですが、本記事のほとんどは言語非依存な内容となっています。 モチベーション 筆者は時系列データを扱うツールをいくつか開発しています。その中の一つであるAliは負荷テスト用のcliツールで、メトリクスをクライアント側でリアルタイム描画できるのが特徴です。リクエスト毎にレイテンシーなどの計測結果が際限なく書き込まれてくる中、同時に一定のクエリパフォーマンスが求められます。 これは言ってしまえば、簡易クエリ機能付きのpush型モニタリングシステムを単一ホストで実現するようなものです。 以前までの実装ではヒープ上の可変長配列にデータポイントを追加していくだけだったので、当然ながら時間の経過とともにメモリ使用量が増加していく問題を抱えて
技術部の小野(taiki45)です。クックパッドではこれまで様々なデータベースの負荷対策を行ってきましたが、シャーディングは行われていませんでした。しかし先日クックパッドの認可サーバーが利用している MySQL サーバーの負荷分散のためにクックパッドで初めてのシャーディングを行ったので、Rails アプリケーションでのシャーディングの事例のひとつとしてその際の手法をご紹介したいとおもいます。 構成 Before データベースは1マスター、1ホットスタンバイ、バッチ用の1リードレプリカで構成されています。Read オペレーションのほとんどはキャッシュ層に逃しています。 After データベースの各ロールにつきそれぞれ1台ずつマシンが増えています。 シャーディングが必要になった背景 認可サーバーのアクセストークンの作成・削除時の Write オペレーションが急増し、レコード数自体も急増していて
GitレポジトリのホスティングサービスGitLab.comは2020年の5月に 6TB あるPostgreSQL 9.6クラスターをたった2時間のメンテウィンドウ中に11.7へアップグレードしました。 GitLab.comのエンジニアブログに、このPostgreSQLのメジャーアップグレードプロジェクトが解説されていたので、かんたんにご紹介します。 How we upgraded PostgreSQL at GitLab.com | GitLab ポイント PostgreSQL 9.6から 11.7 へのメジャーアップグレード 2時間のメンテナンスウィンドウ内でアップグレード完了 データサイズは6TB DBクラスターは GCP 上の 12台の VM インスタンスで構成 クラスターはアップグレード用の8台とリカバリー用の4台に分割 pg_upgrade & ハードリンクでインプレースアップグ
先週、第11回インターネットと運用技術シンポジウム (IOTS2018)にて、投稿した論文の発表をしてきました。 IOTSは査読付の国内の研究会であり、2年前に招待講演をさせていただいた研究会でもあります情報処理学会でウェブオペレーション技術について招待講演した話 - ゆううきブログ。 実は、そのときに、来年論文を投稿するぞと意気込んでいました。 実際にはそこから2年かかりましたが、この度論文を投稿することができました。 予稿 HeteroTSDB: 異種混合キーバリューストアを用いた自動階層化のための時系列データベースアーキテクチャ スライド 実務から研究へ 今回投稿した論文の内容は、Mackerelで開発した時系列データベースに関するものです。 これらはすでにAWS Summit Tokyo 2017、Web System Architecture研究会で発表済みのものになります。 時
先月投稿した2015年Webサーバアーキテクチャ序論では、Webサーバアーキテクチャを学ぶ道のりと代表的な実装モデルの概要を紹介しました。 今回は、前回同様、主に新卒Webエンジニア向けに、Webアプリケーションサーバとデータベースサーバ間の接続管理モデルと運用事情について紹介します。 データベース接続の永続化やコネクションプーリングとは何なのか、なぜ必要なのかといったことが主な話題です。 背景 データベース接続の永続化とはなにか データベース接続のオーバヘッド データベース接続の永続化手法 コネクションプーリングとはなにか コネクションプーリング: ドライバ型 コネクションプーリング: プロキシ型 コネクションプーリング全体について PostgreSQLとMySQL 参考資料 まとめ 背景 2015年Webサーバアーキテクチャ序論では、Webサーバアーキテクチャの話とWebアプリケーショ
1.時系列データとは? 時系列データとは、時間情報(タイムスタンプ) を持った一連の値のことです。一般的には、タイムスタンプは一定間隔で連続的な値をとります。時系列データの具体例としては、 分刻みで記録された気温データや、取引日毎の終値を記載した株価データなどがあげられます。 IoT(Internet of Things) アプリケーションでは、温度センサー、電圧センサー、照度センサー、イメージセンサーなど、対象をとりまく様々なセンサーから、分刻み、秒刻み、あるいはそれ以下の周期で取得された、大量の時系列データを取り扱います。 このようなデータを保持するシステムとして、必ずしもデータベースは必要ありませんが、通常以下のような機能が求められます。 絶えず流れ込んでくる大量のデータを取りこぼさず記録する 頻繁に起こるデータ欠損や参照データの矛盾などに対処できる 時間をキーとした読み出し方法を提
この記事は、第2回ウェブシステムアーキテクチャ研究会の予稿です。 ウェブシステムをモニタリングするために、高可用性、高書き込みスケーラビリティ、メトリックの長期保存が可能な時系列データベースが求められている。 これらを実現するために、性能特性の異なる汎用Key-Value Store(以下KVS)を組み合わせ、透過的に問い合わせ可能な、ヘテロジニアス時系列データベースであるDiamondを開発した。 この記事では、Diamondを分散システムの観点で捉え、アーキテクチャ、データ構造、実装を紹介し、考察によりFuture Workを議論する。 1. はじめに 2. アーキテクチャ アーキテクチャ概要 動作フロー データ構造 KVSの機能要件 3. 実装 実装概要 KVS間のデータ移動 データ位置の解決 費用特性 4. 考察と今後の課題 Diamondの欠点 将来機能 5. まとめ スライド
3. 講義内容 序論 - 並列データベースの前に 並列処理の基礎 並列処理のTerminology 並列計算機アーキテクチャ 並列データベースのアーキテクチャ データベース処理の並列化 結合処理の高速化 並列ハッシュ結合 並列ソート パーティショニング手法 多重結合や計算機間のデータ交換で発生する問題 MapReduceによる関係演算の並列処理 3 4. データベース開発の流れ Coddの論文: 1970年 System RやIngres: 70年代中盤 Oracle, IBM DB2, Ingres: 80年代序盤 並列データベースの隆盛: 80年代後半 A Relational Model of Data for Large Shared Data Banks, Communications of ACM 商用
もう寒の入りを過ぎましたね。DBAのたなかです。 GAからもうすぐ1年、社内ではもう相当カジュアルにMySQL 5.6をインストールしています。今までは新規サービス(や、新規機能)での導入がほとんどだった5.6を、このたびトラフィックガンガンのサービスにアップグレードで導入しました(と、偉そうに言っていますが私でない別のDBA氏が主担当のサービスです) 主な理由はInnoDB Compressedを使っていたのでその性能アップに期待…というところだったんですが、弊社DBAが神代の時代より試行錯誤を重ねたどり着いた究極のmy.cnf(?)、いわゆる秘伝のタレが 残 念 な が ら 腐 っ て お り 夜を徹してアップグレード作業をしていた担当DBA氏が青い顔(推定。チャットだった)で ス ロ ー ク エ リ ー が 1 0 倍 く ら い に な っ た ん だ け ど … と訴え、彼はその
MySQL 5.1から利用出来るパーティショニングの種類には、次の4つがある。 RANGEパーティショニング LISTパーティショニング [LINEAR] HASHパーティショニング [LINEAR] KEYパーティショニング RANGEパーティショニングは値の範囲を指定する。次のように日付を用いて範囲を指定するのが代表的な使い方だ。詳細はこちらの記事(パーティショニングの使用例 - http session情報)を見て欲しい。 mysql> CREATE TABLE http_session ( -> session_id VARCHAR(32) NOT NULL, -> last_access TIMESTAMP NOT NULL, -> created TIMESTAMP NOT NULL, -> t_session_data VARCHAR(1024) -> ...(中略)...
Twitterが分散フレームワーク「Gizzard」公開! Scalaで書かれたShardingを実現するミドルウェア Twitterは独自に開発した分散フレームワークの「Gizzard」をオープンソースとして公開しました。GizzardはScalaで書かれたJavaVM上で動作するミドルウェアで、PHPやRubyといったWebアプリケーションからの要求を自動的にデータベースに分散することで、大規模で可用性の高い分散データベースを容易に実現するためのものです。 Gizzard:フォルトトレラントな分散データベースを実現 The Twitter Engineering Blog: Introducing Gizzard, a framework for creating distributed datastores Twitterのブログにポストされた「Introducing Gizzard
クラウド時代の新しいデータベースとして、非リレーショナルな構造を持つNoSQLデータベースが話題になっています(NoSQL=Not Only SQL。命名の経緯はこちら)。そのNoSQLの中で、もっとも注目されているデータベースの1つがApacheのCassandraです。 Cassandraは、Facebookで大規模データ処理のために開発され、その後オープンソースとなり、現在ではApache Software Foundationのプロジェクトとして開発されています。 現在、CassandraはFacebookやDiggなどで使われている、もしくは使うことが検討されているとされ、Twitterでも(ツイートデータの格納には使われないようですが、それ以外の用途で)利用されています。 TwitterとDiggがNoSQLの「Cassandra」を選ぶ理由 Twitterが、Cassandr
「演算子のインジェクション」と「SSJI」:NoSQLを使うなら知っておきたいセキュリティの話(1)(1/2 ページ) ここ数年、大量データ処理時の高速性やデータ構造の柔軟性などから、「NoSQL」が注目を集めています。それと同時に、NoSQLを使うアプリケーションに対する攻撃手法も研究されるようになりました。この記事では、NoSQLを使ったアプリケーションの脆弱性と対策について解説します。 注目集める「NoSQL」 ここ数年、NoSQLと呼ばれる種類のデータベースが注目を集めています。NoSQLはSQL言語を使用しないデータベースの総称で、大量データ処理時の高速性やデータ構造の柔軟性などのメリットがあるため、従来のリレーショナルデータベース(RDB)を補完・代替するものとして、大規模なWebアプリケーションなどにおいてNoSQLを採用する事例が増えています。 このような新しい技術が普及し
茨城県立水戸工業高校(水戸市元吉田町)の情報技術科3年小林正樹さん(17)が、パソコンの画面上で同校の図書室を歩いているかのように書架を閲覧できるソフトを開発した。 9月16日、滋賀県草津市で開かれた「第2回立命館・全国高校生ソフトウェア創作コンテスト」で最優秀賞を受賞し、審査委員からは「利用価値がある。商品化できるのではないか」と期待の声があがった。 ソフトは、地図上の指定した地点から、周囲の風景を眺めることができる、検索大手グーグルの地図情報サービス「ストリートビュー(SV)」を応用した。図書室内の55地点から、三脚を使って角度を変えて、24枚ずつ写真を撮影。写真は画像編集ソフトでつなぎ合わせて、360度ぐるりと見渡せるようにした。画像を引き伸ばしたり縮めたりして、ズレを最小限に抑える加工が難しかったという。 また、同校から図書室の蔵書約4万冊のデータベースを提供してもらい、書名
@doryokujinです。本エントリーから数回にわけてMongoDBの紹介をつらつら書いていきたいと思います。日々、MongoDBの魅力にどっぷりな僕でして、それを少しでも多くの方に共有できたらというモチベーションで書いています。今回はチュートリアルとして主要な機能を少し詳しめに紹介していきます。アジェンダは以下の通りです: はじめに ちょっと詳しいチュートリアル オープンソース NoSQL・ドキュメント指向データベース ドライバとして多くの言語サポート 完全なインデックスサポート リッチなクエリー MySQLに類似した機能群 レプリケーション機能 オートシャーディング 巨大ファイルを扱うGridFS 今後の予定 本家ドキュメントの翻訳 より深い機能説明 勉強会での発表 Production Deploymentsとして弊社の名前を掲載する はじめに 僕は現在MongoDBをソーシャルア
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く