robot
最新文章(10)
Mqskit 和其它相關工具
CPython 的 GC 二、三事
寫 Mecurial Extension 是件快樂的事!
Mozilla 台灣辨公室徵人啟事
關於 Apple 的兩項專利
core dump 之前的 frame
怎麼發出 beep 聲?
先承認你要找的是奴才吧!
程式碼要清的多乾淨?
FreeBSD 的 Thread-Local Storage 實作
首頁
新編
最新留言
Entries RSS
重要關鍵字(10)
coding (122)
Python (93)
FreeBSD (71)
WEB (61)
URL (48)
hardware (46)
javascript (36)
Linux (34)
blog (30)
C++ (16)
所有關鍵字
新增 URL
In memory DBMS 4 Python
by thinker
2 Columns
關鍵字:
Python
研究
coding
在商業上,經常使用 DBMS 來儲存資料,以方便存取。通常會有一個獨立的 DBMS 來管理資料,其它的 client 則向 DBMS 發出命令。然而,有時侯一些不儲存在 DBMS 的資料;或者物件,也需要 DBMS 提供的 search 功能,以過濾一些附合條件的物件。 == In memory DBMS == In memory 物件間的關係,通常不會如 R-DBMS 般,使用 key 來進行對映。物件之間的關係,是透過物件之間的 link。In memory DBMS 維護著 object pools,當有需求時,user 指定條件,而 DBMS 則負責從 pool 裡找出物件。 == $Python$ == $Python$ 是 dynamic typing/binding 的語言,並提供 operator overloading,我們可以很輕易的使用 $Python$ 語法,定義 search 條件和運算,而不需要使用 SQL 之類的 client langauge。 下面是 in memory 的 use case: {{{ class FOO: pass class BOO: pass mFOO = DMBS.manage(FOO) mBOO = DBMS.manage(BOO) dbpool = DBMS.pool(clazz=[mFOO,mBOO], links=[(mFOO.boo, mBOO)]) dbpool.add(FOO(...)) dbpool.add(FOO(...)) ..... foo = FOO() foo.boo = BOO() dbpool.add(foo) ...... result = dbpool.find(clazz=mFOO, cond=((mFOO.x + mFOO.boo.y) < 3)) sum = result.aggregate(groupby=mFOO.num, op=DBMS.sum) }}} == R-DBMS == 這樣的 model,其實也可延伸到 R-DBMS。使用相同的介面,而 backend 是 MySQL 或 Postgres。 == 待續 == 還有許多要補充....
最後更新時間: 2006-06-25 18:31:07 CST |
引用
查詢:
COMMENTS: