[#950] ruby 1.1b0 released — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

33 messages 1997/12/05

[#998] ruby 1.1b1 released — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

48 messages 1997/12/09
[#1011] Re: ruby 1.1b1 released — Kazuhisa Yanagawa <katze@...> 1997/12/10

in message-id: <199712090833.RAA31727@picachu.netlab.co.jp>

[#1013] Re: ruby 1.1b1 released — matz@... (Yukihiro Matsumoto) 1997/12/10

まつもと ゆきひろです

[#1028] Regexp#operators (Re: ruby 1.1b1 released) — Shin-ichiro HARA <sinara@...> 1997/12/10

原です。

[#1030] Re: Regexp#operators (Re: ruby 1.1b1 released) — matz@... (Yukihiro Matsumoto) 1997/12/10

まつもと ゆきひろです

[#1033] Re: Regexp#operators (Re: ruby 1.1b1 released) — Shin-ichiro HARA <sinara@...> 1997/12/10

原です。

[#1049] Re: Regexp#operators (Re: ruby 1.1b1 released) — Shin-ichiro HARA <sinara@...> 1997/12/11

原です。

[#1064] Re: Regexp#operators (Re: ruby 1.1b1 released) — matz@... (Yukihiro Matsumoto) 1997/12/12

まつもと ゆきひろです

[#1097] Re: Regexp#operators (Re: ruby 1.1b1 released) — Shin-ichiro HARA <sinara@...> 1997/12/15

原です。

[#1002] Object#bind — shugo@... (Shugo Maeda)

前田です。

39 messages 1997/12/09
[#1008] Re: Object#bind — matz@... (Yukihiro Matsumoto) 1997/12/10

まつもと ゆきひろです

[#1023] Re: Object#bind — shugo@... (Shugo Maeda) 1997/12/10

前田です。

[#1026] Re: Object#bind — matz@... (Yukihiro Matsumoto) 1997/12/10

まつもと ゆきひろです

[#1044] Re: Object#bind — keiju@... (石塚圭樹 ) 1997/12/11

けいじゅ@日本ラショナルソフトウェアです.

[#1051] Re: Object#bind — shugo@... (Shugo Maeda) 1997/12/11

前田です。

[#1063] Re: Object#bind — matz@... (Yukihiro Matsumoto) 1997/12/12

まつもと ゆきひろです

[#1079] Re: Object#bind — keiju@... (石塚圭樹 ) 1997/12/14

けいじゅ@日本ラショナルソフトウェアです.

[#1084] Re: Object#bind — matz@... (Yukihiro Matsumoto) 1997/12/15

まつもと ゆきひろです

[#1087] Re: Object#bind — keiju@... (石塚圭樹 ) 1997/12/15

けいじゅ@日本ラショナルソフトウェアです.

[#1088] Re: Object#bind — matz@... (Yukihiro Matsumoto) 1997/12/15

まつもと ゆきひろです

[#1085] [Req] object refference — keiju@... (Keiju ISHITSUKA)

けいじゅ@日本ラショナルソフトウェアです.

12 messages 1997/12/15

[ruby-dev:1035] ObjectDBM [ Re: Object#bind ]

From: keiju@... (石塚圭樹 )
Date: 1997-12-10 11:37:04 UTC
List: ruby-dev #1035
けいじゅ@日本ラショナルソフトウェアです.

In [ruby-dev :01009 ] the message: "[ruby-dev:1009] Re: Object#bind ",
on Dec/10 11:38(JST) matz@netlab.co.jp (Yukihiro Matsumoto) writes:

>まつもと ゆきひろです

>|現在は別件を開発中でrubyタイムはすべてそちらに回されているのでした. 
>
>なにをやっているんだろう?

オブジェクト指向データベース風オブジェクトベースdbmです.

前に, 松本氏がMarshalベースで簡単なオブジェクト指向データベース(?)を作
成しましたが, あれを, dbmベースにしたものだと思って下さい. rootオブジェ
クトから先をmarshalを使ってdbmにしまい込みます.

あと, 特徴としては, キャッシングを行なっていることですね. read/write用
にキャッシュを持っています.

機能的には, 以下のようになっています:

class ObjectDBM
  include Enumerable

  def [](key, mode = nil)
  def update(key, obj = nil)
  def []=(key, obj)
  def delete(key)
  def indexes(*keys)
  def roots
  alias keys roots
  def size
  def roots(mode = nil)
  alias values roots

  def has_root_name?(root_name)
  alias root_name? has_root_name?
  alias include? has_root_name?
  def has_root?(root)
  alias root? has_root?

  def each(mode = nil)
  alias each_pair each
  def each_root_name
  alias each_key each_root_name
  def each_root(mode = nil)
  alias each_value each_root

  def transaction(mode = READ_CACHING)

  class Transaction
  class StaticTransaction < Transaction
  class DynamicTransaction < Transaction
end

こんな感じで使います.

odbm = ObjectDBM.new(db_name)
odbm.transaction do
  odbm[key] = Foo.new
end

odbm.transaction do
  foo = odbm[key]
  foo.bar = Bar.new
  odbm.update(key)
end

odbm.transaction do
  |txn1|
  odbm[key1] = Bar.new
  odbm.transaction do
    |txn2|
    odbm[key2] = Bar.new
    txn1.abort
  end
end

意外と使えるものになるのではないかなと思っています.

一度完成したのですが, 入れ子トランザクションを実装するために大幅に書換
え中でした. 

きれいな実装にするためにだいぶ悩みましたが, どうにか満足いくものになった
ようです(^^;;;

1.abortしたときは, そのアボートしたトランザクションの子どものトランザ
  クションもabortする.
2.commitしたときは, そのアボートしたトランザクションの子どものトランザ
  クションもcommitする.
3.例外でtransactionブロックを抜けた時にはabortする.
4.例外以外(catch/returnなど)でtransactionブロックを抜けた時にはcommit
  する.

って, 感じの実装だったのですが, 4.はensureで受けなくてはならないのです
が, 1-3もensureを通ることになりますので, ちょっと工夫が必要になりまし
た.


__
................................石塚 圭樹@日本ラショナルソフトェア...
----------------------------------->> e-mail: keiju@rational.com <<---

In This Thread