nosql and javascript 2013-02-09

24
NOSQL & JavaScript 4D Japan 原田 光一

Upload: wakandaja

Post on 24-May-2015

673 views

Category:

Technology


1 download

DESCRIPTION

2013年2月9日,九州産業大学『HTML5カーニバル』で使用したスライドです。

TRANSCRIPT

Page 1: NoSQL and JavaScript 2013-02-09

NOSQL & JavaScript

4D Japan原田 光一

Page 2: NoSQL and JavaScript 2013-02-09

4D について

NOSQL: WakandaRDBMS: 4D

W3C MEMBER

Page 3: NoSQL and JavaScript 2013-02-09

NOSQL

Page 4: NoSQL and JavaScript 2013-02-09

NOSQL

Page 5: NoSQL and JavaScript 2013-02-09

NOSQL

Page 6: NoSQL and JavaScript 2013-02-09

NOSQL

Page 7: NoSQL and JavaScript 2013-02-09

SQL

トランザクション強い整合性

Page 8: NoSQL and JavaScript 2013-02-09

Webサービス

Page 9: NoSQL and JavaScript 2013-02-09

Webサービス

大量のデータ素早く処理サービスの更新頻度

Page 10: NoSQL and JavaScript 2013-02-09

NOSQL

SQLで間に合わない部分

ニーズにあったDB

Page 11: NoSQL and JavaScript 2013-02-09

NOSQL ファミリードキュメントストアー

キー・バリューストアー

グラフ

オブジェクトストアー

カラムストアー

Page 12: NoSQL and JavaScript 2013-02-09

NOSQL ファミリードキュメントストアー

キー・バリューストアー

グラフ

オブジェクトストアー

カラムストアー

Page 13: NoSQL and JavaScript 2013-02-09

NOSQL ファミリードキュメントストアー

キー・バリューストアー

グラフ

オブジェクトストアー

カラムストアー

Page 14: NoSQL and JavaScript 2013-02-09

NOSQL Facts多くは スキーマ定義不要

多くは REST / JSON API を提供

多くは JSON を格納

多くは JavaScript エンジンを含む

多くは JavaScript シェルを提供

Page 15: NoSQL and JavaScript 2013-02-09

JavaScript

Page 16: NoSQL and JavaScript 2013-02-09

SpiderMonkey3 JIT Compilers: TraceMonkey, JägerMonkey, IonMonkey

V8JIT Compiler : CrankShaft

webkit JavaScriptCoreSquirrelFish Extreme: SFX aka Nitro

(JIT Compiler inside)

Chakra-> Classic JScript, Managed JScript, & JScript.NET

TamarinJIT Compiler : NanoJIT

-> ActionScript / “ECMAScript 4”

CarakanPreviously: Linear A, Linear B, Futhark

RhinoInterpreted or Compiled execution

CC++

C++Java

?

?C++

JavaScript エンジン

Page 17: NoSQL and JavaScript 2013-02-09

SpiderMonkey

V8

JavaScriptCore

Rhino

Trident / Chakra

サーバーサイドJS

Page 18: NoSQL and JavaScript 2013-02-09

JSでDBアクセス

Page 19: NoSQL and JavaScript 2013-02-09

キー・バリュー

Page 20: NoSQL and JavaScript 2013-02-09

WebStorageW3C / WHATWGHTML5

localsession‘storage’ イベント

// set or get items by methodslocalStorage.setItem("storedItem", "value");var value = localStorage.getItem("storedItem");

http://www.w3.org/TR/webstorage/

// sync interface when data change, even from other windowwindow.addEventListener("storage", handle_storage, false);

// set or get items using the store as a maplocalStorage.storedItem = value;var value = localStorage.storedItem;

// accessible only for this sessionvar foo = sessionStorage.bar;sessionStorage.bar = foo;

Note: Firefox used to propose “globalStorage”, Wakanda implements “user.storage”

Page 21: NoSQL and JavaScript 2013-02-09

Document

Page 22: NoSQL and JavaScript 2013-02-09

Indexed DatabaseHTML5同期 / 非同期インデックストランザクションカーソル

request.onerror = function(event) { // Do something with request.errorCode!};request.onsuccess = function(event) { // Do something with request.result!};

http://www.w3.org/TR/IndexedDB/

var request = indexedDB.open("MyTestDatabase", 3);

request.onupgradeneeded = function(event) { // Update object stores and indices .... }

var objectStore = db.createObjectStore("customers", { keyPath: "ssn" });

objectStore.createIndex("name", "name", { unique: false });objectStore.add({ ssn: "444-44-4444", name: "Bill", age: 35});

var transaction = db.transaction(["customers"], IDBTransaction.READ_WRITE);

Page 23: NoSQL and JavaScript 2013-02-09

Object

Page 24: NoSQL and JavaScript 2013-02-09

WakandaDBWebkit JavaScriptCore

REST / JSON

データクラス

自動更新

アクセッサー

イベント

メソッド

john = ds.Person.find("fistName eq John");

conferences = john.allConferences;

JohnJSConferences = conferences.filter("title == :1", "*JavaScript*");

JSAttendeesJohnMet = JSConferences.allPeople;

http://wakanda.org/