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
Multi model-databases
Michael Hackstein
 
PDF
Oslo bekk2014
Max Neunhöffer
 
PDF
NoSQL overview #phptostart turin 11.07.2011
David Funaro
 
PDF
Data Modeling with Neo4j
Neo4j
 
PDF
[ModernWeb2018] Graph Database應用思考模式
Freddy Fan
 
PDF
Fishing Graphs in a Hadoop Data Lake
ArangoDB Database
 
PDF
Polyglot Persistence & Multi Model-Databases at JMaghreb3.0
ArangoDB Database
 
PDF
Analysis of Fraud Detection Of ArangoDB Oasis
Ashish Kumar
 
PDF
Max Neunhöffer – Joins and aggregations in a distributed NoSQL DB - NoSQL mat...
NoSQLmatters
 
PDF
Multi model-databases 29-10-2014 LJC
ArangoDB Database
 
PDF
Polyglot Persistence & Multi-Model Databases (FullStack Toronto)
ArangoDB Database
 
PDF
Graph Databases and Web Frameworks (NodeJS, AngularJS, GridFS, OpenLink Virtu...
João Rocha da Silva
 
PDF
Oslo baksia2014
Max Neunhöffer
 
PPTX
Conceptos básicos. Seminario web 1: Introducción a NoSQL
MongoDB
 
PPTX
20181215 introduction to graph databases
Timothy Findlay
 
PDF
ArangoDB – A different approach to NoSQL
ArangoDB Database
 
ODP
Graph databases
Karol Grzegorczyk
 
PPTX
Introduction to Graph Databases
Max De Marzi
 
ZIP
The InfoGrid Graph DataBase
InfoGrid.org
 
PDF
Fishing Graphs in a Hadoop Data Lake
DataWorks Summit/Hadoop Summit
 
Multi model-databases
Michael Hackstein
 
Oslo bekk2014
Max Neunhöffer
 
NoSQL overview #phptostart turin 11.07.2011
David Funaro
 
Data Modeling with Neo4j
Neo4j
 
[ModernWeb2018] Graph Database應用思考模式
Freddy Fan
 
Fishing Graphs in a Hadoop Data Lake
ArangoDB Database
 
Polyglot Persistence & Multi Model-Databases at JMaghreb3.0
ArangoDB Database
 
Analysis of Fraud Detection Of ArangoDB Oasis
Ashish Kumar
 
Max Neunhöffer – Joins and aggregations in a distributed NoSQL DB - NoSQL mat...
NoSQLmatters
 
Multi model-databases 29-10-2014 LJC
ArangoDB Database
 
Polyglot Persistence & Multi-Model Databases (FullStack Toronto)
ArangoDB Database
 
Graph Databases and Web Frameworks (NodeJS, AngularJS, GridFS, OpenLink Virtu...
João Rocha da Silva
 
Oslo baksia2014
Max Neunhöffer
 
Conceptos básicos. Seminario web 1: Introducción a NoSQL
MongoDB
 
20181215 introduction to graph databases
Timothy Findlay
 
ArangoDB – A different approach to NoSQL
ArangoDB Database
 
Graph databases
Karol Grzegorczyk
 
Introduction to Graph Databases
Max De Marzi
 
The InfoGrid Graph DataBase
InfoGrid.org
 
Fishing Graphs in a Hadoop Data Lake
DataWorks Summit/Hadoop Summit
 
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)

PPTX
Top iOS App Development Company in the USA for Innovative Apps
SynapseIndia
 
PDF
CloudStack GPU Integration - Rohit Yadav
ShapeBlue
 
PDF
Log-Based Anomaly Detection: Enhancing System Reliability with Machine Learning
Mohammed BEKKOUCHE
 
PDF
Windsurf Meetup Ottawa 2025-07-12 - Planning Mode at Reliza.pdf
Pavel Shukhman
 
PPTX
UiPath Academic Alliance Educator Panels: Session 2 - Business Analyst Content
DianaGray10
 
PPTX
Webinar: Introduction to LF Energy EVerest
DanBrown980551
 
PDF
NewMind AI Journal - Weekly Chronicles - July'25 Week II
NewMind AI
 
PDF
Women in Automation Presents: Reinventing Yourself — Bold Career Pivots That ...
DianaGray10
 
PDF
Ampere Offers Energy-Efficient Future For AI And Cloud
ShapeBlue
 
PDF
Impact of IEEE Computer Society in Advancing Emerging Technologies including ...
Hironori Washizaki
 
PPTX
WooCommerce Workshop: Bring Your Laptop
Laura Hartwig
 
PDF
Smart Air Quality Monitoring with Serrax AQM190 LITE
SERRAX TECHNOLOGIES LLP
 
PPTX
Building a Production-Ready Barts Health Secure Data Environment Tooling, Acc...
Barts Health
 
PPT
Interview paper part 3, It is based on Interview Prep
SoumyadeepGhosh39
 
PDF
Empowering Cloud Providers with Apache CloudStack and Stackbill
ShapeBlue
 
PDF
Meetup Kickoff & Welcome - Rohit Yadav, CSIUG Chairman
ShapeBlue
 
PDF
Predicting the unpredictable: re-engineering recommendation algorithms for fr...
Speck&Tech
 
PDF
SFWelly Summer 25 Release Highlights July 2025
Anna Loughnan Colquhoun
 
PDF
Français Patch Tuesday - Juillet
Ivanti
 
PPTX
Top Managed Service Providers in Los Angeles
Captain IT
 
Top iOS App Development Company in the USA for Innovative Apps
SynapseIndia
 
CloudStack GPU Integration - Rohit Yadav
ShapeBlue
 
Log-Based Anomaly Detection: Enhancing System Reliability with Machine Learning
Mohammed BEKKOUCHE
 
Windsurf Meetup Ottawa 2025-07-12 - Planning Mode at Reliza.pdf
Pavel Shukhman
 
UiPath Academic Alliance Educator Panels: Session 2 - Business Analyst Content
DianaGray10
 
Webinar: Introduction to LF Energy EVerest
DanBrown980551
 
NewMind AI Journal - Weekly Chronicles - July'25 Week II
NewMind AI
 
Women in Automation Presents: Reinventing Yourself — Bold Career Pivots That ...
DianaGray10
 
Ampere Offers Energy-Efficient Future For AI And Cloud
ShapeBlue
 
Impact of IEEE Computer Society in Advancing Emerging Technologies including ...
Hironori Washizaki
 
WooCommerce Workshop: Bring Your Laptop
Laura Hartwig
 
Smart Air Quality Monitoring with Serrax AQM190 LITE
SERRAX TECHNOLOGIES LLP
 
Building a Production-Ready Barts Health Secure Data Environment Tooling, Acc...
Barts Health
 
Interview paper part 3, It is based on Interview Prep
SoumyadeepGhosh39
 
Empowering Cloud Providers with Apache CloudStack and Stackbill
ShapeBlue
 
Meetup Kickoff & Welcome - Rohit Yadav, CSIUG Chairman
ShapeBlue
 
Predicting the unpredictable: re-engineering recommendation algorithms for fr...
Speck&Tech
 
SFWelly Summer 25 Release Highlights July 2025
Anna Loughnan Colquhoun
 
Français Patch Tuesday - Juillet
Ivanti
 
Top Managed Service Providers in Los Angeles
Captain IT
 

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