-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
2 changed files
with
84 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,68 @@ | ||
# copied from jChris .gitignore | ||
*.beam | ||
*.gz | ||
*.tpl | ||
*.o | ||
*.lo | ||
*.m4 | ||
*.in | ||
*.in~ | ||
|
||
configure | ||
autom4te.cache | ||
build-aux | ||
|
||
# ./configure | ||
|
||
Makefile | ||
bin/Makefile | ||
config.h | ||
config.log | ||
config.status | ||
etc/Makefile | ||
etc/couchdb/Makefile | ||
etc/default/Makefile | ||
etc/init/Makefile | ||
etc/launchd/Makefile | ||
etc/logrotate.d/Makefile | ||
libtool | ||
share/Makefile | ||
src/couchdb/.deps/ | ||
src/couchdb/Makefile | ||
src/mochiweb/Makefile | ||
stamp-h1 | ||
test/.deps/ | ||
test/Makefile | ||
var/Makefile | ||
|
||
# for make | ||
|
||
bin/couchdb | ||
bin/couchdb.1 | ||
bin/couchjs | ||
bin/couchjs.1 | ||
etc/couchdb/default.ini | ||
etc/launchd/org.apache.couchdb.plist | ||
etc/logrotate.d/couchdb | ||
src/couchdb/.libs/ | ||
src/couchdb/couch.app | ||
src/couchdb/couch_erl_driver.la | ||
src/couchdb/couchjs | ||
src/couchdb/edoc-info | ||
src/couchdb/erlang.png | ||
src/couchdb/stylesheet.css | ||
test/local.ini | ||
|
||
# for make dev | ||
|
||
bin/.deps/ | ||
bin/couchjs_dev | ||
bin/couchpw | ||
etc/couchdb/default_dev.ini | ||
etc/couchdb/local_dev.ini | ||
utils/run | ||
tmp | ||
|
||
# crashes | ||
**/*.dump | ||
**/*.bak |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,8 +1,22 @@ | ||
erl-couch : A couchdb client that works with inets or ibrowse | ||
erl-couch : An Erlang based CouchDB client | ||
====================== | ||
|
||
erl-couch is a CouchDB client that picks up from <a href="http://code.google.com/p/erlcouch/">erlcouch</a> (which has been discontinued). | ||
|
||
The idea is to complete the implementation to use ibrowse as well as inets, to see if ibrowse, with it's connection pooling is more suitable than <a href="http://github.com/ngerakines/erlang_couchdb/tree/master">erlang-couchdb</a> in terms of simulating multiple clients on the same machine. Erlang-couchdb creates a new socket for each api call and was designed to be simpler. | ||
|
||
erl-couch spans a process for each host and for each database. For the stress tests we're cobbling together for couchdb this hopefully will allow us to simulating more clients from the same machine. | ||
erl-couch spawns a process for each host and for each database. For the stress tests we're cobbling together for couchdb this hopefully will allow us to simulate multiple clients from the same machine. | ||
|
||
src/couch.erl | ||
------------- | ||
|
||
This first version basically is erlcouch updated to the latest CouchDB and the with the addition of iBrowse support as well as inets. Most of the calls take an additional Options argument. For example update_doc takes a {force, true} option that retrieves the current revision and uses it to retry the update. What seems awkwatd is these Options are appended to the options passed in when creating the host and when creating the DB. When the request is finally sent, all these options are used to construct the appropriate url. This seems like a lot of list munging, particularly when each Host and each Db is a separate Pid. | ||
|
||
src/couch2.erl | ||
-------------- | ||
|
||
This second version removes the Options from most of the api calls, and adds an Args to the appropriate ones. Each Host and Db is a pid but the urls are constructed once and passed around through the calls. When the requests are sent over ibrowse and inets, the Args paramaters are constructed. Each api call returns either {ok, Json} or {error, Json, Raw}. | ||
|
||
I'm not sure how useful an api at this low level is for applications, the two scenarios I have in mind are 1. testing and 2. perhaps a server side external. | ||
|
||
|