couchdb-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Robert Dionne <dio...@dionne-associates.com>
Subject Re: Erlang API
Date Thu, 12 Feb 2009 09:56:42 GMT



On Feb 12, 2009, at 2:59 AM, Michael McDaniel wrote:

>
> On Wed, Feb 11, 2009 at 02:57:19PM -0800, Chris Anderson wrote:
>> On Wed, Feb 11, 2009 at 2:36 PM, Michael McDaniel  
>> <couchdb@autosys.us> wrote:
>>>
>>>  I'll post some code when it does a bit more than gurgle bubbles.
>>
>> It sounds like you are on the right track, and you pointed out the
>> bits 'erlview' etc that I saw reading it. The only other thing I see
>> (which is probably me missing stuff), is how does this work if we  
>> want
>> to run multiple distinct views concurrently?
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>
>  -module(erlview).
>  -behaviour(gen_server)
>
>
>  Although the map fun helpers are not written as handle_call funs, so
>  it is not entirely clear to me about the multiple concurrent views.
>  That is something I started thinking about two or three days ago
>  myself so some testing will be called for.  Though I do think it
>  will work ok if I am understanding correctly that
>  couch_query_servers:map_docs/2 always initiates the views (well,
>  except after an add_fun when map_docs runs through some as-of-yet
>  unknown-to-me method).  Because couch_query_servers:map_docs/2
>  calls couch_os_process:prompt/2 which uses gen_server:call/2.
>
>  I debated about allowing any and all arbitrary Erlang code in the
>  map funs versus having helper funs which the map fun calls
>  (e.g.  all_content/2 returns all docs whose content matches a list
>   of field/content tuples;
>   all_fields/2 returns all docs which contain all fields in a list;
>   etc. And a list output fields can be specified.).
>
>  I wound up allowing any and all arbitrary Erlang code in the map
>  funs, and also wrote some helper funs to hide some of the underlying
>  data.
>
>  As you can surmise, it is not using plain emit(doc.name, [doc]) in
>  the map funs.
>
>  Kind of a mess but, as you alluded to, a start.
>
> ~M
>
>
>>
>> I haven't seen your server code yet, but I for one would be  
>> excited to
>> help port some parts of main.js over to it.
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>
>  I look forward to the help.
>
> ~M
>
>>
>>>
>>>
>>>  Please, if there is some activity to change CDB internals to
>>>  simplify a native Erlang view server or create a more direct
>>>  interface, let me know so I don't go too far down this road.
>>
>> We'll eventually want to sandbox the Erlang (not sure if there are
>> libraries for that yet). If you keep up this work, likely you'll be
>> leading the charge for Erlang view servers.
>>
>>>
>>>  No sense replicating effort (only databases!).
>>>
>>
>> There's an active community of people forking this CouchDB git repo.
>> If you worked on your code in public there you might get some helpers
>> showing up.
>>
>> http://github.com/halorgium/couchdb/
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 
> ^
>
>  Not exactly sure what "forking this CouchDB git repo" means.
>
>  My goal is to clean up existing code and get it posted by early
>  next week.  I really need to write up a little bit of "howto"
>  for local.ini additions, compile and install instructions, and
>  couch_query_servers.erl changes/compile help.

Git is definitely worth the investment in learning, the guides at  
GitHub are very useful. A key thing is that branches are dirt cheap.   
This page in particular describes a common workflow I've found very  
good:

http://github.com/guides/fork-a-project-and-submit-your-modifications




>
>
>  Do you have some simple instructions on how to get the code
>  posted, or should I go read the http://github.com/guides/home
>  links?  I have only recently started reading about git.
>
> ~Michael
>
>>
>> Chris
>>
>> -- 
>> Chris Anderson
>> http://jchris.mfdz.com
>
> -- 
> Michael McDaniel
> Portland, Oregon, USA
> http://trip.autosys.us
> http://autosys.us
>
>


Mime
View raw message