Experiences using CouchDB inside Microsoft's Azure team
22. Apr 2014•0 gefällt mir•5,560 views
Downloaden Sie, um offline zu lesen
Melden
Internet
Technologie
Co-presented with Will Perry (@willpe). Real-world experiences using CouchDB inside Microsoft, and also how to get started with CouchDB on Microsoft Azure.
3. An app we’ve built
How we built it. Some tips and tricks
Share some experience on helping folks get used to non-relational databases.
Open Source at Microsoft
Running CouchDB in Windows Azure
4. the app.
Daylight – a test automation system for the cloud
Stores metadata about every revision of every test case in our product
About 10k tests updated about 6 times a day
Stores details of test runs and results
About 5k results stored 6 times a day
100% in the cloud
6. the database.
Must haves:
Scale to millions/billions of documents
Fairly loose schema
Not a single point of failure
Multiple indexes – really fast access to docs
Nice to haves:
Web friendly
Aggregate oriented
Http Interface
Easily partitionable
SQL
TABLE
COUCH
7. CouchDB was the most natural fit
for the data we had
and the app we were building
…and the Apache 2.0 license helped keep the lawyers happy
8. the architecture.
Multi-node deployment with application server and couch db running on each node
and replicating across the deployment
Node 0
Load Balancer
Node 1 Node 2
VHD VHD VHD
10. semi-static typing.
[JsonProperty("attributes")]
public JObject Attributes { get; set; }
[JsonProperty("full_name", Required = Required.Always)]
public string FullName { get; set; }
[JsonProperty("priority")]
public int Priority { get; set; }
Strong typing when we want it, loose typing when we don’t
11. http.
using (var httpClient = new HttpClient(couchBaseUri))
{
return await httpClient.GetAsync(resultId);
}
We didn’t feel the need to use a client library, and just extended the built-in http stack to
encapsulate some of our conventions
12. design documents.
In the source tree
Used a directory tree to map to the json tree
Compile into a json document at start-up
Compare to existing design doc and overwrite
if different
14. experience.
We really like CouchDB. It’s been really reliable, simple to manage and reduced our
implementation costs.
Sometimes indexing can slow us down and there’s a reasonable ramp-up required for
new devs on the project.
Overall, we’re confident we made the right choice.
15. Wholly owned subsidiary of Microsoft
To advance Microsoft’s investment
in openness
Interoperability
Open source
Open standards
22. Virtual Machine Sizes
VM Size
CPU
Cores
Memory
Bandwidth
(Mbps)
# Data
Disks
Extra
Small
Shared 768 MB 5 1
Small 1 1.75 GB 100 2
Medium 2 3.5 GB 200 4
Large 4 7 GB 400 8
Extra
Large
8 14 GB 800 16
25. Windows Azure Developer Center
Open-source SDKs for
popular programming
languages, to get you
up and running quickly
Choice of popular IDEs
such as Visual Studio
and Eclipse
Consistent REST protocols and APIs across Windows Azure
services
http://www.windowsazure.com/en-us/develop/overview/
.NET driver
Node.js driver
Java driver
PHP driver
Python driver
Driver download page
28. azure topic verb options
Command Line Syntax Overview
prompt>
account
account location
account affinity-group
vm
vm disk
vm endpoint
vm image
service
service cert
site
config
download
import
list
show
delete
start
restart
shutdown
capture
create
attach
detach
browse
set
username
password
dns-prefix
vm-name
lb-port
target-image-name
source-path
disk-image-name
size-in-gb
thumbprint
value
-v
-vv
29. Example: Provisioning a Cluster
azure vm create couchsd "OpenLogic__OpenLogic-CentOS-62-20120531-
en-us-30GB.vhd" username password -l "West US" -e
azure vm create couchsd "OpenLogic__OpenLogic-CentOS-62-20120531-
en-us-30GB.vhd" username password -l "West US" -e 23 -c
azure vm create couchsd "OpenLogic__OpenLogic-CentOS-62-20120531-
en-us-30GB.vhd" username password -l "West US" -e 24 -c
azure vm endpoint create couchsd 27017 27017
azure vm endpoint create couchsd-2 27018 27018
azure vm endpoint create couchsd-3 27019 27019