Movatterモバイル変換


[0]ホーム

URL:


SlideShare a Scribd company logo

Hotcode 2013: Javascript in a database (Part 1)

2 likes2,653 views
ArangoDB Database
ArangoDB Database

This document discusses using JavaScript in databases. It describes how JavaScript can be used in the database for transactions defined as functions, graph traversal, and having no backend code, just an API. It provides examples of using JavaScript for transactions and graph traversal in ArangoDB.

1 of 23
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
JavaScript in the DatabaseFrank Celler & Lucas Dohmenwww.arangodb.org (c) f.celler@triagens.deSamstag, 1. Juni 13
The NoSQL Movementwww.arangodb.org (c) f.celler@triagens.deSamstag, 1. Juni 13
CAPwww.arangodb.org (c) f.celler@triagens.deACIDBASESamstag, 1. Juni 13
www.arangodb.org (c) f.celler@triagens.denosql.eventbrite.comdistributed structureddata storageSamstag, 1. Juni 13
Your EntitiesA Person has aName, first and lastone or more addresses, emails,telephonea list of hobbies, skills, tagswww.arangodb.org (c) f.celler@triagens.deSamstag, 1. Juni 13
Relational Worldwww.arangodb.org (c) f.celler@triagens.dePersonPersonPersonAddressAddressAddressHobbyHobbyHobbyemailemailemailn-to-mn-to-mn-to-mn-to-mn-to-mn-to-mn-to-mn-to-mn-to-mSamstag, 1. Juni 13
Use AggregatesDo not Normalizewww.arangodb.org (c) f.celler@triagens.de{ name: { first: „Frank“, last: „Celler“ },address: { home: { street: „...“, city: „...“ } },email: { work: „frank@celler.de“ },hobbies: [ „C++“, „MRuby“, „JavaScript“ ] }Samstag, 1. Juni 13
Document Databasesdocuments can beas simple as key/value mapsor as complex as lists containing embeddedsub-documentsor anything in betweenrepresentated in JSONSchema-lesswww.arangodb.org (c) f.celler@triagens.deSamstag, 1. Juni 13
www.arangodb.org (c) f.celler@triagens.de 9Samstag, 1. Juni 13
www.arangodb.org (c) f.celler@triagens.de 10Analytic Processing DBsTransaction Processing DBsManaging the evolving state of an IT systemMap/ReduceGraphsExtensibilityKey/ValueColumn-StoresComplexQueriesStructuredDataMassivelyDistributedDocumentsSamstag, 1. Juni 13
Property Graphswww.arangodb.org (c) f.celler@triagens.deType: inproceedingTitle: Finite Size EffectsType: proceedingTitle: Neural ModelingType: personName: Anthony C. C. CoolenLabel: writtenLabel: publishedPages: 99-120Type: personName: Snchez-AndrsLabel: editedJust DocumentsSamstag, 1. Juni 13
Multi-Model Databaseswww.arangodb.org (c) f.celler@triagens.devertices and edges are documentsquery them using geo-index, full-text,SQL-like queriesrelations are expressed as graphstraverse them using graph algorithmsSamstag, 1. Juni 13
ArangoDB.explain()www.arangodb.org (c) f.celler@triagens.de{"type": "NoSQL database","model": [ "document", "graph", "key-value" ],"openSource": true,"license“: "apache","version": 1.3,"builtWith": [ "C", "C++", "js" ],"Javascript": [ "client side", "server side" ],"uses": [ "V8" ]}Samstag, 1. Juni 13
Why Use JavaScript?www.arangodb.org (c) f.celler@triagens.deSamstag, 1. Juni 13
JavaScript Everywherein the BrowserApplication-Layer (Node.JS)Databasewww.arangodb.org (c) f.celler@triagens.deSamstag, 1. Juni 13
Why is Node not enough?www.arangodb.org (c) f.celler@triagens.deSamstag, 1. Juni 13
JavaScript in a DatabaseMVC in the Browser and/or NODE.JSScript-Language in the DB fortransactions as functionsgraph traversalno-backend, just APIwww.arangodb.org (c) f.celler@triagens.deSamstag, 1. Juni 13
db._create("accounts");db.accounts.save({ _key: "john", amount: 423 });db.accounts.save({ _key: "fred", amount: 197 });db._executeTransaction({collections: {write: "accounts"},params: {user1: "fred",user2: "john",amount: 10},action: function (params) {var db = require("internal").db;var account1 = db.accounts.document(params['user1']);var account2 = db.accounts.document(params['user2']);var amount = params['amount'];if (account1.amount < amount) {throw "account of user '" + user1 + "' does not have enough money!";}db.accounts.update(account1, { amount : account1.amount - amount });db.accounts.update(account2, { amount : account2.amount + amount });/* will commit the transaction and return the value true */return true;}});www.arangodb.org (c) f.celler@triagens.deTransactionsSamstag, 1. Juni 13
db._executeTransaction({collections: {write: "accounts"},params: {user1: "fred",user2: "john",amount: 10},action: function (params) {var db = require("internal").db;var account1 = db.accounts.document(params['user1']);var account2 = db.accounts.document(params['user2']);var amount = params['amount'];if (account1.amount < amount) {throw "account of user '" + user1 + "' does not have enough money!";}db.accounts.update(account1, { amount : account1.amount - amount });db.accounts.update(account2, { amount : account2.amount + amount });www.arangodb.org (c) f.celler@triagens.deTransactionsSamstag, 1. Juni 13
function traverse (graph, start, depth, maxlen) {var config = {datasource: traversal.collectionDatasourceFactory(graph._edges),strategy: Traverser.BREADTH_FIRST,expander: traversal.anyExpander,filter: traversal.maxDepthFilter,maxDepth: depth,uniqueness: { edges: Traverser.UNIQUE_GLOBAL, vertices: Traverser.UNIQUE_NONE },visitor: coauthorVisitor(maxlen)};var traverser = new Traverser(config);var result = { positions: {}, vertices: [], links: [], minYear: 0, maxYear: 0 };var first = graph._vertices.firstExample({ name: start });if (first !== null) {traverser.traverse(result, first);}return {start: start,depth: depth,minYear: result.minYear,maxYear: result.maxYear,vertices: result.vertices,links: result.links };}www.arangodb.org (c) f.celler@triagens.deGraph TraversalSamstag, 1. Juni 13
function traverse (graph, start, depth, maxlen) {var config = {datasource: traversal.collectionDatasourceFactory(graph._edges),strategy: Traverser.BREADTH_FIRST,expander: traversal.anyExpander,filter: traversal.maxDepthFilter,maxDepth: depth,uniqueness: { edges: Traverser.UNIQUE_GLOBAL,vertices: Traverser.UNIQUE_NONE },visitor: coauthorVisitor(maxlen)};www.arangodb.org (c) f.celler@triagens.deGraph TraversalSamstag, 1. Juni 13
No Back-End?www.arangodb.org (c) f.celler@triagens.deSamstag, 1. Juni 13
To Be Continued ... NowFork me on githubGoogle Group: ArangoDBTwitter: @fceller & @arangodbwww.arangodb.orgwww.arangodb.org (c) f.celler@triagens.deStay in Touch:Samstag, 1. Juni 13
Ad

Recommended

PDF
Running MRuby in a Database - ArangoDB - RuPy 2012
ArangoDB Database
 
PDF
ArangoDB - Using JavaScript in the database
ArangoDB Database
 
PDF
Using MRuby in a database
ArangoDB Database
 
PDF
Rupy2012 ArangoDB Workshop Part1
ArangoDB Database
 
PDF
ArangoDB
ArangoDB Database
 
PPTX
A Little SPARQL in your Analytics
Dr. Neil Brittliff
 
PDF
Graph Analytics with ArangoDB
ArangoDB Database
 
PDF
Visualizing Web Data Query Results
Anja Jentzsch
 
PDF
Hands on with Ruby & MongoDB
Wynn Netherland
 
PDF
FOXX - a Javascript application framework on top of ArangoDB
ArangoDB Database
 
PDF
iOS: Web Services and XML parsing
Jussi Pohjolainen
 
PPT
Introduction to couch_db
Romain Testard
 
PDF
Big Data Processing using Apache Spark and Clojure
Dr. Christian Betz
 
PDF
OrientDB: Unlock the Value of Document Data Relationships
Fabrizio Fortino
 
ODP
DrupalCon Chicago Practical MongoDB and Drupal
Doug Green
 
PPT
2011 Mongo FR - MongoDB introduction
antoinegirbal
 
PDF
OrientDB & Node.js Overview - JS.Everywhere() KW
gmccarvell
 
PPTX
MongoDB
Bembeng Arifin
 
PDF
RDF APIs for .NET Framework
Adriana Ivanciu
 
PDF
Real-time Data De-duplication using Locality-sensitive Hashing powered by Sto...
DECK36
 
PDF
DataFrame: Spark's new abstraction for data science by Reynold Xin of Databricks
Data Con LA
 
PPT
Mapreduce in Search
Amund Tveit
 
PPTX
OrientDB the graph database
Artem Orobets
 
PPT
Introduction to MongoDB
Nosh Petigara
 
PPT
2011 mongo FR - scaling with mongodb
antoinegirbal
 
PPTX
RDFa Tutorial
Ivan Herman
 
PDF
Small Overview of Skype Database Tools
elliando dias
 
PDF
Brief Intro to Apache Spark @ Stanford ICME
Paco Nathan
 
PDF
Multi-model databases and node.js
Max Neunhöffer
 
PDF
GraphDatabases and what we can use them for
Michael Hackstein
 

More Related Content

What's hot(20)

PDF
Hands on with Ruby & MongoDB
Wynn Netherland
 
PDF
FOXX - a Javascript application framework on top of ArangoDB
ArangoDB Database
 
PDF
iOS: Web Services and XML parsing
Jussi Pohjolainen
 
PPT
Introduction to couch_db
Romain Testard
 
PDF
Big Data Processing using Apache Spark and Clojure
Dr. Christian Betz
 
PDF
OrientDB: Unlock the Value of Document Data Relationships
Fabrizio Fortino
 
ODP
DrupalCon Chicago Practical MongoDB and Drupal
Doug Green
 
PPT
2011 Mongo FR - MongoDB introduction
antoinegirbal
 
PDF
OrientDB & Node.js Overview - JS.Everywhere() KW
gmccarvell
 
PPTX
MongoDB
Bembeng Arifin
 
PDF
RDF APIs for .NET Framework
Adriana Ivanciu
 
PDF
Real-time Data De-duplication using Locality-sensitive Hashing powered by Sto...
DECK36
 
PDF
DataFrame: Spark's new abstraction for data science by Reynold Xin of Databricks
Data Con LA
 
PPT
Mapreduce in Search
Amund Tveit
 
PPTX
OrientDB the graph database
Artem Orobets
 
PPT
Introduction to MongoDB
Nosh Petigara
 
PPT
2011 mongo FR - scaling with mongodb
antoinegirbal
 
PPTX
RDFa Tutorial
Ivan Herman
 
PDF
Small Overview of Skype Database Tools
elliando dias
 
PDF
Brief Intro to Apache Spark @ Stanford ICME
Paco Nathan
 
Hands on with Ruby & MongoDB
Wynn Netherland
 
FOXX - a Javascript application framework on top of ArangoDB
ArangoDB Database
 
iOS: Web Services and XML parsing
Jussi Pohjolainen
 
Introduction to couch_db
Romain Testard
 
Big Data Processing using Apache Spark and Clojure
Dr. Christian Betz
 
OrientDB: Unlock the Value of Document Data Relationships
Fabrizio Fortino
 
DrupalCon Chicago Practical MongoDB and Drupal
Doug Green
 
2011 Mongo FR - MongoDB introduction
antoinegirbal
 
OrientDB & Node.js Overview - JS.Everywhere() KW
gmccarvell
 
RDF APIs for .NET Framework
Adriana Ivanciu
 
Real-time Data De-duplication using Locality-sensitive Hashing powered by Sto...
DECK36
 
DataFrame: Spark's new abstraction for data science by Reynold Xin of Databricks
Data Con LA
 
Mapreduce in Search
Amund Tveit
 
OrientDB the graph database
Artem Orobets
 
Introduction to MongoDB
Nosh Petigara
 
2011 mongo FR - scaling with mongodb
antoinegirbal
 
RDFa Tutorial
Ivan Herman
 
Small Overview of Skype Database Tools
elliando dias
 
Brief Intro to Apache Spark @ Stanford ICME
Paco Nathan
 

Viewers also liked(20)

PDF
Multi-model databases and node.js
Max Neunhöffer
 
PDF
GraphDatabases and what we can use them for
Michael Hackstein
 
PDF
Backbone using Extensible Database APIs over HTTP
Max Neunhöffer
 
PDF
Complex queries in a distributed multi-model database
Max Neunhöffer
 
PDF
Hotcode 2013: Javascript in a database (Part 2)
ArangoDB Database
 
PDF
Extensible Database APIs and their role in Software Architecture
Max Neunhöffer
 
PDF
Domain Driven Design & NoSQL
ArangoDB Database
 
PDF
Domain Driven Design & NoSQL
ArangoDB Database
 
PDF
ArangoDB – Persistência Poliglota e Banco de Dados Multi-Modelos
Helder Santana
 
PDF
Jan Steemann: Modelling data in a schema free world (Talk held at Froscon, 2...
ArangoDB Database
 
PDF
Multi model-databases
ArangoDB Database
 
PDF
Is multi-model the future of NoSQL?
Max Neunhöffer
 
PDF
Processing large-scale graphs with Google(TM) Pregel by MICHAEL HACKSTEIN at...
Big Data Spain
 
PDF
Overhauling a database engine in 2 months
Max Neunhöffer
 
PDF
guacamole: an Object Document Mapper for ArangoDB
Max Neunhöffer
 
PDF
Domain driven design @FrOSCon
ArangoDB Database
 
PDF
Processing large-scale graphs with Google Pregel
Max Neunhöffer
 
PDF
Wir sind aber nicht Twitter
ArangoDB Database
 
PDF
Domain Driven Design and NoSQL TLV
ArangoDB Database
 
PDF
Introduction to ArangoDB (nosql matters Barcelona 2012)
ArangoDB Database
 
Multi-model databases and node.js
Max Neunhöffer
 
GraphDatabases and what we can use them for
Michael Hackstein
 
Backbone using Extensible Database APIs over HTTP
Max Neunhöffer
 
Complex queries in a distributed multi-model database
Max Neunhöffer
 
Hotcode 2013: Javascript in a database (Part 2)
ArangoDB Database
 
Extensible Database APIs and their role in Software Architecture
Max Neunhöffer
 
Domain Driven Design & NoSQL
ArangoDB Database
 
Domain Driven Design & NoSQL
ArangoDB Database
 
ArangoDB – Persistência Poliglota e Banco de Dados Multi-Modelos
Helder Santana
 
Jan Steemann: Modelling data in a schema free world (Talk held at Froscon, 2...
ArangoDB Database
 
Multi model-databases
ArangoDB Database
 
Is multi-model the future of NoSQL?
Max Neunhöffer
 
Processing large-scale graphs with Google(TM) Pregel by MICHAEL HACKSTEIN at...
Big Data Spain
 
Overhauling a database engine in 2 months
Max Neunhöffer
 
guacamole: an Object Document Mapper for ArangoDB
Max Neunhöffer
 
Domain driven design @FrOSCon
ArangoDB Database
 
Processing large-scale graphs with Google Pregel
Max Neunhöffer
 
Wir sind aber nicht Twitter
ArangoDB Database
 
Domain Driven Design and NoSQL TLV
ArangoDB Database
 
Introduction to ArangoDB (nosql matters Barcelona 2012)
ArangoDB Database
 
Ad

Similar to Hotcode 2013: Javascript in a database (Part 1)(20)

PDF
Your Database Cannot Do this (well)
javier ramirez
 
PDF
Building a Versatile Analytics Pipeline on Top of Apache Spark with Mikhail C...
Databricks
 
PDF
Elasticsearch in 15 minutes
David Pilato
 
PDF
Full-Stack Data Science: How to be a One-person Data Team
Greg Goltsov
 
PDF
Managing your black friday logs - Code Europe
David Pilato
 
PDF
Managing your Black Friday Logs NDC Oslo
David Pilato
 
PDF
NoSQL Now 2013 Presentation
Arjen Schoneveld
 
PDF
112 portfpres.pdf
sash236
 
PDF
Scaling Up: How Switching to Apache Spark Improved Performance, Realizability...
Databricks
 
PDF
Scaling up data science applications
Kexin Xie
 
PDF
MLconf NYC Shan Shan Huang
MLconf
 
PPTX
Quick trip around the Cosmos - Things every astronaut supposed to know
Rafał Hryniewski
 
PPT
JQuery Flot
Arshavski Alexander
 
PDF
Elasticsearch first-steps
Matteo Moci
 
PDF
Designing The Right Schema To Power Heap (PGConf Silicon Valley 2016)
Dan Robinson
 
PPTX
Mastering MapReduce: MapReduce for Big Data Management and Analysis
Teradata Aster
 
PPT
Introduction to MongoDB
antoinegirbal
 
PDF
Awesome Banking API's
Natalino Busa
 
PDF
Real-Time Spark: From Interactive Queries to Streaming
Databricks
 
PDF
huhu
Dung Trương
 
Your Database Cannot Do this (well)
javier ramirez
 
Building a Versatile Analytics Pipeline on Top of Apache Spark with Mikhail C...
Databricks
 
Elasticsearch in 15 minutes
David Pilato
 
Full-Stack Data Science: How to be a One-person Data Team
Greg Goltsov
 
Managing your black friday logs - Code Europe
David Pilato
 
Managing your Black Friday Logs NDC Oslo
David Pilato
 
NoSQL Now 2013 Presentation
Arjen Schoneveld
 
112 portfpres.pdf
sash236
 
Scaling Up: How Switching to Apache Spark Improved Performance, Realizability...
Databricks
 
Scaling up data science applications
Kexin Xie
 
MLconf NYC Shan Shan Huang
MLconf
 
Quick trip around the Cosmos - Things every astronaut supposed to know
Rafał Hryniewski
 
JQuery Flot
Arshavski Alexander
 
Elasticsearch first-steps
Matteo Moci
 
Designing The Right Schema To Power Heap (PGConf Silicon Valley 2016)
Dan Robinson
 
Mastering MapReduce: MapReduce for Big Data Management and Analysis
Teradata Aster
 
Introduction to MongoDB
antoinegirbal
 
Awesome Banking API's
Natalino Busa
 
Real-Time Spark: From Interactive Queries to Streaming
Databricks
 
Ad

More from ArangoDB Database(20)

PPTX
ATO 2022 - Machine Learning + Graph Databases for Better Recommendations (3)....
ArangoDB Database
 
PPTX
Machine Learning + Graph Databases for Better Recommendations V2 08/20/2022
ArangoDB Database
 
PPTX
Machine Learning + Graph Databases for Better Recommendations V1 08/06/2022
ArangoDB Database
 
PPTX
ArangoDB 3.9 - Further Powering Graphs at Scale
ArangoDB Database
 
PDF
GraphSage vs Pinsage #InsideArangoDB
ArangoDB Database
 
PDF
Webinar: ArangoDB 3.8 Preview - Analytics at Scale
ArangoDB Database
 
PDF
Getting Started with ArangoDB Oasis
ArangoDB Database
 
PDF
Custom Pregel Algorithms in ArangoDB
ArangoDB Database
 
PPTX
Hacktoberfest 2020 - Intro to Knowledge Graphs
ArangoDB Database
 
PDF
A Graph Database That Scales - ArangoDB 3.7 Release Webinar
ArangoDB Database
 
PDF
gVisor, Kata Containers, Firecracker, Docker: Who is Who in the Container Space?
ArangoDB Database
 
PDF
ArangoML Pipeline Cloud - Managed Machine Learning Metadata
ArangoDB Database
 
PDF
ArangoDB 3.7 Roadmap: Performance at Scale
ArangoDB Database
 
PDF
Webinar: What to expect from ArangoDB Oasis
ArangoDB Database
 
PDF
ArangoDB 3.5 Feature Overview Webinar - Sept 12, 2019
ArangoDB Database
 
PDF
3.5 webinar
ArangoDB Database
 
PDF
Webinar: How native multi model works in ArangoDB
ArangoDB Database
 
PDF
An introduction to multi-model databases
ArangoDB Database
 
PDF
Running complex data queries in a distributed system
ArangoDB Database
 
PDF
Guacamole Fiesta: What do avocados and databases have in common?
ArangoDB Database
 
ATO 2022 - Machine Learning + Graph Databases for Better Recommendations (3)....
ArangoDB Database
 
Machine Learning + Graph Databases for Better Recommendations V2 08/20/2022
ArangoDB Database
 
Machine Learning + Graph Databases for Better Recommendations V1 08/06/2022
ArangoDB Database
 
ArangoDB 3.9 - Further Powering Graphs at Scale
ArangoDB Database
 
GraphSage vs Pinsage #InsideArangoDB
ArangoDB Database
 
Webinar: ArangoDB 3.8 Preview - Analytics at Scale
ArangoDB Database
 
Getting Started with ArangoDB Oasis
ArangoDB Database
 
Custom Pregel Algorithms in ArangoDB
ArangoDB Database
 
Hacktoberfest 2020 - Intro to Knowledge Graphs
ArangoDB Database
 
A Graph Database That Scales - ArangoDB 3.7 Release Webinar
ArangoDB Database
 
gVisor, Kata Containers, Firecracker, Docker: Who is Who in the Container Space?
ArangoDB Database
 
ArangoML Pipeline Cloud - Managed Machine Learning Metadata
ArangoDB Database
 
ArangoDB 3.7 Roadmap: Performance at Scale
ArangoDB Database
 
Webinar: What to expect from ArangoDB Oasis
ArangoDB Database
 
ArangoDB 3.5 Feature Overview Webinar - Sept 12, 2019
ArangoDB Database
 
3.5 webinar
ArangoDB Database
 
Webinar: How native multi model works in ArangoDB
ArangoDB Database
 
An introduction to multi-model databases
ArangoDB Database
 
Running complex data queries in a distributed system
ArangoDB Database
 
Guacamole Fiesta: What do avocados and databases have in common?
ArangoDB Database
 

Recently uploaded(20)

PDF
Why Orbit Edge Tech is a Top Next JS Development Company in 2025
mahendraalaska08
 
PPT
Interview paper part 3, It is based on Interview Prep
SoumyadeepGhosh39
 
PDF
LLMs.txt: Easily Control How AI Crawls Your Site
Keploy
 
PDF
Building Real-Time Digital Twins with IBM Maximo & ArcGIS Indoors
Safe Software
 
PPTX
Building and Operating a Private Cloud with CloudStack and LINBIT CloudStack ...
ShapeBlue
 
PPTX
WooCommerce Workshop: Bring Your Laptop
Laura Hartwig
 
PDF
NewMind AI - Journal 100 Insights After The 100th Issue
NewMind AI
 
PDF
Windsurf Meetup Ottawa 2025-07-12 - Planning Mode at Reliza.pdf
Pavel Shukhman
 
PPTX
Building Search Using OpenSearch: Limitations and Workarounds
Sease
 
PPTX
Webinar: Introduction to LF Energy EVerest
DanBrown980551
 
PDF
NewMind AI Journal - Weekly Chronicles - July'25 Week II
NewMind AI
 
PDF
HCIP-Data Center Facility Deployment V2.0 Training Material (Without Remarks ...
mcastillo49
 
PDF
Building Resilience with Digital Twins : Lessons from Korea
SANGHEE SHIN
 
PDF
Empowering Cloud Providers with Apache CloudStack and Stackbill
ShapeBlue
 
PDF
CIFDAQ Token Spotlight for 9th July 2025
CIFDAQ
 
PDF
Impact of IEEE Computer Society in Advancing Emerging Technologies including ...
Hironori Washizaki
 
PPTX
Extensions Framework (XaaS) - Enabling Orchestrate Anything
ShapeBlue
 
PDF
The Builder’s Playbook - 2025 State of AI Report.pdf
jeroen339954
 
PDF
July Patch Tuesday
Ivanti
 
PPTX
UiPath Academic Alliance Educator Panels: Session 2 - Business Analyst Content
DianaGray10
 
Why Orbit Edge Tech is a Top Next JS Development Company in 2025
mahendraalaska08
 
Interview paper part 3, It is based on Interview Prep
SoumyadeepGhosh39
 
LLMs.txt: Easily Control How AI Crawls Your Site
Keploy
 
Building Real-Time Digital Twins with IBM Maximo & ArcGIS Indoors
Safe Software
 
Building and Operating a Private Cloud with CloudStack and LINBIT CloudStack ...
ShapeBlue
 
WooCommerce Workshop: Bring Your Laptop
Laura Hartwig
 
NewMind AI - Journal 100 Insights After The 100th Issue
NewMind AI
 
Windsurf Meetup Ottawa 2025-07-12 - Planning Mode at Reliza.pdf
Pavel Shukhman
 
Building Search Using OpenSearch: Limitations and Workarounds
Sease
 
Webinar: Introduction to LF Energy EVerest
DanBrown980551
 
NewMind AI Journal - Weekly Chronicles - July'25 Week II
NewMind AI
 
HCIP-Data Center Facility Deployment V2.0 Training Material (Without Remarks ...
mcastillo49
 
Building Resilience with Digital Twins : Lessons from Korea
SANGHEE SHIN
 
Empowering Cloud Providers with Apache CloudStack and Stackbill
ShapeBlue
 
CIFDAQ Token Spotlight for 9th July 2025
CIFDAQ
 
Impact of IEEE Computer Society in Advancing Emerging Technologies including ...
Hironori Washizaki
 
Extensions Framework (XaaS) - Enabling Orchestrate Anything
ShapeBlue
 
The Builder’s Playbook - 2025 State of AI Report.pdf
jeroen339954
 
July Patch Tuesday
Ivanti
 
UiPath Academic Alliance Educator Panels: Session 2 - Business Analyst Content
DianaGray10
 

Hotcode 2013: Javascript in a database (Part 1)

  • 1.JavaScript in the DatabaseFrank Celler & Lucas Dohmenwww.arangodb.org (c) f.celler@triagens.deSamstag, 1. Juni 13
  • 2.The NoSQL Movementwww.arangodb.org (c) f.celler@triagens.deSamstag, 1. Juni 13
  • 5.Your EntitiesA Person has aName, first and lastone or more addresses, emails,telephonea list of hobbies, skills, tagswww.arangodb.org (c) f.celler@triagens.deSamstag, 1. Juni 13
  • 6.Relational Worldwww.arangodb.org (c) f.celler@triagens.dePersonPersonPersonAddressAddressAddressHobbyHobbyHobbyemailemailemailn-to-mn-to-mn-to-mn-to-mn-to-mn-to-mn-to-mn-to-mn-to-mSamstag, 1. Juni 13
  • 7.Use AggregatesDo not Normalizewww.arangodb.org (c) f.celler@triagens.de{ name: { first: „Frank“, last: „Celler“ },address: { home: { street: „...“, city: „...“ } },email: { work: „frank@celler.de“ },hobbies: [ „C++“, „MRuby“, „JavaScript“ ] }Samstag, 1. Juni 13
  • 8.Document Databasesdocuments can beas simple as key/value mapsor as complex as lists containing embeddedsub-documentsor anything in betweenrepresentated in JSONSchema-lesswww.arangodb.org (c) f.celler@triagens.deSamstag, 1. Juni 13
  • 10.www.arangodb.org (c) f.celler@triagens.de 10Analytic Processing DBsTransaction Processing DBsManaging the evolving state of an IT systemMap/ReduceGraphsExtensibilityKey/ValueColumn-StoresComplexQueriesStructuredDataMassivelyDistributedDocumentsSamstag, 1. Juni 13
  • 11.Property Graphswww.arangodb.org (c) f.celler@triagens.deType: inproceedingTitle: Finite Size EffectsType: proceedingTitle: Neural ModelingType: personName: Anthony C. C. CoolenLabel: writtenLabel: publishedPages: 99-120Type: personName: Snchez-AndrsLabel: editedJust DocumentsSamstag, 1. Juni 13
  • 12.Multi-Model Databaseswww.arangodb.org (c) f.celler@triagens.devertices and edges are documentsquery them using geo-index, full-text,SQL-like queriesrelations are expressed as graphstraverse them using graph algorithmsSamstag, 1. Juni 13
  • 13.ArangoDB.explain()www.arangodb.org (c) f.celler@triagens.de{"type": "NoSQL database","model": [ "document", "graph", "key-value" ],"openSource": true,"license“: "apache","version": 1.3,"builtWith": [ "C", "C++", "js" ],"Javascript": [ "client side", "server side" ],"uses": [ "V8" ]}Samstag, 1. Juni 13
  • 14.Why Use JavaScript?www.arangodb.org (c) f.celler@triagens.deSamstag, 1. Juni 13
  • 15.JavaScript Everywherein the BrowserApplication-Layer (Node.JS)Databasewww.arangodb.org (c) f.celler@triagens.deSamstag, 1. Juni 13
  • 16.Why is Node not enough?www.arangodb.org (c) f.celler@triagens.deSamstag, 1. Juni 13
  • 17.JavaScript in a DatabaseMVC in the Browser and/or NODE.JSScript-Language in the DB fortransactions as functionsgraph traversalno-backend, just APIwww.arangodb.org (c) f.celler@triagens.deSamstag, 1. Juni 13
  • 18.db._create("accounts");db.accounts.save({ _key: "john", amount: 423 });db.accounts.save({ _key: "fred", amount: 197 });db._executeTransaction({collections: {write: "accounts"},params: {user1: "fred",user2: "john",amount: 10},action: function (params) {var db = require("internal").db;var account1 = db.accounts.document(params['user1']);var account2 = db.accounts.document(params['user2']);var amount = params['amount'];if (account1.amount < amount) {throw "account of user '" + user1 + "' does not have enough money!";}db.accounts.update(account1, { amount : account1.amount - amount });db.accounts.update(account2, { amount : account2.amount + amount });/* will commit the transaction and return the value true */return true;}});www.arangodb.org (c) f.celler@triagens.deTransactionsSamstag, 1. Juni 13
  • 19.db._executeTransaction({collections: {write: "accounts"},params: {user1: "fred",user2: "john",amount: 10},action: function (params) {var db = require("internal").db;var account1 = db.accounts.document(params['user1']);var account2 = db.accounts.document(params['user2']);var amount = params['amount'];if (account1.amount < amount) {throw "account of user '" + user1 + "' does not have enough money!";}db.accounts.update(account1, { amount : account1.amount - amount });db.accounts.update(account2, { amount : account2.amount + amount });www.arangodb.org (c) f.celler@triagens.deTransactionsSamstag, 1. Juni 13
  • 20.function traverse (graph, start, depth, maxlen) {var config = {datasource: traversal.collectionDatasourceFactory(graph._edges),strategy: Traverser.BREADTH_FIRST,expander: traversal.anyExpander,filter: traversal.maxDepthFilter,maxDepth: depth,uniqueness: { edges: Traverser.UNIQUE_GLOBAL, vertices: Traverser.UNIQUE_NONE },visitor: coauthorVisitor(maxlen)};var traverser = new Traverser(config);var result = { positions: {}, vertices: [], links: [], minYear: 0, maxYear: 0 };var first = graph._vertices.firstExample({ name: start });if (first !== null) {traverser.traverse(result, first);}return {start: start,depth: depth,minYear: result.minYear,maxYear: result.maxYear,vertices: result.vertices,links: result.links };}www.arangodb.org (c) f.celler@triagens.deGraph TraversalSamstag, 1. Juni 13
  • 21.function traverse (graph, start, depth, maxlen) {var config = {datasource: traversal.collectionDatasourceFactory(graph._edges),strategy: Traverser.BREADTH_FIRST,expander: traversal.anyExpander,filter: traversal.maxDepthFilter,maxDepth: depth,uniqueness: { edges: Traverser.UNIQUE_GLOBAL,vertices: Traverser.UNIQUE_NONE },visitor: coauthorVisitor(maxlen)};www.arangodb.org (c) f.celler@triagens.deGraph TraversalSamstag, 1. Juni 13
  • 22.No Back-End?www.arangodb.org (c) f.celler@triagens.deSamstag, 1. Juni 13
  • 23.To Be Continued ... NowFork me on githubGoogle Group: ArangoDBTwitter: @fceller & @arangodbwww.arangodb.orgwww.arangodb.org (c) f.celler@triagens.deStay in Touch:Samstag, 1. Juni 13

[8]ページ先頭

©2009-2025 Movatter.jp