本の目次

61 views
Skip to first unread message

玉川 竜司

unread,
May 12, 2013, 6:18:12 AM5/12/13
to mongo...@googlegroups.com
こんにちは、玉川です。

翻訳候補のApplied Design Patternと50 tipsですが、まずは目次をざっと訳しました。

これを見て、日本独自のコンテンツとして何を足すか、検討していければと思っていますので、よろしくお願いします。

どんな内容を足したらいいか、明日意見をくださいませ。
--
玉川竜司@大阪

MongoDB Applied Design Patterns

第1章 デザインパターン

1. 埋め込みと参照
リレーショナルデータモデリングと正規化
MongoDB:正規化は必要なのか?
まとめ

2. ポリモフィックなスキーマ
オブジェクト指向プログラミングを支援するポリモフィックなスキーマ
スキーマの進化を可能にするポリモフィックなスキーマ
半構造化ドメインデータを支援するポリモフィックなスキーマ
まとめ

3. トランザクショナルな振る舞いの模倣
一貫性に対するリレーショナルなアプローチ
複合ドキュメント
複雑な更新処理
補償を伴う楽観的な更新処理
まとめ

第2章ユースケース

4. 運用の知恵
ログデータの保存
集約前のレポート
階層集約

5. Eコマース
製品カタログ
カテゴリの階層
在庫管理

6. コンテンツ管理システム
メタデータと資産管理
コメントの保存
  1. オンライン広告ネットワーク
ソリューションの概要
設計その1 : 基本的な広告の配信
設計その2 : 頻度の上限の導入
設計その3 : キーワードターゲティング
  1. ソーシャルネットワーキング
ソリューションの概要
スキーマ設計
運用
シャーディング

9. オンラインゲーム
ソリューションの概要
スキーマ設計
運用
シャーディング

今後に向けて


50 Tips and Tricks for MongoDB Developers

第1章 アプリケーション設計に関するTips

#1 スピード重視ならデータを複製、整合性重視ならデータを参照
#2 将来も安心なデータが必要なら正規化を
#3 データの取得はできるだけ一度のクエリで
#4 依存フィールドの埋め込み 
#5「point-in-time」データの埋め込み
#6 増加の限度が見えないデータは埋め込み禁止
#7 データの投入はできるだけ早めに
#8 可能な場合は事前に領域を割り当てましょう
#9 匿名アクセスに備えて配列に埋め込み情報を保存
#10 自己完結型のドキュメント設計
#11 JavaScriptよりは$演算子
#12 集約は随時
#13 データの整合性の課題を処理するコードを書きましょう

第2章 実装に関するTips
#14 適切な型の使用
#15 シンプルでユニークな独自のIDがあるなら、_idをオーバーライドしましょう
#16 _idにドキュメントを使うのは避けましょう
#17 データベースの参照は避けましょう
#18 小さなバイナリデータにGridFSを使うのは避けましょう
#19 「シームレス」なフェイルオーバーの処理
#20 レプリカセットの障害とフェイルオーバーの処理

第3章 最適化に関するTips

#21 ディスクアクセスの最小化
#22 省メモリで処理能力を向上させるインデックスの利用
#23 インデックスを使うべきではない場合
#24 クエリをカバーするインデックスの生成
#25 複数のクエリを高速化するための複合インデックスの利用
#26 高速に走査できる階層ドキュメントの生成
#27 ANDクエリのマッチはできるだけ速めで少なめに
#28 ORクエリのマッチはできるだけ早めで多めに

第4章 データの安全性と一貫性

#29 書き込みは単一サーバーならジャーナルへ、複数サーバーならレプリカへ
#30 レプリカかジャーナリング、あるいは両方を必ず使いましょう
#31 データのリカバリをrepairに頼らない
#32 getlasterrorを理解する
#33 開発時には必ずセーフな書き込みを
#34 レプリケーションではwを使いましょう
#35 wではwtimeoutを必ず使いましょう
#36 書き込みの度にfsyncするのは避けましょう
#37 クラッシュの後には通常通りの立ち上げを
#38 サーバーに耐久性を持たせるためにはinstant-in-timeバックアップを取りましょう

第5章 管理に関するTips

#39 チャンクのコレクションは手動で後始末を
#40 repairでデータベースのコンパクト化を
#41 レプリカセットのメンバーの投票数は変更しない
#42 レプリカセットの設定変更はマスターを動作させたままでも可能
#43 --shardsvrと--configsvrは必要なし
#44 --notablescanの使用は開発時のみ
#45 多少のJavaScriptは勉強しておきましょう
#46 1つのシェルからの全サーバーとデータベースの管理
#47 どの関数でも「help」を表示
#48 スタートアップファイル群の作成
#49 独自関数の追加
#50 独自の書き込みを読むための単一のコレクションの利用

Mitsukuni Sato

unread,
May 13, 2013, 11:37:22 PM5/13/13
to mongo...@googlegroups.com
佐藤です。

とても良さそうですね!

開発とは直接関係ないのですが、運用、特に監視の項目があると良いなと思いました。

DB全体のデータやインデクスサイズの取得、コンパクション時の注意点、
チャンクマイグレーションはいつ起こるのか(ユーザ側で把握できるのかわかりませんが。。)、
動作時にOSはどのような状態になるかといった、運用の知恵が盛り込まれていると魅力的に思えます。


最近あんまり触ってないのでコメントするのも恐縮ですがご参考になれば幸いです。


--
Mitsukuni Sato a.k.a @key3


2013年5月12日 19:18 玉川 竜司 <drag...@gmail.com>:

--
このメールは Google グループのグループ「MongoDB JP」の登録者に送られています。
このグループから退会し、メールの受信を停止するには、mongodb-jp+...@googlegroups.com にメールを送信します。
このグループに投稿するには、mongo...@googlegroups.com にメールを送信してください。
http://groups.google.com/group/mongodb-jp?hl=ja からこのグループにアクセスしてください。
その他のオプションについては、https://groups.google.com/groups/opt_out にアクセスしてください。
 
 

Reply all
Reply to author
Forward
0 new messages