I think it would be more efficient to read one of the inputs into a
map for random access instead of iterating it every time.

On Sun, Mar 9, 2014 at 4:48 PM, Timothy Washington <twash...@gmail.com> wrote:
> Hey Frank,
>
> Try opening up a repl, and running this for comprehension.
>
> (def user_textfile [[:id1 {:name 'Frank'}] [:id3 {:name 'Tim'}]])
> (def user_database [[:id1 {:age 38}] [:id2 {:age 27}] [:id3 {:age 18}] [:id4
> {:age 60}]])
>
> (for [i user_textfile
>         j user_database
>         :when (= (first i) (first j))]
>     {(first i) (merge (second i) (second j))})
>
> ({:id1 {:age 38, :name Frank'}} {:id3 {:age 18, :name Tim'}})  ;; result
> from repl
>
>
>
> Hth
>
> Tim Washington
> Interruptsoftware.com
>
>
> On Sun, Mar 9, 2014 at 5:33 AM, Frank Behrens <fbehr...@gmail.com> wrote:
>>
>> Hi,
>>
>> i'm investigating if clojure can be used to solve the challenges and
>> problems we have at my day job better than ruby or powershell. A very common
>> use case is validating data from different  systems against some criteria. i
>> believe clojure can be our silver bullet, but before that, it seems to be
>> required to wrap my head around it.
>>
>> So I am starting in the first level with the challenge to validate some
>> data from the user database against our active directory.
>>
>> I already have all the parts to make it work: Which is to make a hash by
>> user_id from the database table, export a textfile from AD, each line
>> representing a user, parse it, merge the information from the
>> user_table_hash, and voila.
>>
>> I did not finish to implement this. So I don't know if this naive approach
>> will work with 400.000 records in the user database and 100.000 in the
>> textfile.
>> But I already think about how I could implement this in a more memory
>> efficient way.
>>
>> So my simple question:
>>
>> I have user_textfile (100.000 records) which can be parsed into a
>> unordered list of user-maps.
>> I have user_table in the database(400.000 record) which I can query with
>> order and gives me an ordered list of user-maps.
>>
>> So I would first order the user_textfile and then conj the user_table
>> ordered list into it, while doing the database query.
>> Is that approach right ? How would I then merge the two ordered lists like
>> in the example below?
>>
>> (defn user_textfile
>>   ([:id1 {:name 'Frank'}]
>>    [:id3 {:name 'Tim'}]))
>>
>> (defn user_database
>>   ([:id1 {:age 38}]
>>    [:id2 {:age 27}]
>>    [:id3 {:age 18}]
>>    [:id4 {:age 60}]))
>>
>> (merge-sorted-lists user_database user_textfile)
>> =>
>>   ([:id1 {:name 'Frank' :age 38}]
>>    [:id3 {:name 'Tim'   :age 18}]))
>>
>> Any feedback is appreciated.
>> Have a nice day,
>> Frank
>>
>> --
>> You received this message because you are subscribed to the Google
>> Groups "Clojure" group.
>> To post to this group, send email to clojure@googlegroups.com
>> Note that posts from new members are moderated - please be patient with
>> your first post.
>> To unsubscribe from this group, send email to
>> clojure+unsubscr...@googlegroups.com
>> For more options, visit this group at
>> http://groups.google.com/group/clojure?hl=en
>> ---
>> You received this message because you are subscribed to the Google Groups
>> "Clojure" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to clojure+unsubscr...@googlegroups.com.
>> For more options, visit https://groups.google.com/d/optout.
>
>
> --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clojure@googlegroups.com
> Note that posts from new members are moderated - please be patient with your
> first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en
> ---
> You received this message because you are subscribed to the Google Groups
> "Clojure" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to clojure+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to