Learning CouchDB A Non-Relational Alternative to Data Persistence for Modern Software Applications
|
|
- Rhoda Perry
- 5 years ago
- Views:
Transcription
1 Learning CouchDB A Non-Relational Alternative to Data Persistence for Modern Software Applications
2 Is CouchDB a good choice for your application?
3 Problem: The Object-Relational Impedance Mismatch [1] How to persist data in an object-oriented software application?
4 Problem: The Object-Relational Impedance Mismatch [1] How to persist data in an object-oriented software application? separate domain and data mapping layers [2] object-relational mapping (ORM) [3] non-relational database
5 Problem: Semi-Structured Data How to persist data with flexible schemas?
6 Problem: Semi-Structured Data How to persist data with flexible schemas? leave non-applicable column values null use the entity-attributevalue (EAV) anti-pattern [1] use a schema-less database with a self-describing structure 1.
7 Problem: Persisting Graph Relationships How to persist graphs, trees and hierarchical data?
8 Problem: Persisting Graph Relationships How to persist graphs, trees and hierarchical data? model hierarchical data in SQL [1] graph database [2] documentoriented database
9 Problem: Achieving High Concurrency How to give up consistency in exchange for high availability? [1] 1.
10 Problem: Achieving High Concurrency How to give up consistency in exchange for high availability? [1] reduce transaction scope database replication denormalization multi-version concurrency control (MVCC) 1.
11 Problem: Building in Fault-Tolerance How to make a fault-tolerant system?
12 Problem: Building in Fault-Tolerance How to make a fault-tolerant system? promote slave database to master on fault isolate faults multi-master replication
13 Problem: Flexible Indexing How to index data other than direct column values?
14 Problem: Flexible Indexing How to index data other than direct column values? denormalize Map/Reduce user-defined types
15 Lesson About CouchDB
16 Schema-Less stores self-contained JSON documents related entities can be stored in a single document only store fields that are needed in each document
17 Futon Web Administration built-in web administration console default location is: create, read, update and delete databases and documents query databases configure CouchDB replicate between databases view task status run test suite set up server admins configure database security run compaction and cleanup maintenance tasks
18 CouchDB Views queries are run against indexed views views are generated through incremental Map functions aggregate results can be retrieved through Reduce functions
19 HTTP API every language and platform has an HTTP client uses existing semantics (e.g. 201 Created, 202 Accepted) distributed, scalable and cacheable
20 CouchDB and PHP can just use an HTTP client several client libraries specific to CouchDB are available
21 Flexible Querying Options all rows in a given view row(s) matching a specified key rows by start and end keys exact grouping group by levels limit and skip parameters output in descending order include original documents in result set
22 Lesson Installation
23 CouchDB or Couchbase CouchDB: project of the Apache Software Foundation available through package managers Couchbase: superset of CouchDB includes geospatial indexing available as Couchbase Mobile for ios and Android commercial support options available
24 CouchDB Installation Mac OS X Homebrew MacPorts Windows binary installer [1] Ubuntu Aptitude Red Hat Yum 1.
25 Couchbase Single Server [1] Available for: Mac OS X Windows Ubuntu Red Hat 1.
26 Lab Install CouchDB or Couchbase
27 Installation and Startup :03 1. Install CouchDB OR Install Couchbase Single Server 2. If CouchDB, then at the command-line: $ sudo couchdb Apache CouchDB has started. Time to relax. 3. Optionally, test CouchDB: $ curl ' {"couchdb":"welcome","version":"1.1.0"}
28 Lesson JSON Documents
29 Why JSON? human-readable and simple data interchange format data structures from many programming languages can be easily converted to and from JSON lightweight doesn t add too much to bandwidth overhead
30 JSON Data Types String Number Boolean (false or true) JSON Array (e.g. ["a", "b", "c"]) JSON Object: collection of name/value pairs where the name is a String and the value is any valid JSON data type JSON NULL (null)
31 Example JSON Object { "_id":" ", "title":"couchdb: The Definitive Guide", "subtitle":"time to Relax", "authors":[ "J. Chris Anderson", "Jan Lehnardt", "Noah Slater" ], "publisher":"o'reilly Media", "released":" ", "pages":272 }
32 Lab Futon
33 Access Futon :01 1. Visit Futon in your web browser: 2. Note the existing _replicator and _users databases 3. Note the Tools navigation section 4. Note the following message: Welcome to Admin Party!
34 Access Futon
35 Create a Database :01 1. Click Create Database 2. Enter books in the Database Name field 3. Click the Create button
36 Create a Database
37 Create a Document :05 1. Click New Document 2. Enter as the value for the _id field, and then click apply 3. Using the Add Field button, add a title field with a value of CouchDB: The Definitive Guide 4. Add a subtitle field with a value of Time to Relax 5. Add an authors field with a value of: ["J. Chris Anderson", "Jan Lehnardt", "Noah Slater"] 6. Add a publisher field with a value of O'Reilly Media 7. Add a released field with a value of Add a pages field with a value of Click Save Document
38 Create a Document
39 Lesson Map Functions
40 Map Functions used to transform documents into key/value pairs user-defined, typically written in JavaScript every document is incrementally passed through this function function is passed a JSON object representing a document function calls an emit function zero, one or more times emit function accepts two arguments: a key a value to be associated with the key an id field is implicitly emitted as well
41 Temporary Views contains a Map function and an optional Reduce function useful in development very slow on large data sets
42 Lab One-To-One Mapping
43 Map Book Titles :03 1. Click on the books database in the breadcrumb navigation 2. Select Temporary view from the View select menu 3. Enter the following in the View Code text area: function(doc) { if (doc.title) { emit(doc.title); } } 4. Click Run
44 Map Book Titles
45 Map functions must be deterministic. Given the same input, a Map function must always return the same output.
46 Add a Second Document :05 1. Click New Document 2. Enter as the value for the _id field, and then click apply 3. Add a title field with a value of RESTful Web Services 4. Add a subtitle field with a value of Web services for the real world 5. Add an authors field with a value of: ["Leonard Richardson", "Sam Ruby"] 6. Add a publisher field with a value of O'Reilly Media 7. Add a released field with a value of Add a pages field with a value of Click Save Document
47 Add a Second Document
48 Map Book Titles :01 1. Click on the books database in the breadcrumb navigation 2. If not already selected, select Temporary view from the View select menu 3. If not already entered, enter the following in the View Code text area: function(doc) { if (doc.title) { emit(doc.title); } } 4. Click Run
49 Map Book Titles
50 Lab One-To-Many Mapping
51 Add a formats Field :03 1. Navigate to the books database, if not already there 2. Select All documents from the View select menu 3. Click the first document, Add a formats field with a value of: ["Print", "Ebook", "Safari Books Online"] 5. Click Save Document 6. Navigate back to the books database 7. Repeat steps 3 through 6 for the second document,
52 When updating documents, you may have noticed the _rev field, an artifact of CouchDB s Multi-Version Concurrency Control (MVCC).
53 Add a Third Document :05 1. Click New Document 2. Enter as the value for the _id field, and then click apply 3. Add a title field with a value of DocBook: The Definitive Guide 4. Add an authors field with a value of: ["Norman Walsh", "Leonard Muellner"] 5. Add a publisher field with a value of O'Reilly Media 6. Add a formats field with a value of: ["Print"] 7. Add a released field with a value of Add a pages field with a value of Click Save Document
54 Add a Third Document
55 Map Book Formats :03 1. Navigate to the books database 2. Select Temporary view from the View select menu 3. Enter the following in the View Code text area: function(doc) { if (doc.formats) { for (var i in doc.formats) { emit(doc.formats[i]); } } } 4. Click Run
56 Map Book Formats
57 Map Book Authors :02 1. Navigate to the books database 2. Select Temporary view from the View select menu 3. Enter the following in the View Code text area: function(doc) { if (doc.authors) { for (var i in doc.authors) { emit(doc.authors[i]); } } } 4. Click Run
58 Map Book Authors
59 Lesson Reduce Functions
60 Reduce Functions optional, run against data set produced by a Map function typically used to reduce a set of values to a single, scalar value can reference built-in Reduce functions custom Reduce functions can be written in JavaScript set of already reduced data may be rereduced function is passed three arguments: keys: array of mapped keys and associated document identifiers in the form of [key, id] values: array of mapped values rereduce: boolean value indicating whether or not the reduce function is being called recursively on its own output (in which case, keys will be null)
61 Built-In Reduce Functions written in CouchDB s native Erlang faster than user-defined JavaScript functions includes: _count _sum _stats
62 If you think that you need to write your own custom Reduce function, you re probably doing it wrong.
63 Grouping values can be reduced by group grouping is controlled by a query, not by the Reduce function grouping is done by key key levels, or parts of a key, can also be grouped on
64 Lab Built-In Reduce Functions
65 The built-in _count function can reduce arbitrary values, including null values.
66 Count: No Grouping :03 1. Select Temporary view from the View select menu 2. Enter the following in the View Code text area: function(doc) { if (doc.formats) { for (var i in doc.formats) { emit(doc.formats[i]); } } } 3. Enter the following in the Reduce Function text area: _count 4. Click Run 5. Check the Reduce checkbox 6. Select none from the Grouping select menu
67 Count: No Grouping
68 Count: Exact Grouping :01 1. Select exact from the Grouping select menu
69 Count: Exact Grouping
70 The _sum and _stats functions will only reduce sets of numbers.
71 Sum: Exact Grouping :02 1. Update the View Code text area with the following: function(doc) { if (doc.formats) { for (var i in doc.formats) { emit(doc.formats[i], doc.pages); } } } 2. Enter the following in the Reduce Function text area: _sum 3. Click Run 4. The Reduce checkbox should be checked 5. exact should be selected from the Grouping select menu
72 Sum: Exact Grouping
73 Stats: Exact Grouping :01 1. Enter the following in the Reduce Function text area: _stats 2. Click Run 3. The Reduce checkbox should be checked 4. exact should be selected from the Grouping select menu
74 Stats: Exact Grouping
75 Map/Reduce gives you tremendous flexibility, but has its limitations: no ad-hoc queries * index is one dimensional only key or range queries are allowed * Temporary views are only useful in development, not in production. Multiple key queries are allowed, but result in multiple hits on the index.
76 Lesson Design Documents
77 Non-Temporary Views multiple views can be defined within a design document a view contains a Map and an optional Reduce function a view is recomputed when its design document is updated views are incrementally re-indexed after documents are created, updated or deleted * * Technically, views are incrementally re-indexed when queried.
78 Contents of a Design Document view definitions Map functions Reduce functions show functions list functions document update handlers document update validation functions rewrite definitions arbitrary fields arbitrary attachments
79 Lab Design Documents
80 Titles View :05 1. Update the View Code text area with the following: function(doc) { if (doc.title) { emit(doc.title, doc.pages); } } 2. Enter the following in the Reduce Function text area: _stats 3. Click Save As 4. Enter default as the Design Document name 5. Enter titles as the View Name 6. Click Save
81 Titles View
82 Query Titles View :01 1. Select titles from the View select menu, if not already selected 2. Click arrow next to View Code, if you d like 3. Check the Reduce checkbox, if not already checked 4. Select none from the Grouping select menu
83 Query Titles View
84 Formats View :05 1. Update the View Code text area with the following: function(doc) { if (doc.formats) { for (var i in doc.formats) { emit(doc.formats[i], doc.pages); } } } 2. Enter the following in the Reduce Function text area: _stats 3. Click Save As 4. Enter default as the Design Document name 5. Enter formats as the View Name 6. Click Save
85 Formats View
86 Query Formats View :01 1. Select formats from the View select menu, if not already selected 2. Click the arrow next to View Code, if you d like 3. Check the Reduce checkbox, if not already checked 4. Select none from the Grouping select menu
87 Query Formats View
88 Authors View :05 1. Update the View Code text area with the following: function(doc) { if (doc.authors) { for (var i in doc.authors) { emit(doc.authors[i], doc.pages); } } } 2. Enter the following in the Reduce Function text area: _stats 3. Click Save As 4. Enter default as the Design Document name 5. Enter authors as the View Name 6. Click Save
89 Authors View
90 Query Authors View :01 1. Select authors from the View select menu, if not already selected 2. Click arrow next to View Code, if you d like 3. Check the Reduce checkbox, if not already checked 4. Select none from the Grouping select menu
91 Query Authors View
92 Views use extra disk space in exchange for additional performance. Consider the design of your views accordingly.
93 Lesson HTTP API
94 Resources URI identifies a resource resource could be a: database document attachment configuration section
95 Methods HTTP methods define actions on resources HTTP methods used in CouchDB include: GET POST PUT DELETE
96 Self-Describing Messages HTTP request headers: Accept Content-Type HTTP response status codes: 200 OK 201 Created 409 Conflict HTTP response headers: Content-Type Etag
97 Conditional caching can be done with the Etag HTTP response header and the If-None-Match HTTP request header.
98 Hypermedia Controls not part of the core API * can be created with a combination of: show functions list functions document update handlers * One might argue that a document identifier could serve as a form of hypermedia control.
99 curl [1] tool for transferring data understands many protocols, including HTTP both a library and a command-line tool 1.
100 Useful curl Switches -d HTTP POST data --data-urlencode HTTP POST data url encoded -G Send the -d data with a HTTP GET -H Custom header to pass to server -i Include protocol headers in the output -X Specify request command to use
101 Lab curl and CouchDB
102 Install curl 1. Install curl command-line tool using your package manager OR Download and install curl executable [1] 2. Test curl and CouchDB: $ curl -ix GET ' HTTP/ OK Server: CouchDB/1.1.0 (Erlang OTP/R14B03) Date: Tue, 11 Oct :21:40 GMT Content-Type: text/plain;charset=utf-8 Content-Length: 40 Cache-Control: must-revalidate {"couchdb":"welcome","version":"1.1.0"} 1.
103 Accept JSON 1. Tell CouchDB that you can accept JSON: $ curl -ix GET ' -H 'Accept: application/json' HTTP/ OK Server: CouchDB/1.1.0 (Erlang OTP/R14B03) Date: Tue, 11 Oct :51:40 GMT Content-Type: application/json Content-Length: 40 Cache-Control: must-revalidate {"couchdb":"welcome","version":"1.1.0"}
104 Create a Database 1. PUT a new database into CouchDB: $ curl -ix PUT ' HTTP/ Created Location: {"ok":true}
105 Create a Document 1. POST a new document into a CouchDB database: $ curl -ix POST ' -H 'Content-Type: application/json' -d '{"_id":"mydoc"}' HTTP/ Created Location: { } "ok":true, "id":"mydoc", "rev":"1-967a00dff5e02add abb3284d"
106 Read the Document 1. GET a document: $ curl -ix GET ' HTTP/ OK Etag: "1-967a00dff5e02add abb3284d" { } "_id":"mydoc", "_rev":"1-967a00dff5e02add abb3284d"
107 Update the Document 1. PUT an updated document: $ curl -ix PUT ' -H 'If-Match: "1-967a00dff5e02add abb3284d"' -H 'Content-Type: application/json' -d '{"title":"learning CouchDB"}' HTTP/ Created Location: Etag: " e3179a22a22e06874c374e8ef0" { } "ok":true, "id":"mydoc", "rev":" e3179a22a22e06874c374e8ef0"
108 Read the Document 1. GET the document again: $ curl -ix GET ' HTTP/ OK Etag: " e3179a22a22e06874c374e8ef0" { } "_id":"mydoc", "_rev":" e3179a22a22e06874c374e8ef0", "title":"learning CouchDB"
109 Delete the Document 1. DELETE the document: $ curl -ix DELETE ' -H 'If-Match: " e3179a22a22e06874c374e8ef0"' HTTP/ OK Etag: "3-e9a5aa1c486eee23c84fa028bc904991" { } "ok":true, "id":"mydoc", "rev":"3-e9a5aa1c486eee23c84fa028bc904991"
110 Delete the Database 1. DELETE the database: $ curl -ix DELETE ' HTTP/ OK {"ok":true}
111 Lesson CouchDB Libraries for PHP
112 HTTP Clients Zend_Http_Client [1] a Zend Framework component relatively easy-to-use API PHP s curl extension [2] commonly installed extension less intuitive API HTTP_Request2 [3] a PEAR component
113 Sag for CouchDB [1] accepts PHP data structures (e.g. objects, strings) can return raw JSON can return a PHP object 1.
114 PHP Object_Freezer [1] created and maintained by Sebastian Bergmann freezes and thaws PHP objects extensible storage options includes CouchDB object storage installable through pear: $ pear channel-discover pear.phpunit.de $ pear install phpunit/object_freezer 1.
115 PHP CouchDB Extension [1] supports a large part of the CouchDB API supports both cookie and basic authentication automatically encodes and decodes JSON to and from PHP objects and arrays available as a PECL extension 1.
116 Doctrine2 CouchDB ODM [1] a mapper between PHP objects and CouchDB documents uses metadata mapping pattern to map documents to plain old PHP objects potentially good fit if you re already using Doctrine 1.
117 Others PHP On Couch [1] Chill [2] Settee [3] PHPillow [4]* *PHPillow does not appear to be maintained.
118 Lesson Querying Views
119 To Reduce or Not To Reduce results will not be reduced if no Reduce function is defined by default, results will be reduced to not reduce, set the reduce parameter to false
120 Key Matching by default, all rows will be returned results can be filtered with a key parameter the key parameter can be set to any valid JSON value valid JSON values include a: String Number Boolean JSON Array JSON Object must be URL encoded in a query string zero, one ore more rows matching the key will be returned
121 Start and End Key Range startkey parameter can define the beginning of a range endkey parameter can define the end of a range startkey and endkey parameters can be any valid JSON value startkey and endkey parameters must be URL encoded startkey_docid parameter further refines the start of a range endkey_docid parameter further refines the end of a range since they reference document identifiers, the startkey_docid and endkey_docid parameters must be strings
122 Limiting, Skipping and Reversing limit parameter specifies a maximum number of rows skip parameter specifies a number of rows to skip over to reverse results, set the descending parameter to true when reversing results, swap your startkey/startkey_docid parameters with your endkey/endkey_docid parameters
123 Grouping to group results by exact key, set the group parameter to true group_level parameter is useful if view s keys are JSON Arrays, otherwise known as compound keys a group_level of 1 will only group on the first items in the arrays, ignoring any subsequent array elements a group_level of 2 will only group on the first and second items in the arrays, ignoring any subsequent array elements a group_level of 3 will only group on the first, second and third items in the arrays, ignoring any subsequent array elements
124 Including Documents original document from which each row was emitted can be included by setting the include_docs parameter to true this will add a doc field to your output rows if the value emitted from the Map function is a JSON Object containing an _id field, then CouchDB will instead include the document with an identifier matching the value of this field
125 Stale Views by default, views are incrementally updated when queried set the stale parameter s value to ok to avoid a view update if any documents have been created, updated or deleted then this will return results faster however, it will return possibly outdated results set the stale parameter s value to update_after to get stale results, but trigger a view update after results are returned
126 Lab Querying Views using Zend_Http_Client
127 Setting up Zend_Http_Client
128 Install Zend Framework :02 1. If not already in your include path, install Zend Framework: $ pear channel-discover pear.zfcampus.org $ pear install zfcampus/zf
129 Interactive PHP Shell :01 1. Open an interactive PHP shell: $ php -a
130 Set Up Autoloader :02 require_once 'Zend/Loader/Autoloader.php'; Zend_Loader_Autoloader::getInstance();
131 All Rows
132 Reduced :05 $db = ' $client = new Zend_Http_Client(); $client->seturi($db. '/_design/default/_view/authors'); $client->setheaders('accept', 'application/json'); $response = $client->request(zend_http_client::get); $body = $response->getbody(); $results = Zend_Json::decode($body); print_r($results);
133 Reduced NULL key value Array ( [sum] => 3008 [count] => 7 [min] => 272 [max] => 648 [sumsqr] => )
134 Not Reduced :05 $db = ' $client = new Zend_Http_Client(); $client->seturi($db. '/_design/default/_view/authors'); $client->setparameterget('reduce', 'false'); $client->setheaders('accept', 'application/json'); $response = $client->request(zend_http_client::get); $body = $response->getbody(); $results = Zend_Json::decode($body); print_r($results);
135 Not Reduced id key value " " "J. Chris Anderson" 272 " " "Jan Lehnardt" 272 " " "Leonard Muellner" 648 " " "Leonard Richardson" 448 " " "Noah Slater" 272 " " "Norman Walsh" 648 " " "Sam Ruby" 448
136 Range Queries
137 By Key :05 $db = ' $client = new Zend_Http_Client(); $client->seturi($db. '/_design/default/_view/formats'); $client->setparameterget('reduce', 'false'); $client->setparameterget('key', '"Print"'); $client->setheaders('accept', 'application/json'); $response = $client->request(zend_http_client::get); $body = $response->getbody(); $results = Zend_Json::decode($body); print_r($results);
138 By Key id key value " " "Print" 272 " " "Print" 448 " " "Print" 648
139 By Start and End Keys :05 $db = ' $client = new Zend_Http_Client(); $client->seturi($db. '/_design/default/_view/authors'); $client->setparameterget('reduce', 'false'); $client->setparameterget('startkey', '"j"'); $client->setparameterget('endkey', '"j\ufff0"'); $client->setheaders('accept', 'application/json'); $response = $client->request(zend_http_client::get); $body = $response->getbody(); $results = Zend_Json::decode($body); print_r($results);
140 By Start and End Keys id key value " " "J. Chris Anderson" 272 " " "Jan Lehnardt" 272
141 Limiting, Skipping and Reversing
142 Limit Results :05 $db = ' $client = new Zend_Http_Client(); $client->seturi($db. '/_design/default/_view/formats'); $client->setparameterget('reduce', 'false'); $client->setparameterget('limit', 5); $client->setheaders('accept', 'application/json'); $response = $client->request(zend_http_client::get); $body = $response->getbody(); $results = Zend_Json::decode($body); print_r($results);
143 Limit Results id key value " " "Ebook" 272 " " "Ebook" 448 " " "Print" 272 " " "Print" 448 " " "Print" 648
144 Skipping Results :05 $db = ' $client = new Zend_Http_Client(); $client->seturi($db. '/_design/default/_view/formats'); $client->setparameterget('reduce', 'false'); $client->setparameterget('limit', 5); $client->setparameterget('skip', 5); $client->setheaders('accept', 'application/json'); $response = $client->request(zend_http_client::get); $body = $response->getbody(); $results = Zend_Json::decode($body); print_r($results);
145 Skipping Results id key value " " "Safari Books Online" 272 " " "Safari Books Online" 448
146 Although the skip and limit parameters can be used together to implement pagination, this can be inefficient on large data sets.
147 First Page id key value " " "Ebook" 272 " " "Ebook" 448 " " "Print" 272 " " "Print" 448 " " "Print" 648
148 Next Page :05 $db = ' $client = new Zend_Http_Client(); $client->seturi($db. '/_design/default/_view/formats'); $client->setparameterget('reduce', 'false'); $client->setparameterget('limit', 5); $client->setparameterget('startkey', '"Print"'); $client->setparameterget('startkey_docid', ' '); $client->setparameterget('skip', 1); $client->setheaders('accept', 'application/json'); $response = $client->request(zend_http_client::get); $body = $response->getbody(); $results = Zend_Json::decode($body); print_r($results);
149 Next Page id key value " " "Safari Books Online" 272 " " "Safari Books Online" 448
150 Reversing Results :05 $db = ' $client = new Zend_Http_Client(); $client->seturi($db. '/_design/default/_view/titles'); $client->setparameterget('reduce', 'false'); $client->setparameterget('descending', 'true'); $client->setheaders('accept', 'application/json'); $response = $client->request(zend_http_client::get); $body = $response->getbody(); $results = Zend_Json::decode($body); print_r($results);
151 Reversing Results id key value " " "RESTful Web Services" 448 " " "DocBook: The Definitive Guide" 648 " " "CouchDB: The Definitive Guide" 272
152 Grouping
153 Exact Grouping :05 $db = ' $client = new Zend_Http_Client(); $client->seturi($db. '/_design/default/_view/formats'); $client->setparameterget('group', 'true'); $client->setheaders('accept', 'application/json'); $response = $client->request(zend_http_client::get); $body = $response->getbody(); $results = Zend_Json::decode($body); print_r($results);
154 Exact Grouping key value "Ebook" "Print" "Safari Books Online" Array ( [sum] => 720 [count] => 2 [min] => 272 [max] => 448 [sumsqr] => ) Array ( [sum] => 1368 [count] => 3 [min] => 272 [max] => 648 [sumsqr] => ) Array ( [sum] => 720 [count] => 2 [min] => 272 [max] => 448 [sumsqr] => )
155 What We re Doing Next adding a fourth book document with a released date of this is the same year and month as another book s released date creating a new releases view that indexes books by their released dates releases view will use a compound key a three-level JSON Array of year, month and day
156 Add a Fourth Document :05 $book = array( '_id' => ' ', 'title' => 'Building iphone Apps with HTML, CSS, and JavaScript', 'subtitle' => 'Making App Store Apps Without Objective-C or Cocoa', 'authors' => array('jonathan Stark'), 'publisher'=> 'O\'Reilly Media', 'formats' => array('print', 'Ebook', 'Safari Books Online'), 'released' => ' ', 'pages' => 192 ); $client = new Zend_Http_Client(); $client->seturi(' $client->setheaders('content-type', 'application/json'); $client->setrawdata(zend_json::encode($book)); $response = $client->request(zend_http_client::post); print_r($response->getstatus()); // 201
157 Releases View :05 1. In the books database in Futon, select Temporary view from the View select menu 2. Enter the following into the View Code text area: function(doc) { if (doc.released) { emit(doc.released.split("-"), doc.pages); } } 3. Enter the following in the Reduce Function text area: _stats 4. Click Save As 5. Enter default as the Design Document name 6. Enter releases as the View Name 7. Click Save
158 Exact Grouping :05 $db = ' $client = new Zend_Http_Client(); $client->seturi($db. '/_design/default/_view/releases'); $client->setparameterget('group', 'true'); $client->setheaders('accept', 'application/json'); $response = $client->request(zend_http_client::get); $body = $response->getbody(); $results = Zend_Json::decode($body); print_r($results);
159 Exact Grouping key value Array ( [0] => 1999 [1] => 10 [2] => 28 ) Array ( [0] => 2007 [1] => 05 [2] => 08 ) Array ( [0] => 2010 [1] => 01 [2] => 08 ) Array ( [0] => 2010 [1] => 01 [2] => 19 ) Array ( [sum] => 648 [count] => 1 [min] => 648 [max] => 648 [sumsqr] => ) Array ( [sum] => 448 [count] => 1 [min] => 448 [max] => 448 [sumsqr] => ) Array ( [sum] => 192 [count] => 1 [min] => 192 [max] => 192 [sumsqr] => ) Array ( [sum] => 272 [count] => 1 [min] => 272 [max] => 272 [sumsqr] => )
160 Group Level 1 :05 $db = ' $client = new Zend_Http_Client(); $client->seturi($db. '/_design/default/_view/releases'); $client->setparameterget('group_level', 1); $client->setheaders('accept', 'application/json'); $response = $client->request(zend_http_client::get); $body = $response->getbody(); $results = Zend_Json::decode($body); print_r($results);
161 Group Level 1 key value Array ( [0] => 1999 ) Array ( [0] => 2007 ) Array ( [0] => 2010 ) Array ( [sum] => 648 [count] => 1 [min] => 648 [max] => 648 [sumsqr] => ) Array ( [sum] => 448 [count] => 1 [min] => 448 [max] => 448 [sumsqr] => ) Array ( [sum] => 464 [count] => 2 [min] => 192 [max] => 272 [sumsqr] => )
162 Group Level 2 :05 $db = ' $client = new Zend_Http_Client(); $client->seturi($db. '/_design/default/_view/releases'); $client->setparameterget('group_level', 2); $client->setheaders('accept', 'application/json'); $response = $client->request(zend_http_client::get); $body = $response->getbody(); $results = Zend_Json::decode($body); print_r($results);
163 Group Level 2 key value Array ( [0] => 1999 [1] => 10 ) Array ( [0] => 2007 [1] => 05 ) Array ( [0] => 2010 [1] => 01 ) Array ( [sum] => 648 [count] => 1 [min] => 648 [max] => 648 [sumsqr] => ) Array ( [sum] => 448 [count] => 1 [min] => 448 [max] => 448 [sumsqr] => ) Array ( [sum] => 464 [count] => 2 [min] => 192 [max] => 272 [sumsqr] => )
164 Including Documents
165 Including Docs :05 $db = ' $client = new Zend_Http_Client(); $client->seturi($db. '/_design/default/_view/titles'); $client->setparameterget('reduce', 'false'); $client->setparameterget('include_docs', 'true'); $client->setheaders('accept', 'application/json'); $response = $client->request(zend_http_client::get); $body = $response->getbody(); $results = Zend_Json::decode($body); print_r($results);
166 Including Docs id key value doc " " "Building iphone Apps with HTML, CSS, and JavaScript" 192 Array ( [_id] => [_rev] => 1-09ce09fef da99957c7b14cf2 ) " " "CouchDB: The Definitive Guide" 272 Array ( [_id] => [_rev] => 2-099d205cbb59d989700ad7692cbb3e66 ) " " "DocBook: The Definitive Guide" 648 Array ( [_id] => [_rev] => 1-b945cb4799a1ccdd1689eae0e44124f1 ) " " "RESTful Web Services" 448 Array ( [_id] => [_rev] => 2-de467b329baf6259e791b830cc950ece )
167 More CouchDB Features
168 Multi-Master Replication peer-based and bi-directional no explicit cluster setup required synchronization is incremental changes feed allows for replication to other systems
169 Couchbase Mobile [1] for ios and Android 1.
170 Horizontally Scalable shared nothing architecture non-blocking reads and writes for high concurrency fault tolerant, isolated messages
171 ACID Compliant Atomicity: individual document updates are all or nothing Consistency: queries will be point in time consistent Isolation: updates isolated to document revision number Durability: success code is returned only after data is on disk
172 Authentication special _users database basic access authentication cookie authentication OAuth support
173 Security Model server admins database admins database readers document-level authorization with validation functions
174 Web Server static files as attachments (e.g. HTML, Javascript, CSS) URL rewriting HTTP proxying HTTP range requests SSL support virtual hosts
175 Application Server show functions list functions document update handlers
176 Load Balancing
177 Clustering Lounge [1] Pillow [2] BigCouch [3]
178 Extensible GeoCouch [1] for geospatial indexing couchdb-lucene [2] for full text indexing ElasticSearch [3] for full text indexing
179 Resources
180 Hosting Iris Couch Free (for now) Couchbase server GeoCouch geospatial indexing Cloudant Various pricing levels Full-text searching Ad-hoc queries Elastic scaling, clustering and sharding using BigCouch
181 Documentation and Books CouchDB Wiki CouchDB: The Definitive Guide by J. Chris Anderson, Jan Lehnardt and Noah Slater (O Reilly) Writing and Querying MapReduce Views in CouchDB by Bradley Holt (O Reilly) Scaling CouchDB by Bradley Holt (O Reilly) Getting Started with CouchDB by MC Brown (O Reilly) Beginning CouchDB by Joe Lennon (Apress)
182
183 Questions?
184 Thank Copyright 2011 Bradley Holt. All rights reserved.
CouchApps. Blog: (http://twitter.com/bradleyholt)
+ = CouchApps Blog: http://bradley-holt.com @BradleyHolt (http://twitter.com/bradleyholt) bradley.holt@foundline.com About Me (Bradley Holt) Co-Founder and Technical Director from Vermont Battery Park
More informationCapabilities of Cloudant NoSQL Database IBM Corporation
Capabilities of Cloudant NoSQL Database After you complete this section, you should understand: The features of the Cloudant NoSQL Database: HTTP RESTfulAPI Secondary indexes and MapReduce Cloudant Query
More informationThe NoSQL movement. CouchDB as an example
The NoSQL movement CouchDB as an example About me sleepnova - I'm a freelancer Interests: emerging technology, digital art web, embedded system, javascript, programming language Some of my works: Chrome
More informationSCALING COUCHDB WITH BIGCOUCH. Adam Kocoloski Cloudant
SCALING COUCHDB WITH BIGCOUCH Adam Kocoloski Cloudant Erlang Factory SF Bay Area 2011 OUTLINE Introductions Brief intro to CouchDB BigCouch Usage Overview BigCouch Internals Reports from the Trenches 2
More informationDeploying to the Edge CouchDB
Deploying to the Edge CouchDB Apache Relax Who s Talking? J Chris Anderson / jchris@apache.org / @jchris PHP -> Rails -> JSON -> CouchDB Director, couch.io And You? Web developers? JavaScript coders? CouchDB
More informationNon-Relational Databases. Pelle Jakovits
Non-Relational Databases Pelle Jakovits 25 October 2017 Outline Background Relational model Database scaling The NoSQL Movement CAP Theorem Non-relational data models Key-value Document-oriented Column
More informationSTARCOUNTER. Technical Overview
STARCOUNTER Technical Overview Summary 3 Introduction 4 Scope 5 Audience 5 Prerequisite Knowledge 5 Virtual Machine Database Management System 6 Weaver 7 Shared Memory 8 Atomicity 8 Consistency 9 Isolation
More informationThis tutorial helps the professionals aspiring to make a career in Big Data and NoSQL databases, especially the documents store.
About the Tutorial This tutorial provides a brief knowledge about CouchDB, the procedures to set it up, and the ways to interact with CouchDB server using curl and Futon. It also tells how to create, update
More informationJargons, Concepts, Scope and Systems. Key Value Stores, Document Stores, Extensible Record Stores. Overview of different scalable relational systems
Jargons, Concepts, Scope and Systems Key Value Stores, Document Stores, Extensible Record Stores Overview of different scalable relational systems Examples of different Data stores Predictions, Comparisons
More informationOpenEdge & CouchDB. Integrating the OpenEdge ABL with CouchDB. Don Beattie Software Architect Quicken Loans Inc.
OpenEdge & CouchDB Integrating the OpenEdge ABL with CouchDB Don Beattie Software Architect Quicken Loans Inc. Apache CouchDB has started. Time to relax. Intro The OpenEdge RDBMS is a great database that
More informationCIB Session 12th NoSQL Databases Structures
CIB Session 12th NoSQL Databases Structures By: Shahab Safaee & Morteza Zahedi Software Engineering PhD Email: safaee.shx@gmail.com, morteza.zahedi.a@gmail.com cibtrc.ir cibtrc cibtrc 2 Agenda What is
More informationIntroduction to Big Data. NoSQL Databases. Instituto Politécnico de Tomar. Ricardo Campos
Instituto Politécnico de Tomar Introduction to Big Data NoSQL Databases Ricardo Campos Mestrado EI-IC Análise e Processamento de Grandes Volumes de Dados Tomar, Portugal, 2016 Part of the slides used in
More informationCSE 544 Principles of Database Management Systems. Magdalena Balazinska Winter 2015 Lecture 14 NoSQL
CSE 544 Principles of Database Management Systems Magdalena Balazinska Winter 2015 Lecture 14 NoSQL References Scalable SQL and NoSQL Data Stores, Rick Cattell, SIGMOD Record, December 2010 (Vol. 39, No.
More informationChapter 24 NOSQL Databases and Big Data Storage Systems
Chapter 24 NOSQL Databases and Big Data Storage Systems - Large amounts of data such as social media, Web links, user profiles, marketing and sales, posts and tweets, road maps, spatial data, email - NOSQL
More informationNoSQL systems. Lecture 21 (optional) Instructor: Sudeepa Roy. CompSci 516 Data Intensive Computing Systems
CompSci 516 Data Intensive Computing Systems Lecture 21 (optional) NoSQL systems Instructor: Sudeepa Roy Duke CS, Spring 2016 CompSci 516: Data Intensive Computing Systems 1 Key- Value Stores Duke CS,
More informationDistributed Non-Relational Databases. Pelle Jakovits
Distributed Non-Relational Databases Pelle Jakovits Tartu, 7 December 2018 Outline Relational model NoSQL Movement Non-relational data models Key-value Document-oriented Column family Graph Non-relational
More informationC exam. Number: C Passing Score: 800 Time Limit: 120 min IBM C IBM Cloud Platform Application Development
C5050-285.exam Number: C5050-285 Passing Score: 800 Time Limit: 120 min IBM C5050-285 IBM Cloud Platform Application Development Exam A QUESTION 1 What are the two key benefits of Cloudant Sync? (Select
More informationNOSQL EGCO321 DATABASE SYSTEMS KANAT POOLSAWASD DEPARTMENT OF COMPUTER ENGINEERING MAHIDOL UNIVERSITY
NOSQL EGCO321 DATABASE SYSTEMS KANAT POOLSAWASD DEPARTMENT OF COMPUTER ENGINEERING MAHIDOL UNIVERSITY WHAT IS NOSQL? Stands for No-SQL or Not Only SQL. Class of non-relational data storage systems E.g.
More informationCIT 668: System Architecture. Distributed Databases
CIT 668: System Architecture Distributed Databases Topics 1. MySQL 2. Concurrency 3. Transactions and ACID 4. Database scaling 5. Replication 6. Partitioning 7. Brewer s CAP Theorem 8. ACID vs. BASE 9.
More informationApache CouchDB. Release 1.3.0
Apache CouchDB Release 1.3.0 March 28, 2014 Contents i ii CHAPTER 1 Introduction There are two interfaces to CouchDB, the built-in Futon web-based interface and the CouchDB API accessed through the HTTP
More informationReST 2000 Roy Fielding W3C
Outline What is ReST? Constraints in ReST REST Architecture Components Features of ReST applications Example of requests in REST & SOAP Complex REST request REST Server response Real REST examples REST
More informationOral Questions and Answers (DBMS LAB) Questions & Answers- DBMS
Questions & Answers- DBMS https://career.guru99.com/top-50-database-interview-questions/ 1) Define Database. A prearranged collection of figures known as data is called database. 2) What is DBMS? Database
More informationEnterprise Software Architecture & Design
Enterprise Software Architecture & Design Characteristics Servers application server, web server, proxy servers etc. Clients heterogeneous users, business partners (B2B) scale large number of clients distributed
More informationFriday, April 26, 13
Introduc)on to Map Reduce with Couchbase Tugdual Grall / @tgrall NoSQL Ma)ers 13 - Cologne - April 25th 2013 About Me Tugdual Tug Grall Couchbase exo Technical Evangelist CTO Oracle Developer/Product Manager
More informationIntroduction to NoSQL Databases
Introduction to NoSQL Databases Roman Kern KTI, TU Graz 2017-10-16 Roman Kern (KTI, TU Graz) Dbase2 2017-10-16 1 / 31 Introduction Intro Why NoSQL? Roman Kern (KTI, TU Graz) Dbase2 2017-10-16 2 / 31 Introduction
More informationDATABASE SYSTEMS. Database programming in a web environment. Database System Course, 2016
DATABASE SYSTEMS Database programming in a web environment Database System Course, 2016 AGENDA FOR TODAY Advanced Mysql More than just SELECT Creating tables MySQL optimizations: Storage engines, indexing.
More informationExtraHop 7.3 ExtraHop Trace REST API Guide
ExtraHop 7.3 ExtraHop Trace REST API Guide 2018 ExtraHop Networks, Inc. All rights reserved. This manual in whole or in part, may not be reproduced, translated, or reduced to any machinereadable form without
More informationComposer Help. Web Request Common Block
Composer Help Web Request Common Block 7/4/2018 Web Request Common Block Contents 1 Web Request Common Block 1.1 Name Property 1.2 Block Notes Property 1.3 Exceptions Property 1.4 Request Method Property
More informationAjax Ajax Ajax = Asynchronous JavaScript and XML Using a set of methods built in to JavaScript to transfer data between the browser and a server in the background Reduces the amount of data that must be
More informationBe warned Niklas Gustavsson
1 Niklas Gustavsson niklas.gustavsson@callistaenterprise.se www.callistaenterprise.se Be warned CouchDB, Slide 2 2 Won't replace your relational database You (probably) won't be using it any time soon
More informationRealtime visitor analysis with Couchbase and Elasticsearch
Realtime visitor analysis with Couchbase and Elasticsearch Jeroen Reijn @jreijn #nosql13 About me Jeroen Reijn Software engineer Hippo @jreijn http://blog.jeroenreijn.com About Hippo Visitor Analysis OneHippo
More informationNasuni Data API Nasuni Corporation Boston, MA
Nasuni Corporation Boston, MA Introduction The Nasuni API has been available in the Nasuni Filer since September 2012 (version 4.0.1) and is in use by hundreds of mobile clients worldwide. Previously,
More informationEPL660: Information Retrieval and Search Engines Lab 3
EPL660: Information Retrieval and Search Engines Lab 3 Παύλος Αντωνίου Γραφείο: B109, ΘΕΕ01 University of Cyprus Department of Computer Science Apache Solr Popular, fast, open-source search platform built
More informationCS 498RK FALL RESTFUL APIs
CS 498RK FALL 2017 RESTFUL APIs Designing Restful Apis blog.mwaysolutions.com/2014/06/05/10-best-practices-for-better-restful-api/ www.vinaysahni.com/best-practices-for-a-pragmatic-restful-api Resources
More informationNasuni Data API Nasuni Corporation Boston, MA
Nasuni Corporation Boston, MA Introduction The Nasuni API has been available in the Nasuni Filer since September 2012 (version 4.0.1) and is in use by hundreds of mobile clients worldwide. Previously,
More informationWeb Applications. Software Engineering 2017 Alessio Gambi - Saarland University
Web Applications Software Engineering 2017 Alessio Gambi - Saarland University Based on the work of Cesare Pautasso, Christoph Dorn, Andrea Arcuri, and others ReCap Software Architecture A software system
More informationBlack Box DCX3000 / DCX1000 Using the API
Black Box DCX3000 / DCX1000 Using the API updated 2/22/2017 This document will give you a brief overview of how to access the DCX3000 / DCX1000 API and how you can interact with it using an online tool.
More informationCourse Content MongoDB
Course Content MongoDB 1. Course introduction and mongodb Essentials (basics) 2. Introduction to NoSQL databases What is NoSQL? Why NoSQL? Difference Between RDBMS and NoSQL Databases Benefits of NoSQL
More informationScalability of web applications
Scalability of web applications CSCI 470: Web Science Keith Vertanen Copyright 2014 Scalability questions Overview What's important in order to build scalable web sites? High availability vs. load balancing
More informationBuilding RESTful Web Services with Erlang and Yaws
Building RESTful Web Services with Erlang and Yaws Steve Vinoski Member of Technical Staff Verivue, Inc., Westford, MA USA http://steve.vinoski.net/ QCon San Francisco 20 November 2008 Erlang Functional
More informationScaling DreamFactory
Scaling DreamFactory This white paper is designed to provide information to enterprise customers about how to scale a DreamFactory Instance. The sections below talk about horizontal, vertical, and cloud
More informationDocument stores using CouchDB
2018 Document stores using CouchDB ADVANCED DATABASE PROJECT APARNA KHIRE, MINGRUI DONG aparna.khire@vub.be, mingdong@ulb.ac.be 1 Table of Contents 1. Introduction... 3 2. Background... 3 2.1 NoSQL Database...
More informationDistributed Systems. 29. Distributed Caching Paul Krzyzanowski. Rutgers University. Fall 2014
Distributed Systems 29. Distributed Caching Paul Krzyzanowski Rutgers University Fall 2014 December 5, 2014 2013 Paul Krzyzanowski 1 Caching Purpose of a cache Temporary storage to increase data access
More informationSCALARIS. Irina Calciu Alex Gillmor
SCALARIS Irina Calciu Alex Gillmor RoadMap Motivation Overview Architecture Features Implementation Benchmarks API Users Demo Conclusion Motivation (NoSQL) "One size doesn't fit all" Stonebraker Reinefeld
More informationA Survey Paper on NoSQL Databases: Key-Value Data Stores and Document Stores
A Survey Paper on NoSQL Databases: Key-Value Data Stores and Document Stores Nikhil Dasharath Karande 1 Department of CSE, Sanjay Ghodawat Institutes, Atigre nikhilkarande18@gmail.com Abstract- This paper
More informationThis tutorial discusses the basics of PouchDB along with relevant examples for easy understanding.
About this Tutorial PouchDBis an open source in-browser database API written in JavaScript. It ismodelled after CouchDB a NoSQL database that powers npm. Using this API, we can build applications that
More informationOracle APEX 18.1 New Features
Oracle APEX 18.1 New Features May, 2018 Safe Harbor Statement The following is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated
More informationCOUCHDB - CURL & FUTON
COUCHDB - CURL & FUTON http://www.tutorialspoint.com/couchdb/couchdb_curl_futon.htm Copyright tutorialspoint.com curl Utility curl utility is a way to communicate with CouchDB. It is a tool to transfer
More informationMarkLogic Server. REST Application Developer s Guide. MarkLogic 9 May, Copyright 2017 MarkLogic Corporation. All rights reserved.
REST Application Developer s Guide 1 MarkLogic 9 May, 2017 Last Revised: 9.0-2, July, 2017 Copyright 2017 MarkLogic Corporation. All rights reserved. Table of Contents Table of Contents REST Application
More informationThe course modules of MongoDB developer and administrator online certification training:
The course modules of MongoDB developer and administrator online certification training: 1 An Overview of the Course Introduction to the course Table of Contents Course Objectives Course Overview Value
More informationCaching. Caching Overview
Overview Responses to specific URLs cached in intermediate stores: Motivation: improve performance by reducing response time and network bandwidth. Ideally, subsequent request for the same URL should be
More information5/2/16. Announcements. NoSQL Motivation. The New Hipster: NoSQL. Serverless. What is the Problem? Database Systems CSE 414
Announcements Database Systems CSE 414 Lecture 16: NoSQL and JSon Current assignments: Homework 4 due tonight Web Quiz 6 due next Wednesday [There is no Web Quiz 5 Today s lecture: JSon The book covers
More informationPROFESSIONAL. NoSQL. Shashank Tiwari WILEY. John Wiley & Sons, Inc.
PROFESSIONAL NoSQL Shashank Tiwari WILEY John Wiley & Sons, Inc. Examining CONTENTS INTRODUCTION xvil CHAPTER 1: NOSQL: WHAT IT IS AND WHY YOU NEED IT 3 Definition and Introduction 4 Context and a Bit
More informationDatabase Systems CSE 414
Database Systems CSE 414 Lecture 16: NoSQL and JSon CSE 414 - Spring 2016 1 Announcements Current assignments: Homework 4 due tonight Web Quiz 6 due next Wednesday [There is no Web Quiz 5] Today s lecture:
More informationFull Stack Web Developer Nanodegree Syllabus
Full Stack Web Developer Nanodegree Syllabus Build Complex Web Applications Before You Start Thank you for your interest in the Full Stack Web Developer Nanodegree! In order to succeed in this program,
More information10/18/2017. Announcements. NoSQL Motivation. NoSQL. Serverless Architecture. What is the Problem? Database Systems CSE 414
Announcements Database Systems CSE 414 Lecture 11: NoSQL & JSON (mostly not in textbook only Ch 11.1) HW5 will be posted on Friday and due on Nov. 14, 11pm [No Web Quiz 5] Today s lecture: NoSQL & JSON
More informationCouchDB. Johan Sørensen
CouchDB Johan Sørensen This is CouchDB A wonderful idea This is CouchDB A wonderful idea Based on an awful thing This is CouchDB Lotus Notes This is CouchDB Damien Katz wanted to recreate Lotus Notes This
More informationAdvanced Data Management Technologies
ADMT 2017/18 Unit 15 J. Gamper 1/44 Advanced Data Management Technologies Unit 15 Introduction to NoSQL J. Gamper Free University of Bozen-Bolzano Faculty of Computer Science IDSE ADMT 2017/18 Unit 15
More informationHTTP, REST Web Services
HTTP, REST Web Services Martin Ledvinka martin.ledvinka@fel.cvut.cz Winter Term 2018 Martin Ledvinka (martin.ledvinka@fel.cvut.cz) HTTP, REST Web Services Winter Term 2018 1 / 36 Contents 1 HTTP 2 RESTful
More informationAN introduction to nosql databases
AN introduction to nosql databases Terry McCann @SQLshark Purpose of this presentation? It is important for a data scientist / data engineer to have the right tool for the right job. We will look at an
More informationEnterprise Web based Software Architecture & Design
IMPORTANT NOTICE TO STUDENTS These slides are NOT to be used as a replacement for student notes. These slides are sometimes vague and incomplete on purpose to spark class discussions Enterprise Web based
More informationDesigning RESTful Web Applications. Ben Ramsey
Designing RESTful Web Applications Ben Ramsey About Me Proud father of 3-month-old Sean Organizer of Atlanta PHP user group Founder of PHP Groups Founding principal of PHP Security Consortium Original
More informationTopics. History. Architecture. MongoDB, Mongoose - RDBMS - SQL. - NoSQL
Databases Topics History - RDBMS - SQL Architecture - SQL - NoSQL MongoDB, Mongoose Persistent Data Storage What features do we want in a persistent data storage system? We have been using text files to
More informationGridGain and Apache Ignite In-Memory Performance with Durability of Disk
GridGain and Apache Ignite In-Memory Performance with Durability of Disk Dmitriy Setrakyan Apache Ignite PMC GridGain Founder & CPO http://ignite.apache.org #apacheignite Agenda What is GridGain and Ignite
More informationModern App Architecture
Modern App Architecture Brent Edwards Principal Lead Consultant Magenic Level: Intermediate BrentE@magenic.com @brentledwards http://www.brentedwards.net https://github.com/brentedwards BRENT EDWARDS MyVote
More informationGoal of the presentation is to give an introduction of NoSQL databases, why they are there.
1 Goal of the presentation is to give an introduction of NoSQL databases, why they are there. We want to present "Why?" first to explain the need of something like "NoSQL" and then in "What?" we go in
More informationDocument Object Storage with MongoDB
Document Object Storage with MongoDB Lecture BigData Analytics Julian M. Kunkel julian.kunkel@googlemail.com University of Hamburg / German Climate Computing Center (DKRZ) 2017-12-15 Disclaimer: Big Data
More informationCSE 344 Final Review. August 16 th
CSE 344 Final Review August 16 th Final In class on Friday One sheet of notes, front and back cost formulas also provided Practice exam on web site Good luck! Primary Topics Parallel DBs parallel join
More informationElasticSearch in Production
ElasticSearch in Production lessons learned Anne Veling, ApacheCon EU, November 6, 2012 agenda! Introduction! ElasticSearch! Udini! Upcoming Tool! Lessons Learned introduction! Anne Veling, @anneveling!
More informationRelease Presentation. ODS Web Services Version Open Data Services Via Web Services. Release Date: 2014/09/30
Release Presentation ODS Web Services Version 1.1.1 Open Data Services Via Web Services Release Date: 2014/09/30 Deliverables The document represents a companion standard recommendation for interacting
More informationData Transformation and Query Analysis of Elasticsearch and CouchDB Document Oriented Databases
Data Transformation and Query Analysis of Elasticsearch and CouchDB Document Oriented Databases Thesis submitted in partial fulfillment of the requirements for the award of degree of Master of Engineering
More informationSearch Engines and Time Series Databases
Università degli Studi di Roma Tor Vergata Dipartimento di Ingegneria Civile e Ingegneria Informatica Search Engines and Time Series Databases Corso di Sistemi e Architetture per Big Data A.A. 2017/18
More informationWWW, REST, and Web Services
WWW, REST, and Web Services Instructor: Yongjie Zheng Aprile 18, 2017 CS 5553: Software Architecture and Design World Wide Web (WWW) What is the Web? What challenges does the Web have to address? 2 What
More informationModern Database Concepts
Modern Database Concepts Basic Principles Doc. RNDr. Irena Holubova, Ph.D. holubova@ksi.mff.cuni.cz NoSQL Overview Main objective: to implement a distributed state Different objects stored on different
More informationIBM Planning Analytics Workspace Local Distributed Soufiane Azizi. IBM Planning Analytics
IBM Planning Analytics Workspace Local Distributed Soufiane Azizi IBM Planning Analytics IBM Canada - Cognos Ottawa Lab. IBM Planning Analytics Agenda 1. Demo PAW High Availability on a Prebuilt Swarm
More informationOracle NoSQL Database Enterprise Edition, Version 18.1
Oracle NoSQL Database Enterprise Edition, Version 18.1 Oracle NoSQL Database is a scalable, distributed NoSQL database, designed to provide highly reliable, flexible and available data management across
More informationAzure-persistence MARTIN MUDRA
Azure-persistence MARTIN MUDRA Storage service access Blobs Queues Tables Storage service Horizontally scalable Zone Redundancy Accounts Based on Uri Pricing Calculator Azure table storage Storage Account
More information04 Webservices. Web APIs REST Coulouris. Roy Fielding, Aphrodite, chp.9. Chp 5/6
04 Webservices Web APIs REST Coulouris chp.9 Roy Fielding, 2000 Chp 5/6 Aphrodite, 2002 http://www.xml.com/pub/a/2004/12/01/restful-web.html http://www.restapitutorial.com Webservice "A Web service is
More informationHelp! I need more servers! What do I do?
Help! I need more servers! What do I do? Scaling a PHP application 1 2-Feb-09 Introduction A real world example The wonderful world of startups Who am I? 2 2-Feb-09 Presentation Overview - Scalability
More informationComputer Networks. Wenzhong Li. Nanjing University
Computer Networks Wenzhong Li Nanjing University 1 Chapter 8. Internet Applications Internet Applications Overview Domain Name Service (DNS) Electronic Mail File Transfer Protocol (FTP) WWW and HTTP Content
More informationCOMP9321 Web Application Engineering
COMP9321 Web Application Engineering Semester 2, 2015 Dr. Amin Beheshti Service Oriented Computing Group, CSE, UNSW Australia Week 6 http://webapps.cse.unsw.edu.au/webcms2/course/index.php?cid=2411 1 We
More informationMongoDB An Overview. 21-Oct Socrates
MongoDB An Overview 21-Oct-2016 Socrates Agenda What is NoSQL DB? Types of NoSQL DBs DBMS and MongoDB Comparison Why MongoDB? MongoDB Architecture Storage Engines Data Model Query Language Security Data
More informationBaasBox. Open Source Backend as a Service. Otto Hylli
BaasBox Open Source Backend as a Service Otto Hylli Overview (1/2) Developed by BaasBox an Italian startup company Project was declared started on 1st of July 2012 on the BaasBox blog Open source under
More informationbig picture parallel db (one data center) mix of OLTP and batch analysis lots of data, high r/w rates, 1000s of cheap boxes thus many failures
Lecture 20 -- 11/20/2017 BigTable big picture parallel db (one data center) mix of OLTP and batch analysis lots of data, high r/w rates, 1000s of cheap boxes thus many failures what does paper say Google
More informationRKN 2015 Application Layer Short Summary
RKN 2015 Application Layer Short Summary HTTP standard version now: 1.1 (former 1.0 HTTP /2.0 in draft form, already used HTTP Requests Headers and body counterpart: answer Safe methods (requests): GET,
More informationMongoDB - a No SQL Database What you need to know as an Oracle DBA
MongoDB - a No SQL Database What you need to know as an Oracle DBA David Burnham Aims of this Presentation To introduce NoSQL database technology specifically using MongoDB as an example To enable the
More information10 Million Smart Meter Data with Apache HBase
10 Million Smart Meter Data with Apache HBase 5/31/2017 OSS Solution Center Hitachi, Ltd. Masahiro Ito OSS Summit Japan 2017 Who am I? Masahiro Ito ( 伊藤雅博 ) Software Engineer at Hitachi, Ltd. Focus on
More informationWorking with the Seagull Framework. By Demian Turner, Seagull Systems
Working with the Seagull Framework By Demian Turner, Seagull Systems seagullproject.org Who is Demian Turner? Developing websites since 1996, using PHP since 1999 Committer on several open source projects:
More informationIntroduction Aggregate data model Distribution Models Consistency Map-Reduce Types of NoSQL Databases
Introduction Aggregate data model Distribution Models Consistency Map-Reduce Types of NoSQL Databases Key-Value Document Column Family Graph John Edgar 2 Relational databases are the prevalent solution
More informationIntroduction to Computer Science. William Hsu Department of Computer Science and Engineering National Taiwan Ocean University
Introduction to Computer Science William Hsu Department of Computer Science and Engineering National Taiwan Ocean University Chapter 9: Database Systems supplementary - nosql You can have data without
More informationThis tutorial will help you understand JSON and its use within various programming languages such as PHP, PERL, Python, Ruby, Java, etc.
About the Tutorial JSON or JavaScript Object Notation is a lightweight text-based open standard designed for human-readable data interchange. The JSON format was originally specified by Douglas Crockford,
More informationOracle NoSQL Database Enterprise Edition, Version 18.1
Oracle NoSQL Database Enterprise Edition, Version 18.1 Oracle NoSQL Database is a scalable, distributed NoSQL database, designed to provide highly reliable, flexible and available data management across
More informationScott Meder Senior Regional Sales Manager
www.raima.com Scott Meder Senior Regional Sales Manager scott.meder@raima.com Short Introduction to Raima What is Data Management What are your requirements? How do I make the right decision? - Architecture
More informationCONTRACTOR IS ACTING UNDER A FRAMEWORK CONTRACT CONCLUDED WITH THE COMMISSION
Hands-on Session NoSQL DB Donato Summa THE CONTRACTOR IS ACTING UNDER A FRAMEWORK CONTRACT CONCLUDED WITH THE COMMISSION 1 Summary Elasticsearch How to get Elasticsearch up and running ES data organization
More informationProtocol Buffers, grpc
Protocol Buffers, grpc Szolgáltatásorientált rendszerintegráció Service-Oriented System Integration Dr. Balázs Simon BME, IIT Outline Remote communication application level vs. transport level protocols
More informationGoal of this document: A simple yet effective
INTRODUCTION TO ELK STACK Goal of this document: A simple yet effective document for folks who want to learn basics of ELK (Elasticsearch, Logstash and Kibana) without any prior knowledge. Introduction:
More informationGeneXus for Smart Devices course - Architecture of Smart Device Applications
GeneXus for Smart Devices course - Architecture of Smart Device Applications The problem to solve is the construction of a backend for a real estate office, with a web section and another section for smart
More informationMySQL High Availability
MySQL High Availability InnoDB Cluster and NDB Cluster Ted Wennmark ted.wennmark@oracle.com Copyright 2016, Oracle and/or its its affiliates. All All rights reserved. Safe Harbor Statement The following
More informationCSE 344 JULY 9 TH NOSQL
CSE 344 JULY 9 TH NOSQL ADMINISTRATIVE MINUTIAE HW3 due Wednesday tests released actual_time should have 0s not NULLs upload new data file or use UPDATE to change 0 ~> NULL Extra OOs on Mondays 5-7pm in
More informationSeminar on. By Sai Rahul Reddy P. 2/2/2005 Web Caching 1
Seminar on By Sai Rahul Reddy P 2/2/2005 Web Caching 1 Topics covered 1. Why Caching 2. Advantages of Caching 3. Disadvantages of Caching 4. Cache-Control HTTP Headers 5. Proxy Caching 6. Caching architectures
More information