db4o

db4objects Versantにdb4o事業を売却

今日知った。びっくりしたよ。 db4objects, Inc. sells its object database business to Versant Corporation in order to focus on Servo, its ground-breaking user data management service db4o Java & .NET Object Database News Release 12-04-2008db…

db4ro

rubyforge db4ro Project Infodb4oのRubyバインディングってないのかなと思ったら、あるんだ。(プロジェクト自体、あまり動いていないみたいだけど) 相性良いと思うんだけどな。

Once again

db4object dVP Awards 2009今年度も継続して受賞となった。 とても有り難いことだが、日記では直接話題に採りあげることもできなかったので、心苦しくもある。 使える仕事は無いかと密かに日々の案件に目を光らせているのだが、私の仕事はエンベデッド系では…

アメリカンサイズ(Thank you Gift)

以前にdb4objectsのdVPアワードを受賞したことを書いたが、受賞の景品として送られてきたマグカップが昨日届いた。German Viscuso氏とのメールのやりとりの中で、景品としてマグカップを希望した際に「ビッグとノーマル、どっちのサイズが良い?」と聞かれた…

awarded dVP2008

光栄にもdb4objectsが選ぶ今年度の"db4o most Valuable Professional"、略してdVPに選出されたらしい。少しの間db4oに関するエントリを書いていた時期があったが、それが目に留まったのだそうだ。(先ほどのGerman Viscuso氏からのコメントはその連絡だった) …

Db4o.openClientはスレッドセイフではない?

db4o(リモート)サーバに接続するための同メソッドだが、どうやらスレッドセイフではないらしく ObjectContainer oc = Db4o.openClient("localhost", 0xdb40, "db4o", "db4o"); 同一仮想マシンからマルチスレッドで同メソッドを呼び出すと、ログインに失敗す…

db4o その24 (クエリ評価モード)

db4oは最新のver6.0以降、クエリの評価モードを変更することが可能になっている。 クエリモードは以下のイディオムで変更する。 Db4o.configure().queries().evaluationMode(QueryEvaluationMode mode); 現在、db4oのクエリ評価モード(QueryEvaluationMode)…

db4o Version 6.3

db4o開発版のVersion 6.3がアップされたようだ。Version 6.3 introduces Transparent Activation and more 気になる変更点だが、 Transparent Activation A very efficient and robust BTree-based FreespaceManager Completed runtime exception hierarchy …

db4o その23(RDBからのデータ取り込み)

db4oに関して基本機能の一通りの評価が終わったので次の段階に入る。次の段階では今までRDBで運用していたデータをdb4oに取り込み、RDBと同期させる機能を実装すると共に、RDBとの比較を行っていく予定だ。・RDB->db4oへのデータの取り込み dRSのエントリで…

db4o その23(インデクス)

db4oのインデクスに関してはまだ言及していなかった。 db4oは参照クエリの性能向上のために、B-tree構造のインデクスを任意のフィールドに簡単に設定することができる。PlayerImplクラスの選手名"name"フィールドにインデクスを設定するコードは以下のように…

db4o その22(レプリケーションによるオブジェクトの構造の変化とインデクス)

レプリケーションの完了した"src.db"及び"dst.db"に格納されているPlayerImplクラスの構造をObjectManagerで見てみたのが以下のスクリーンショットだ。 一見して解るが、先頭にバージョン番号、次にUUIDが付加されている。(v4overrsion, v4ouuid) これこそが…

db4o その20(レプリケーション) 修正

db4o-dRSにおけるレプリケーション処理に関して根本的な誤解をしていたので、書き直す。誤 レプリケーションを実行する dRSによるレプリケーション処理は自動で行われる訳ではなく、現在までに発生している変更差分を取り出してそれを対象に明示的にレプリケ…

J2SE7とプロパティサポート

Java SE 7の「プロパティ」が見えてきた - setter/getterのないJavaへうーん、J2SE7まで待てないかも。現在はdb4oの評価を行っていることもあってJavaをメインに使っている(db4oは.NETもサポートしているのだが対応するプラットホームの数を考えるとJavaを優…

db4o その20(レプリケーション)

データベースのレプリケーションとはデータベースの冗長性を高めたり、負荷分散を実現する手段としてその複製を作る処理をことを指す。db4oは元々レプリケーション用のAPIを実装しており、自身のデータベースを簡単に複製することができる。レプリケーション…

db4o その19(StoredField#get()のbug)

先日のエントリでは、db4oにおけるフィールドの型が変更された場合の振舞いと、データベースに格納されているオブジェクトのデータからメタデータを抽出する方法について言及したが、StoredField#getメソッドを使用してデータベースに格納されているオブジェ…

db4o その18(自動リファクタリングの対象外なこと)

先日はdb4oにおけるスキーマ・エボリューションと同等の機能である自動リファクタリングに関して言及した。 自動リファクタリングのサンプルではIPlayerインタフェースにアクセスするフィールドを追加する例で説明したが、ではその逆にIPlayerインタフェース…

db4o その17(スキーマエボリューションと自動リファクタリング)

以前にOODBの弱点とdb4oというエントリでOODBの弱点について多少言及したが、実は私が最初にOODBのことを知った時はもっと別な点を懸念していた。それはOODBは他のアーキテクチャのデータベース(構造型、ネットワーク型又はリレーショナル型)に比べてデータ…

db4o その16 (コミット時コールバックの罠)

先日言及したコミット時コールバックに関してだが、例えばコミット完了時に「トランザクションのコンテキスト内で追加されたオブジェクト」を全てtoString()メソッドでダンプするには以下のように記述する。 ObjectContainer db = Db4o.openFile("roster.db"…

db4o その15(コールバック その2)

先日言及した「コミット時のコールバック」に関して注意すべきことが見つかったので言及しておく。 以前にも書いたが、db4oのデータベースをオープンするモードはその処理形態によって以下のように大別される。 組込みモード ネットワークモード 実はこれら…

db4o その15(コールバック その1)

先日の同タイトルのエントリ中で書いた。 例えばdb4oの全てのデータ操作をジャーナルログとして書き出すような処理を書くことを考えているが、そのような用途にはIoAdapterを拡張するのが最も簡単だろう。 少し考えれば解ることなのだが、IoAdapter及びその…

db4o 6.2.501

Newsletter #31 - db4o 6.2.501 adds Committed Callbacksdb4oの開発版であるver6.2は最新の6.2.501がアップされているが、このバージョンは先日言及したCachedIoAdapterクラスにおけるbackupメソッドのバグがfixされていることを先ほど確認した。

db4o その13(IoAdapter)

前回書いたと思うが、db4oのI/O処理を司る部分はプラガブルになっており挿げ替えることが可能になっている。具体的にはIoAdapterという抽象クラスがI/O処理の対象になっており、ピアとなるサブクラスにより実際のI/Oが実行される仕組みだ。IoAdapterクラス(…

db4o その14(シェル)

db4oにはシェルというか、データベースを簡単に操作するためのコンソールやコマンドが用意されていない。単にアプリケーションからデータベースを操作するだけではなくなんらかの管理やテストを行う場合シェルからデータベースを操作できると便利、というか…

db4o その12 (The Definitive Guide )

私がdb4oの技術情報を得るためには、以下の方法がある。・ダウンロードしたアーカイブに収録されているリファレンスドキュメント(英語)を読む ・開発者ポータルを経由して入手できるドキュメント(英語)を読む ・開発者ポータルを経由してユーザフォーラムの…

db4o その11 (ホットバックアップとバグ)

データベースのバックアップ、それもオンライン状態でのホットバックアップ機能は非常に重要だが、db4oはサーバ側で主に使用するObjectServerインタフェースの拡張インタフェースである、ExtObjectServerインタフェースにメソッドとして用意されている。 pub…

OODBの弱点とdb4o

コンパクトで速くて簡単に使えるのでとても気に入っているdb4oだが、決して万能ではなく、使っているとOODBであるが故の弱点も見えてくる。一つは散々既出だろうがなんといってもデータベース操作の方法が標準化されていない(オープンになっていないという意…

db4objects その9(トランザクション)

前回はdb4oの更新処理について言及したが、今回はそれに伴って制御が必要なトランザクションについて言及する。 db4oは他の一般的なDBMS同様にACIDトランザクションを提供するが、管理するトランザクション境界は非常にシンプルであり基本的には・暗黙的なト…

db4o その10(NQの不具合とキャッシュ)

db4oのネィティブクエリ(NQ)だが、使い方によっては意図しない結果になる不具合?があることが判ったので書いておく。今までのサンプルでも使用した"roster.db"で以下の順で処理を行うとする。 守備位置が"SS"である選手をNQで検索 (D.Jeterが結果に掛かるは…

db4o その8(登録、更新、削除)

クエリについては一通り言及したので、今回からはデータベースの更新(登録、変更、削除)について言及しようと思う。 RDB(リレーショナルデータベース)では表のデータを更新するためには専用のDML(Data Manipulation Language)を使い、クエリでSQLを発行した…

db4o その7(オブジェクト階層へのクエリ)

現在までにdb4oのクエリにおける3つの手法について言及してきた。 Query by Example (以降QBE) Native Query (以降NQ) Simple Object Database Access Query(以降SODA) これらクエリの例として今まではフラットな構造のオブジェクトに限定してきたが、いつも…