Oracle Berkeley DB技術解説...Berkeley DB...
Transcript of Oracle Berkeley DB技術解説...Berkeley DB...
<Insert Picture Here>
Oracle Berkeley DB技術解説
日本オラクル株式会社
2012年2月
2Copyright © 2012, Oracle Corporation Japan. All rights reserved.
以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するものです。また、情報提供を唯一の目的とするものであり、いかなる契約にも組み込むことはできません。以下の事項は、マテリアルやコード、機能を提供することをコミットメント(確約)するものではないため、購買決定を行う際の判断材料になさらないで下さい。オラクル製品に関して記載されている機能の開発、リリースおよび時期については、弊社の裁量により決定されます。
OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国における登録商標です。文中の社名、商品名等は各社の商標または登録商標である場合があります。
3Copyright © 2012, Oracle Corporation Japan. All rights reserved.
Agenda
Berkeley DB
Berkeley DBとは
製品概要
SQL対応に関して
各機能紹介及び構成に関して
Database Mobile Server
Database Mobile Serverとは
製品概要
データ同期に関して
4Copyright © 2012, Oracle Corporation Japan. All rights reserved.
BERKELEY DB
高速組み込みデータベース
5Copyright © 2012, Oracle Corporation Japan. All rights reserved.
Berkeley DBの歴史
90年代初期、UC Berkeley校は、 AT&Tのライセンス方針の変更に伴い、 BSD UNIX標準のDatabaseであった dbm(AT&T コード)に代わるDatabaseとして、Berkeley DBを誕生させた。 Dbmのアーキテクチャを継承し
ソースコードを最適化 キーと値ペアのシンプル構造
BSD UnixのDataBaseとして誕生
Netscape社が求めた要件
高スループット(スキーマ 必要なし:オーバーヘッド尐)
高レスポンス(SQL 必要なし:オーバーヘッド尐)
アプリケーションにEmbedする方式で利用(非クラサバ)
マルチ処理の対応(ロック、トランザクション、ACID準拠機能) ツールの整備
Netscapeに採用され更に洗練される
1996年、業界スペシャリストが集まり、SleepyCat社設立 Dr. Margo Seltzer (Harvard Professor, 4.4 BSD FSys author)
Keith Bostic (2.10 BSD architect, 4.4 BSD developer)
Michael Ubell (Ingres, DEC, Britton-Lee [founder], Illustra,
Informix)
Michael Olson (Britton-Lee, Illustra, Informix)
Sleepycat社設立
Oracle corporationによる買収
Berkeley DBは、オラクルの組込みデータベースとなり、
SleepyCatメンバーはオラクルの一員となる
6Copyright © 2012, Oracle Corporation Japan. All rights reserved.
Berkeley DBとは
Berkeley DBは。。。
携帯電話の世界から株式市場のシステムに至るまで、広範囲なソリューションに利用されています。
Linuxのすべてのディストリビューション上で、また、MacOS X 、Solarisでも動作することが立証されています。
Google、Yahoo、 AOL、Ask Jeeves、 Amazon、 eBay 等々、多くのインターネットサービスにて利用されています。
世界中で、約2億台のコンピューター/デバイス上で動いています。
Berkeley DBは。。。
ソフトウエア・ライブラリの形で提供され、すべてのプログラムソースが完全公開されます。
高スループット、高レスポンス、低レイテンシを実現します。
小さいFootPrintで動作します。
導入後のDB管理を必要としません。
マルチスレッド、リカバリ機能もサポートしています。
Single Master Multi Replica によるHA機能を提供します。
7Copyright © 2012, Oracle Corporation Japan. All rights reserved.
製品構成と概要
Open Source
Dual License Model
Public License + Commercial License
+
•開発(社内利用)やAPソースコードを公開する場合は無償
•機器、ソフトウェアに組み込んだり、APソースコードを公開しない場合は有償
• Berkeley DBのPure Java対応版• Java環境に最適化された実装
•オリジナルのトランザクション対応ストレージ・エンジン• C/C++、Java、PHP、Perl等のAPIを提供
• Berkeley DBのXML拡張• Xquery, XPahtを提供
11gR2でSQL対応
Berkley DB SQL
SQL
Compiler
Vurtual
Machine
SQLite
API
+
•組み込みデータベースとして広く普及しているSQLiteと完全互換
• 1M程度のフットプリント•高度なロックメカニズムによるマルチプロセス/
スレッド対応、ストレージI/Oの最適化等により高性能を実現
• Berkeley DBの堅牢性、高信頼性を継承• オラクルによる保守サポート
8Copyright © 2012, Oracle Corporation Japan. All rights reserved.
Feature Set(ライセンス)と概要
Edition Feature Set複数レコード同時読込み
読込み、書込み同時実行
複数レコード同時書込み
トランザクション
保証とリカバリレプリケーション
機能
High Availability○ ○ ○ ○ ○
Transactional Data Store○ ○ ○ ○ ×
Concurrent Data Store○ ○ × × ×
Data Store○ × × × ×
High Availability○ ○ ○ ○ ○
Transactional Data Store○ ○ ○ ○ ×
Concurrent Data Store○ ○ × × ×
Data Store------- ------- ------- ------- -------
High Availability○ ○ ○ ○ ○
Transactional Data Store○ ○ ○ ○ ×
Concurrent Data Store○ ○ × × ×
Data Store○ × × × ×
Berkeley DB
Berkeley DB
Java Edition
Berkeley DB
XML
【補足1】 High Availability
Transactional Data Store
Concurrent Data Store
Data Store
Berkeley DBをフルスペックで利用可能なセットです。
複数レコードに対し同時Read&Writeが可能で、トランザクション保証とリカバリ機能も含まれます。
Read、Writeを同時に行なう事が出来ません。読込み処理中心のDBに適したセットです。
単一レコードに対する書込みと同時に、複数セッションからの読込みが可能となります。
【補足2】 SQL互換機能を利用の場合は、Berkeley DB Transactional Data Store 以上をご購入下さい。
9Copyright © 2012, Oracle Corporation Japan. All rights reserved.
SQL対応:概要
BDB 11gR2 implements the "backend" (blue box)
components using the BDB storage engine.
Oracle Berkeley DB (BDB)業界をリードするKey-Value型のオープン・ソース組み込みDBであり、高速で信頼性の高いデータ永続化を、ゼロ・アドミニストレーションを必要とするアプリケーションに提供します。
SQLite
ACID準拠のリレーショナル型組み込みデータベースであり、軽量なC プログラム・ライブラリです。
Berkeley DB 11gR2
両方の強みを持つデータベースです。
スモール・フットプリントの高速かつ拡張性が高く、信頼性の高い組み込みデータベース・ライブラリです。また、SQLをでの開発を可能とし、ゼロ・アドミニストレーションを実現することができます。
10Copyright © 2012, Oracle Corporation Japan. All rights reserved.
SQL対応:アーキテクチャ
sqlite3, JDBC, ODBC 各APIのサポートSQLite 3.6.21 interface を実装容易にライブラリの入れ替えが可能
Enhances SQLite:コンカレンシー、パフォーマンス、スケーラビリティの向上テラバイトのデータ、数十億のレコードをハンドリングBerkeley DBとして数多くの実績
Storage Adapter
sqlite3(), ODBC,
JDBC APIs
Tokenizer Parser Generator
Virtual Machine
Oracle Berkeley DB SQL
SQLite Library
Concurrent B-TreePage Cache Transaction Logs
BDB Library
11Copyright © 2012, Oracle Corporation Japan. All rights reserved.
サポート機能及びプラットフォーム
Linux / Android
Windows XP, Vista
Mac OS/X
Several different embedded Linux distributions
Std Posix Unix variants: Solaris, HP/UX, etc.
Almost Full SQL92 Support
Dynamic SQL
Triggers
Prepared Statements
Conditional Clauses
Cancel of SQL
ODBC
JDBC
ADO.NET
C/C++ API
JAVA
PHP
PYTHON
…
Most tools available for SQLite
BDB Utilities
sqlite3 Shell Command
Dump / Load Commands
Database Consistency Checking
SQLite R-Trees
SQLite Full Text Search
Integration with Oracle DatabaseMobile Server for SQL data
Bfile対応
Heapアクセスメソッド
OS SupportSQLite SQL Compliance Drivers
API Available ToolsAdditional Features
12Copyright © 2012, Oracle Corporation Japan. All rights reserved.
Berkeley DBのデータ構造
KEY プライマリデータベース: employee.dbDATA
キー / データペア と 5タイプのアクセス・メソッド
+
+
型にとらわれずに自由にデータを入れることが出来る Cの構造体などもそのままDATA部分に格納出来る それにより、一つのKeyにつきn個のカラムをもったレコードとして扱える
一意キーでデータに素早くアクセス 重複キー許可で複数データを扱う 5つのアクセスメソッドから選択
First name Last name Phone number City State ZipFirst name Last name Phone number City State Zip
IDID
ID First name Last name Phone number City State Zip
B-tree Hash Queue 又は Recno
シーケンシャルデータの高速化 ランダムな大量データの高速化メモリがたくさんある時
Queue形式や特定のキーが存在しないデータを扱う時
Heap
データの挿入、削除のみのオペレーションが多い時
13Copyright © 2012, Oracle Corporation Japan. All rights reserved.
データ・アクセスーデータ挿入
DBT dbtk, dbtd;
/* 挿入するキー/データペア */
char *key = “0001”;struct employee_data data = {“Takao”,“Endo”,”03-XXXX-XXXX”, “Chiyoda-ku”, “Tokyo”,”102”};
/* DBT構造体をクリア */
memset(&dbtk, 0, sizeof(DBT));
memset(& dbtd, 0, sizeof(DBT));
/* キーとデータを格納するDBT構造体を設定。dataメンバーはポインタ、sizeメンバーはバイト数を設定 */
dbtk.data = key, dbtk.size = strlen(key);
dbtd.data = &data, dbtd.size = sizeof(data);
/* キー/データペアを挿入*/
CHECK_ERR(pDb->put (pDb, NULL, &dbtk, &dbtd, 0));
データ挿入のコード例
プログラマにとって分かりやすいAPI: Keyを指定してget() / put() の操作が基本
First name Last name Phone number City State Zip
プライマリデータベース: employee.db
ID +
KEY DATA+
14Copyright © 2012, Oracle Corporation Japan. All rights reserved.
セカンダリ・インデックス
+
Last nameへのセカンダリインデックスの例 Last name へのセカンダリインデックスを作成 Last name データ部分への高速アクセス Last name を検索条件にして該当レコードへアクセス プライマリインデックスと違う種類のインデックスも可
Last name ID セカンダリインデックス : lastName.db
ID First name Last name Phone number City State Zip
KEY プライマリデータベース: employee.dbDATA
+
KEY以外の値を基にレコードを検索するための仕組み
Last nameが、セカンダリインデックスのキーとなる
プライマリ
セカンダリー
自動連携
15Copyright © 2012, Oracle Corporation Japan. All rights reserved.
カーソルの利用による範囲検索
全データベースの走査が必要
カーソルを使用しない場合
全データベース走査しないためデータへ高速アクセスする
カーソルを使用する場合
シーケンシャルデータを高速アクセス
Next Next Next
Cursorの特徴 あるキーから前方または後方にキー/データ・ペアを取得シーケンシャルにデータにアクセスする際に使用重複したキーを持つレコードにアクセスする際に使用
カーソルはデータへの高速アクセスを提供する
商用PC上で、秒間数百万件という検索スピード
16Copyright © 2012, Oracle Corporation Japan. All rights reserved.
DB環境(Env)による統合制御
Last name
複数DB間で、トランザクション・ロック・メモリプール等を統合可能
employee.db
department.db
lastName.db
deptName.db
log.0000000002log.0000000001
__db.002__db.001
ENV: Company
+First name Last name Phone number City State ZipFirst name Last name Phone number City State ZipIDIDID First name Last name Phone number City State Zip
プライマリデータベース: employee.db
Last name ID
セカンダリインデックス : lastName.db
IDIDLast name
• トランザクション• メモリプール•ロック•ログ
統合された環境として、情報・ステータスの共有が可能に
トランザクションON/OFF、ロギングON/OFF、排他処理ON/OFF, リカバリON/OFF の設定環境内のデータに対する操作は、2フェーズコミットなしで1つのトランザクションでカプセル化環境中の最近アクセスされた全てのデータは、統合されたメモリプールにキャッシュ
17Copyright © 2012, Oracle Corporation Japan. All rights reserved.
トランザクション
Berkeley DBのトランザクションは
コミットされたトランザクションは保障されるグループコミットにより、I/Oのボトルネックを尐なく トランザクションログを用いて、システム障害時にリカバリー可
トランザクション:ACID特性と障害回復性を提供
ACID特性とは
A (Atomicity:原子性)複数の更新作業を一連の操作としてまとめて処理します。すべてが完全に実行されるか、処理が完結しない場合には元の状態に戻ります。
C (Consistency:一貫性)
I (Isolation:独立性)
D (Durability:永続性)
更新が完了するまでそれを他から隠すことができます。処理の順番に関わらず結果が同じになります。
他のトランザクションの影響を受けません。Serializable・Read Committed・Read UnCommitted
の3つのレベルに対応。マルチバージョン・コンカレンシー・コントロールに対応。
システムやアプリケーションに問題が発生してもデータが保護されます。
18Copyright © 2012, Oracle Corporation Japan. All rights reserved.
組み込み利用企業
Financial
Services
Service
Providers
Content
Mgmt
Storage & Sys
Mgmt
Enterprise
Infra/EAISecurityNetworking
Telecom
Applications
infrastructure
Devices/
Appliances
Berkeley DB
19Copyright © 2012, Oracle Corporation Japan. All rights reserved.
オープンソース利用例
Berkeley DB
All versions
of Linux
All versions
of BSD UNIX
Apache Web Server,
Directory, et al
LDAP Directory
Productivity suite
Chandler email/PIM
Website traffic
analysis
Kerberos Network
Authentication
Database
Subversion version
control system
Red Hat Package
Manager
Internet search
Text editorMail server (MTA)
Mail server (MTA)
SquidGuard
spam blocker
Spam blocker
Perl
Python
GNU C library
PHP
EmailApplicationsInfrastructure Programming
LanguagesToolsOperating
Systems
20Copyright © 2012, Oracle Corporation Japan. All rights reserved.
DATABASE MOBILE SERVER
バックエンド・データベースとの連携
21Copyright © 2012, Oracle Corporation Japan. All rights reserved.
Database Mobile Serverとは
Database Mobile Serverは。。。
企業内データを広く利用したい。
企業内に分散したデータを効率良く集めたい。
モバイル端末でのアプリケーションが必須である。
通信が途切れてもサービスを継続する必要がある。
セキュリティが気になる。
端末及びユーザの管理が必要である。
Database Mobile Serverは。。。
クライアント端末とのデータ同期機能を提供します。
クライアントへのアプリケーションの配布及び管理機能を提供します。
HTTPSを利用したセキュアなデータ転送を実現します。
ユーザ及び端末の概念を持ち、それらの管理が行えます。
ユーザ毎のアプリケーション、データの管理を実現します。
22Copyright © 2012, Oracle Corporation Japan. All rights reserved.
全体像
Database Mobile Serverの構成
Database Moblie Server データベース自動販売機
料金精算機
POSレジ・ATM
カーナビ・車載機携帯電話・PDA
情報家電
FA機器・製造ライン
医療・臨床検査機器
クライアント
Network
HTTP/HTTPS
圧縮機能差分同期 ユーザ管理
アプリケーション管理実行ログ/ステータス管理Web管理ツールスクリプト管理ツール設定/開発ツール
SQL
ODBC/JDBC
暗号化同期API
開発/運用端末
ユーザ・データリポジトリ
23Copyright © 2012, Oracle Corporation Japan. All rights reserved.
コンポーネント
Database Mobile Serverの構成コンポーネント
アプリケーション・サーバ
データ同期を実現する中間層サーバ。Java EEアプリケーション・サーバ。
Oracle Weblogic Server
Oracle Glassfish
Oracle Application Server(※.既存でご利用のお客様)
Mobile Manager
アプリケーション・サーバ上で動作する管理サーバ。
管理UIを利用し、ノード、ユーザ、デバイス、ユーザ・アプリケーションを管理。
Mobile Development Kit(MDK)
開発ツール及びSDK
アプリケーションのパッケージング、データ同期の定義。
モバイル・クライアント
データ同期コンポーネント、デバイス・マネージャ等
24Copyright © 2012, Oracle Corporation Japan. All rights reserved.
データ同期
データ同期における動作
Message Generator Process(MGP)によるキュー・ベース・アーキテクチャ
Apply/Compose Phaseでのカスタマイズ及び事前・事後作業の実装可能
In Queue
Out Queue
Upload
Download
Apply
ComposeMGP
Database Mobile Server
25Copyright © 2012, Oracle Corporation Japan. All rights reserved.
クライアント・アプリケーション
クライアント・アプリケーションの構成及びコンポーネント
Database Access API
Sync Module
Sync API
User ApplicationDevice
Manager
Database
Mobile
Server
データ同期
デバイス管理
クライアント
26Copyright © 2012, Oracle Corporation Japan. All rights reserved.
開発ツール
Package Wizard
アプリケーションのパッケージング
Mobile Serverへのデプロイ
Mobile Database Workbench(MDW)
モバイル・データベースのデザイン
スキーマ定義
データ同期設定
定義情報の反映
JDeveloper
データベース・アプリケーションの構築
データ同期APIを利用したカスタムデータ同期の実装
Java既存ツール、再利用コンポーネントとの効果的な実装
27Copyright © 2012, Oracle Corporation Japan. All rights reserved.
同期オブジェクトとユーザの概念
ユーザA
ユーザB
ユーザC
サブスクリプション・パラメータ同一定義でユーザ毎に利用データの分割を実現
パブリケーション(データ定義)パブリケーション・アイテムをまとめたものパブリケーション・アイテムはクライアントで利用するテーブル等のスキーマ・オブジェクト
アプリケーションファイルクライアントで動作するアプリケーションファイル群
アプリケーション
アプリケーション
アプリケーション
28Copyright © 2012, Oracle Corporation Japan. All rights reserved.
サブスクリプションとパブリケーション
同期データ定義様々なSQLで必要なデータのみを抽出
サブスクリプション・パラメータを利用し、パブリケーション・アイテムで定義された同期データをユーザ毎に分割し、配布可能
ユーザID 契約タイプ 日時 ステータス
1001 Type A 2011/01/31 無効
1001 Type C 2011/04/14 有効
1002 Type A 2011/03/24 無効
1002 Type B 2011/05/29 有効
1002 Type D 2011/08/30 有効
1003 Type B 2011/03/12 無効
1003 Type E 2011/09/29 有効
ユーザA
ユーザB
ユーザC
Select ユーザID,
契約タイプ,
日時From 契約履歴Whereステータス = “有効”AndユーザID = :User_ID
User_ID = 1001
User_ID = 1002
User_ID = 1003
契約履歴
29Copyright © 2012, Oracle Corporation Japan. All rights reserved.
プラットフォーム
OS Platform Family OS Platform Version
Windows 32/64 bit XP, 2003, Vista, 2008, 7
AIX 5L/6L
version 5.2 (Maintenance Level 4 or higher)
and 5.3 (Maintenance Level 7 or higher),
version 6.1
HP/UX HP-UX 11i (version 11.11, 11.23, 11.31)
Linux
Red Hat Enterprise Linux AS 3/4/5,
Oracle Enterprise Linux 4/5,
SUSE Linux ES 9
Sun Solaris 8.0, 9.0, 10.0
30Copyright © 2012, Oracle Corporation Japan. All rights reserved.
モバイル・クライアント・プラットフォーム
OS Platform Family OS Platform Version Chipset
Windows 32/64 bit 2003, XP, Vista, 2008, 7 x86
Windows CE Windows Mobile 6, 6.1ARMV4, Intel
xScale
Linux Redhat 4.0 and above x86
Android 1.5 and above
BlackBerry 5.0
JavaSE, SE Embedded
OJEC, CDC being investigated
31Copyright © 2012, Oracle Corporation Japan. All rights reserved.
イベント情報
Oracle OpenWorld Tokyo
~ ENGINEERED FOR INNOVATION ~http://www.oracle.com/openworld/jp-ja/index.html
M2Mが変革するビジネスモデルとライフスタイル-実用段階を迎えたM2Mサービス基盤のあるべき姿
https://oj-events.jp/public/session/view/237