MongoDB

SpringDataMongoDBのアップデートを試すめも

1.0.0.M4からアップデートしてなかったので1.1.0.GAにアップデートを試みる。 以下、元のコードを変更する必要があったところのめも。 $orの書き方が変わった 旧 query.or(Query.query(Criteria.where("cnt").exists(false)), Query.query(Criteria.where("c…

SpringDataのMongoWriterの挙動めも

あんまり調べられてないけど。 なんかマルチスレッドでMongoWriter#writeを使ったとき、JVM起動直後にいくつかのドキュメントがフィールドが不足した状態でinsertされることがありました。 MongoWriter#writeを使ってる具体的なコードは以下のようなかんじ。…

MongoDBでコレクション名を変更

ちょっとわけあってコレクション名を変更してみたくなったので。 renameCollection — MongoDB Manual 2.4.8 なんかすごい簡単にできそう。 やってみる。 > show collections testCol01 testCol02 > db.testCol01.renameCollection("col01"); { "ok" : 1 } > …

MongoDBにサロゲートペアをぶちこむ

MySQLのちょっと古いバージョンだとサロゲートペアをinsertしようとしたとき、サロゲートペア以降の文字が削除された状態でinsertされたりしたのでMongoDBだとどうなるのかなという実験です。 とりあえずサロゲートペアをぶち込んで中身確認。 > db.table01.…

MongoDBで自動chunk分割がされなくてはまる

あるcollectionで以下のようにembeddedのキーをShardKeyに指定していてchunk分割されなかったのが事の発端。 test01.table01 chunks: shard01 1 { "hoge" : { $minKey : 1 }, "map.key" : { $minKey : 1 } } -->> { "hoge" : { $maxKey : 1 }, "map.key" : {…

SpringDataでMongoDBクエリ範囲指定

MongoDBの範囲指定って以下のような感じでまとめないといけないんですが、SpringDataだとこれどうやるのかなーとちょっとハマりました。 db.collection.find({ "field" : { $gt: value1, $lt: value2 } } );参考:Operators — MongoDB Manual 2.4.8 以下のよ…

MongoDBのtypeおぼえがき

Javaでlongで宣言した値をぶちこんだら「NumberLong(1)」みたいな形でMongoDBに入ってたのでなるほどこうなるのかー程度にしか思ってなかったんですが、ふと気になってほんのちょっと調査をば。 とりあえず適当にテストデータを作ります。 > db.typetest01.s…

SpringData使ってMongoDBごにょごにょ

SpringDataDocumentの1.0.0.M3を使ってごにょごにょしてたらcollectionに「_class」って名前でinsertに使ったDTOクラスが完全限定名でぶちこまれてました。 やあよ!やあよ! MorphiaだとEntityアノテーションに「noClassnameStored」って属性があったのでそ…

MongoDBでdumpとかrestoreとか

diskいっぱいになってきたのでdb.repairDatabase()で綺麗にしちゃおうかな!と軽い気持ちで実行したら「Cannot repair database」とMongoDBさんに怒られました。 db.rapairDatabase()を実行するには現在の使用disk容量と同じだけのdiskが必要になるっぽく、d…

MongoDBの$renameで遊ぶ

あるドキュメントでMapを使ってたんですが、ちょっとキー名を変更したくなったのでキー名を変更する方法をドキュメントで探してみました。Modify Documents — MongoDB Manual 2.4.8「$rename」!それっぽい! フィールド名は変更できそうだけど果たしてMapの…

moveChunkでドキュメントが消える件の検証

色々いじって確実に再現するっぽいパターンがあったのでめも。 // mongosで対象DBに入ってindex作成(いずれかをDESCに) > db.table01.ensureIndex({userId:1,targetuserId:-1}) // adminDBに入ってcollectionのSharding開始。フィールド自体は同じものを指定…

moveChunkェ…

moveChunkするとなんかたまにデータが消える。なんぞ。 複合ShardKeyを利用してる状態でとあるChunkのMinがid:"hoge"、entryId:2000とかで、 かつid:"hoge"に一致するドキュメントが2個以上あるとき、 moveChunkのfindにおける引数にMinとまったく同じ値を入…

chunkを手動で移動する

やり方ここに書いてありますがとりあえず試してみる。 moveChunk — MongoDB Manual 2.4.8 とりあえず現在のchunkの状態を確認。 > db.printShardingStatus() test2.table01 chunks: set02 19 set03 19 set01 18 migrationの後なので偏ってませんが、試しにch…

shardingェ…

shardingしてるcollectionのshardingを解除する方法がdropしかないみたいなのでやむを得ず試してみました。 drop前はdb.printShardingStatus()で表示されます。 > db.printShardingStatus() (略) test2.table01 chunks: set01 1 { "name" : { $minKey : 1 } …

chunkSizeではまる

MongoDBのShardingまわりいじっててmongosの起動の際にパラメータ指定してもなんかどうにもchunkSizeが適用されない。 configサーバのsettingsコレクションが怪しい気がする。 > db.settings.find() { "_id" : "chunksize", "value" : 64 } 1.8のデフォルト…

ReplicaSetとかShardingとかためしてみる(Sharding編)

ReplicaSetを前回のエントリで構築できたので早速Shardingの設定にいってみます。 Shardingについては以下。 とりあえずconfigサーバなるメタデータ格納用のサーバを立ち上げます。 必須パラメータは「--configsvr」です。 デフォルトでは27019ポートにバイ…

ReplicaSetとかShardingとかためしてみる(ReplicaSet編)

JavaでMongoDB読み書きとか先に試してたんですが、いずれ触ることになるのでそっちまとめる前にReplicaSetとかShardingを触ってみます。 ReplicaSetとShardingに関しては以下を。 The MongoDB 2.4 Manual — MongoDB Manual 2.4.8 The MongoDB 2.4 Manual — M…

MongoDBをさわる(DBとかコレクションとか)

前回の記事で前準備が出来たので早速DBをいじってみる。 DBをつくる いざ!と思ったもののDBの作り方さえ分からないのでhelpさんにお願いします。 > db.help() DB methods: db.addUser(username, password[, readOnly=false]) db.auth(username, password) d…

CentOS5.4でMongoDBをためす

なんか流行ってるみたいなので! 環境はCentOS5.4(64bit)。ファイルシステムはとりあえずの検証用なのでext3。 がっつりやるときext4とかに変える予定。 色々調べたもののとりあえず入れないとどうにもならないので入れてみる。 インストール yumでインスト…

スポンサーリンク