KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I have a database (couchDB) with about 90k documents in it. The documents are very simple like this: { "_id": "1894496e-1c9e-4b40-9ba6-65ffeaca2ccf", "_rev": "1-2d978d19-3651-4af9-a8d5-b70759655e6a", "productName": "Cola" } now I want one day to sync this database with a mobile device. Obviously 90k docs shouldn't go to the phone all at once. This is why I wrote filter functions. These are supposed to filter by "productName". At first in Javascript later in Erlang to gain performance. These Filter functions look like this in JavaScript: { "_id": "_design/local_filters", "_rev": "11-57abe842a82c9835d63597be2b05117d", "filters": { "by_fanta": "function(doc, req){ if(doc.productName == 'Fanta'){ return doc;}}", "by_wasser": "function(doc, req){if(doc.productName == 'Wasser'){ return doc;}}", "by_sprite": "function(doc, req){if(doc.productName == 'Sprite'){ return doc;}}" } } and like this in Erlang: { "_id": "_design/erlang_filter", "_rev": "74-f537ec4b6508cee1995baacfddffa6d4", "language": "erlang", "filters": { "by_fanta": "fun({Doc}, {Req}) -> case proplists:get_value(<<\"productName\">>, Doc) of <<\"Fanta\">> -> true; _ -> false end end.", "by_wasser": "fun({Doc}, {Req}) -> case proplists:get_value(<<\"productName\">>, Doc) of <<\"Wasser\">> -> true; _ -> false end end.", "by_sprite": "fun({Doc}, {Req}) -> case proplists:get_value(<<\"productName\">>, Doc) of <<\"Sprite\">> -> true; _ -> false end end." } } To keep it simple there is no query yet but a "hardcoded" string. The filter all work. The problem is they are way to slow. I wrote a testprogram first in Java later in Perl to test the time it takes to filter the documents. Here one of my Perl scripts: $dt =
Tags (comma-separated)
Save Edits
Cancel