サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
TGS2024
www.nagaseyasuhito.net
データベースにおいてパーティショニング(Partitioning)という負荷分散手法をご存知でしょうか。 先日のエントリ「JPAでマスター/スレーブ構成のMySQLを使うぞ」で紹介した方法ではスレーブをスケールアウトさせることでSELECTなど参照系のクエリに対してはある程度まで負荷分散ができました。しかしINSERTやUPDATE、DELETEなど更新系のクエリはスケールアウトすることができません。 パーティショニングはこのような問題を解決する手法の1つで、テーブルを一定のルールに基づいて複数のデータベースに分割し、データの格納先を分散させることで更新系のクエリの負荷を軽減させる仕組みです。シャーディング(Sharding)と呼ばれることもあります。 EclipseLinkはJPAの実装ですが、パーティショニングを簡単に扱うことができるように独自の拡張が施されています。今回はその方法をご
この記事はJava Advent Calendarの23日目の記事です。昨日はtoradukaさんのJavaのクラスファイルをjavapとバイナリエディタで読むでした。激しいですねー。明日はsmogamiさんです。 さて、Java EE Advent Calendarの18日目の記事の予告通りMavenでまっさらなマスター/スレーブ構成のMySQLクラスタを構築し、そのデータベースに対して結合テストを実行する方法について解説します。サンプルのリポジトリはこちらです。makingチャソがフォークしてSpring Boot版作ってました。Springな方はこちらもぜひ参考にしてみてください! jcabi-mysql-maven-plugin 今回のキモはこのjcabi-mysql-maven-pluginです。このプラグインはMavenリポジトリにアップロードされたMySQLをmaven-de
この記事はJava EE Advent Calendarの18日目のエントリです。昨日はn_agetsuさんのApache Shiro を使ってみましたでした。 Webサービスやソーシャルゲームのボトルネックになりやすいのがデータベースアクセスです。そしてこれらのサービスではデータベースにMySQLが多く使われています。 高負荷なMySQLの負荷分散の一つにデータベースをマスター/スレーブのレプリケーション構成にしてINSERT/UPDATE/DELETEなど更新系のクエリはマスターに対して行い、スレーブにマスターの更新内容をレプリケート、SELECTなど参照系のクエリはスレーブのデータベースにクエリを発行して負荷分散を行う手法があります。 このエントリではそのようなマスター/スレーブのレプリケーション構成のMySQLにJPAを使ってクエリを発行する方法をご紹介します。 MySQLのJDB
@skrbより献本いただいた「Javaによる関数型プログラミング」を、ちまちまと通勤時間などを利用して読了しました。 今年はどのJava関連の勉強会に行っても「ラムダ式とStream APIで関数型プログラミングで安心安全!」という話がされていて耳タコな人も多いのではないでしょうか。 とは言え勉強会で聞くのは関数型プログラミングの”さわり”だけの場合がほとんどです。本書はそんな関数型プログラミングの”さわり”から、後半は実践的な例までひと通り書かれているため、本書を読んでおけばJava8での開発にも、とりあえず臆することはなくなるはずです。 関数型プログラミングの本質は1章の「まるで要求仕様を述べるようにロジックが流れていきます」という一文に込められています。入力と出力を関数(function)によって簡潔に記述し、連鎖することで目的の値を求める数学的なアプローチと言えるでしょう。 それに
前回の記事でJMXのメトリクスをfluentd経由で蓄積する方法を書きましたが、殆どの場合JMXのメトリクスは深い入れ子構造になっています。 $ curl -X POST -d '{"type":"read","mbean":"java.lang:type=Memory"}' http://localhost:8778/jolokia/ | python -mjson.tool { "request": { "mbean": "java.lang:type=Memory", "type": "read" }, "status": 200, "timestamp": 1389278295, "value": { "HeapMemoryUsage": { "committed": 133054464, "init": 16432320, "max": 518979584, "used": 67
NorikraをCloudera Managerの管理下に置き手軽に試すためのCSD/Parcelを作りました。NorikraとはSQLでストリーム処理を行えるOSSで、いくつかの制約はありますが、大量のログを低レイテンシで処理することができます。 NorikraはJRubyで実装されているのでgemコマンドでインストールすればすぐ使うことが出来る反面、そもそも標準パッケージにJRubyがないのでインストールが面倒だったり、他のHadoopのコンポーネントはそもそもCloudera Managerで管理しているので、Norikraだけ管理が違うのなんかやだなあ、ということでCloudera Managerで管理できるようにしてみました。 Cloudera Managerとは? Cloudera社が開発しているCDHというHadoopディストリビュージョン用の管理ツールです。Webコンソール
みなさんJMXは使っていますか?Javaアプリケーションのメモリ使用量を始めとした統計情報を取得したりできる、運用には欠かせないモニタリング・管理の仕組みですが、統計情報を蓄積する方法に悩んでいる方も多いのではないでしょうか。 今回はアプリケーションから取得できる様々な統計情報をfluentd経由で蓄積し、分析やトラブルシュートに活用する方法を紹介します。 JMX用のfluentdプラグイン JMXの統計情報をfluentdで収集するfluent-plugin-jolokiaというプラグインを使います。 fluent-plugin-jmxではなくfluent-plugin-jolokia?と思われるかもしれません。 JolokiaはJMXをJSONベースのREST APIとして提供するためのエージェントです。fluentdのプラグインはRubyで書かれていますが、Rubyから直接JMXのプ
この記事はJava Advent Calendar 2013の21日目として書かれたものです。昨日は@yoshioteradaさんの「Java EE 7 WebSocket アンチパターン」でした。 みなさん、mvn site使ってますか? ドキュメントが自動生成できる!と思ってワクワクしながら実行するも、 見た目がイマイチでテンション上がらなかったり 大したドキュメントが生成されずにガッカリしたり デプロイの設定が面倒でやらず、生成しても見なかったり する事で有名なアイツです。やれば(pom.xmlをがっつり書けば)できる子なのに、初見でポイですよね。 そんなmvn siteですが、pom.xmlにちょっと化粧をしてやれば案外使いやすい場面もあるんです!今日はそんなTipsを3つほどご紹介しましょう。 スキンを使う まず1つ目は、生成されるドキュメントのスキン(==テーマ)を変更して、見
この記事はJavaEE Advent Calendar 2013の12日目として書かれたものです。昨日は@yoshioteradaさんの「JSF + WebSocket で実装した IMAP Web メール・クライアント」でした。 11月に開催されたJJUGナイトセミナーの「おっぴろげJavaEE DevOps」のテストに関するセクションで「極力ユニットテストに寄せることで、JavaEEコンテナを使わずテストの実行速度を早くする」というお話をしました。 おっぴろげJavaEE DevOps from Taiichilow Nagase セッションではJPAのテストをJavaEEコンテナから切り離し、ユニットテストとして実行する方法をご紹介しましたが、時間の関係で省いたトピックをご紹介します。メソッドバリデーションのユニットテストです。 メソッドバリデーション メソッドバリデーションはBea
[snap url=http://quercus.caucho.com/]グリーで働き始めてはや2週間、社員の年齢層が比較的若いせいか、陽気な人が多く楽しく過ごしております。 Bootcampと呼ばれる実装研修ではEthnaを始めとしたPHPのフレームワークでキャッキャウフフしています。 PHPまみれの毎日ですが、意外なところでRubyやnode.jsが使われていたりHaskell使おうみたいな話もあったりと、環境やアーキテクチャによって様々な言語が使われているようです。 Java大好き人間としてはJavaでなんかやったるしかないだろう、ということで個人的な実験ですがJavaで実装されたPHPの実行環境Quercusを使ってみたところ、あまりにハイパフォーマンスでビビったので皆様にご紹介です。 Quercusってなんぞ Quercus(くえるかす)はRasinというアプリケーションサーバー
さて、前回エントリでは様々なリポジトリにアクセスするのですが、その度にユーザー名とパスワードを入力するのは面倒ですよね。入力間違えてビルド失敗とか目も当てられない・・・! settings.xmlに直接ユーザー名とパスワードを保存する方法もあるのですが、リポジトリの設定などをsettings.xmlで共有する可能性も考えると直接記述するのはセキュリティ的に心配です。 そこで今回はあまり知られていない?Mavenで安全にパスワードを保存しておく方法を紹介します。 マスターパスワードを設定する Mavenではマスターパスワードを設定し、それをキーにして各サーバーのパスワードを暗号化して保存します。マスターパスワードの生成は mvn --encrypt-master-password <password> [/shell]このコマンドを実行してください。標準出力に {jJLZkyJ3m5cHQj
[snap url=http://gree.co.jp/]伊藤直也さんが退職されるというエントリを見た直後ではありますが、今日からグリー株式会社のエンジニアとしてお世話になります! 抱負というかスタンスについて簡単に綴ってみます。 「イカしたソシャゲーをデベロップしてギロッポンでチャンネーとシースー!」 ・・・とかいったマインドではもちろんなく、どちらかというと 大規模なコンシューマーサービスのインフラをどう活かすか といった下回りへの強い関心と 優秀なエンジニアの渦に揉まれて自身の価値を磨く といった以前のエントリで述べた点で決めました。 選考過程では大規模インフラを扱う会社や、優秀なエンジニアが数多くいる会社は他にもいくつかありましたが、そのなかでグリーを選んだ理由は、会社の雰囲気・空気感が合いそうだというところが大きいです。 面接に行った他の会社の中には、フロア全体や面接していただい
さて、突然ですが2012年3月末をもちまして丸々4年間お世話になったグロースエクスパートナーズ株式会社(GxP)を退職します。 転職するにあたり色々な会社を見ていくうちにいままで見えていなかったGxPという会社が見えてきて結構いい会社だよなあ、と改めて感じたので思い出がてら簡単にご紹介します。結論から言うと 今風にSIやりたいならGxP一択しかないよ! ということです。 JavaでエンタープライズなSI会社です [snap url=”http://www.gxp.co.jp/”]「時代はGUNDAM、Java(笑)はオワコン」とか言う人もいてJavaでSIやってる会社というと不安を感じる人もいるようですが、実際なかで働いたり勉強会参加したりOracleのJavaへの関わり方を見ると、なんだかんだ言ってまだまだメインストリームで在り続けるだろうなと思います。 どちらかというと日本でのJava
自分で作ったMavenプロジェクトをパブリックなリポジトリとして公開したくなったことはありませんか?簡単にセントラルリポジトリにデプロイできればいいのですが手間なので今回は野良リポジトリを作り、そこに公開する方法をご紹介します。 POMを書く scmを書く まずはscmを記述して、チェックアウト、チェックインをするリポジトリのURLを記述しましょう。GitHubなら以下のような感じです。 <scm> <url>http://github.com/nagaseyasuhito/fatsia</url> <connection>scm:git:https://github.com/nagaseyasuhito/fatsia.git</connection> <developerConnection>scm:git:https://github.com/nagaseyasuhito/fatsia
@t_yano が2011年のAdvent Calendarで書いていたAPT(Annotation Processing Tool)の話題に触発され、最近よくAPTで遊んでおります。 APTとは簡単に言うとアノテーション付きのコードを元に、自動的にコードを生成してくれる仕組みのことです。JPAのMetamodelやSeasarのDomaでDAOの生成に使われていたりします。 でもAPT使ったプロジェクトってデバッグがすげー面倒なんですよ。そのままだとEclipseはコード生成してくれないし、生成されたコードのテストもよくわからんし。 なので、今回はEclipseでAPTをラクラクに遊ぶ方法をご紹介します。 maven-processor-plugin まずはMavenプラグインです。標準のmaven-compiler-pluginでもAPTを扱うことができるのですが、残念ながらEclip
このページを最初にブックマークしてみませんか?
『nagaseyasuhito Daily works. |』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く