2009-05-12
■[DB]DB設計時のサイズ見積もり
ここのところ、javaccとawsに魅了されている米林です。
よく使うDB(Oracle/MySQL/PostgreSQL/SQLServer)における設計時のサイズ見積もりで使うサイトの備忘録。
あとは、OracleからのPython情報。
Oracle
Oracle 物理設計
http://www.oracle.com/technology/global/jp/columns/skillup/oracle9i/index.html
領域サイズ見積もり
http://otn.oracle.co.jp/document/estimate/index.html
OTNにログインする必要ありますがオンラインで見積もりが出来ます。
アカウント持っていない人は、この見積もりツールを使う目的でアカウントを作ってみてはいかがでしょうか。
OLTP系とDWH系においてブロックサイズを考慮し、DWH系はブロックサイズを大きくする事を知りませんでした。
MySQL4.1
各カラム型に必要な記憶容量
http://dev.mysql.com/doc/refman/4.1/ja/storage-requirements.html
テーブルの最大サイズ
http://dev.mysql.com/doc/refman/4.1/ja/table-size.html
キーに必要な領域
http://dev.mysql.com/doc/refman/4.1/ja/key-space.html
ファイル領域の管理とディスク I/O
http://dev.mysql.com/doc/refman/4.1/ja/file-space-management.html
MySQL5.1
データタイプが必要とする記憶容量
http://dev.mysql.com/doc/refman/5.1/ja/storage-requirements.html
テーブルの最大サイズ
http://dev.mysql.com/doc/refman/5.1/ja/full-table.html
キーに必要な領域
http://dev.mysql.com/doc/refman/5.1/ja/key-space.html
InnoDB ファイル領域の管理とディスク I/O
http://dev.mysql.com/doc/refman/5.1/ja/file-space-management.html
SQLServer
データベース サイズの見積もり
http://msdn.microsoft.com/ja-jp/library/ms187445.aspx
テーブル サイズの見積もり
http://msdn.microsoft.com/ja-jp/library/ms175991.aspx
ヒープ サイズの見積もり
http://msdn.microsoft.com/ja-jp/library/ms189124.aspx
クラスタ化インデックスのサイズの見積もり
http://msdn.microsoft.com/ja-jp/library/ms178085.aspx
インデックスの設計
http://msdn.microsoft.com/ja-jp/library/ms190804.aspx
PostgreSQL
テーブルの構造とディスク容量の見積もり(WEB+DB Pressの記事)
http://www2b.biglobe.ne.jp/~caco/webdb-pdfs/vol24_214-221.pdf
ディスク使用量の決定
http://www.postgresql.jp/document/pg837doc/html/disk-usage.html
個人的には、MySQLよりPostgreSQLが好きです。
Oracle以外でもオンラインで見積もり出来るところあれば良いのに。
Adding a Python Twist
DB設計とは関係無いのですが、GWにOracle's Dev2DBA Newsletterが届いて件名が "Adding a Python Twist" との事で見てみました。見ておいて損は無いのでついでに紹介します。
Tech Article: Python Data Persistence with Oracle Database
http://www.oracle.com/technology/pub/articles/vasiliev-python-persistence.html?msgid=7615911
いつぞや、mopemopeが紹介してたcx_Oracleでapache2.x, Oracle, Python, mod_pythonの構成で
PSPを使ったサンプルアプリを作りながら説明してます。
あとは
Python cx_Oracle 5.0 New Features Overview
http://www.oracle.com/technology/pub/articles/tuininga-cx_oracle.html?msgid=7615911
cx_Oracle 5.0の新機能です。
High Concurrency with Python and Oracle Database
http://www.oracle.com/technology/pub/articles/vasiliev-python-concurrency.html?msgid=7615911
こちらの記事ではmutexが出てきてますよ。
Synchronizing Access to Shared Resources
import sys import cx_Oracle import threading from xml.dom.minidom import parseString from urllib import urlopen #subclass of threading.Thread class SynchThread(threading.Thread): def __init__(self, cur, query, dom): threading.Thread.__init__(self) self.cur = cur self.query = query[1] self.tag = query[0] self.dom = dom def run(self): self.cur.execute(self.query) rslt = self.cur.fetchone()[0] self.cur.close() mutex.acquire() sal = self.dom.getElementsByTagName('salary')[0] newtag = self.dom.createElement(self.tag) newtext = self.dom.createTextNode('%s'%rslt) newtag.appendChild(newtext) sal.appendChild(newtag) mutex.release() #main thread starts here domdoc = parseString('') dbconn = cx_Oracle.connect('hr', 'hr', '127.0.0.1/XE',threaded=True) mutex = threading.Lock() queries = {} queries['avg'] = "SELECT AVG(salary) FROM employees" queries['max'] = "SELECT MAX(salary) FROM employees" th = [] for i, query in enumerate(queries.items()): cur = dbconn.cursor() th.append(SynchThread(cur, query, domdoc)) th[i].start() #forcing the main thread to wait until all child threads are done for t in th: t.join() #printing out the result xml document domdoc.writexml(sys.stdout)
Using Twisted, Python Event-Driven Framework
これもmopemopeがよく使ってるTwistedですね、Oracleよりもmopemopeは先行ってるのでしょうか。
from twisted.internet import reactor from twisted.enterprise import adbapi def printResult(rslt): print rslt[0][0] reactor.stop() if __name__ == "__main__": dbpool = adbapi.ConnectionPool('cx_Oracle', user='hr', password ='hr', dsn='127.0.0.1/XE') empno = 100 deferred = dbpool.runQuery("SELECT last_name FROM employees WHERE employee_id = :empno", {'empno':empno}) deferred.addCallback(printResult) reactor.run()
Oracleさん、素敵な情報ありがとうございます!
- 1010 http://b.hatena.ne.jp/hotentry
- 636 http://reader.livedoor.com/reader/
- 334 http://d.hatena.ne.jp/
- 238 http://b.hatena.ne.jp/hotentry/it
- 193 http://www.google.co.jp/reader/view/
- 157 http://www.google.com/reader/view/
- 136 http://phpspot.org/blog/archives/2009/05/2009512.html
- 116 http://b.hatena.ne.jp/
- 94 http://b.hatena.ne.jp/entrylist
- 82 http://www.google.co.jp/reader/view/?hl=ja&tab=wy
通りすがりの小原 2009/05/12 21:15 Oracleで容量計算だったら
ttp://otndnld.oracle.co.jp/deploy/maintenance/zip/est_tool.zip
これも結構役立ちますよ
って知ってたらごめんなさい
yone098 2009/05/12 21:39 もしかしてイケメン小原さん?
もちろんdownload済みです!
通りすがりのイケメン 2009/05/13 05:10 ばれましたか"イケメン小原さん"でした
Oracle以外知らなかったので、まとまってあると凄く便利です
ありがとうございました。ではまた明日