CouchDB рдореЗрдВ рд╕реВрдЪреА рдХрд╛рд░реНрдпреЛрдВ

Habr├й рдкрд░ рдЕрдХреНрд╕рд░ рдПрдХ рдЯрд┐рдкреНрдкрдгреА рд╣реЛрддреА рд╣реИ рдХрд┐ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЕрдВрдд рддрдХ рдкреНрд░рд▓реЗрдЦрди рдХреЛ рдирд╣реАрдВ рдкрдврд╝рддреЗ рд╣реИрдВред рдЬрдм рдореИрдВрдиреЗ CouchDB рдореЗрдВ рд╕реВрдЪреА рдХрд╛рд░реНрдпреЛрдВ рдХреА рдЦреЛрдЬ рдХреА рддреЛ рдпрд╣ рд╕реНрд╡рдпрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛ред

рдкреНрд░рд╢реНрди рдореБрдЭреЗ рдЬрдЯрд┐рд▓ рд▓рдЧ рд░рд╣рд╛ рдерд╛ рдФрд░ рджрд╕реНрддрд╛рд╡реЗрдЬ рдореЗрдВ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рдордЭрд╛рдпрд╛ рдирд╣реАрдВ рдЧрдпрд╛ рдерд╛, рдореИрдВрдиреЗ рдЕрдкрдиреЗ рд╢реЛрдз рдХреЛ рдПрдХ рд╕рдореНрдорд╛рдирд┐рдд рд╕рдореБрджрд╛рдп рдХреЗ рд╕рд╛рде рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред

CouchDB рдбрд┐рдЬрд╛рдЗрди рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдореЗрдВ рд╕реВрдЪреА рдХрд╛рд░реНрдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдПрдХ рд╣реА рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдкреВрд░реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛред рдпрд╛рдиреА рдпрд╣ рд░рд┐рд▓реЗрд╢рдирд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдлреБрд▓ рдЯреЗрдмрд▓ рд╕реНрдХреИрди рдПрдирд╛рд▓реЙрдЧ рдХрд╛ рдПрдХ рдкреНрд░рдХрд╛рд░ рд╣реИред

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╛рдо рдХрд░ рд░рд╣реЗ CouchDB рд╕реНрдерд╛рдкрдирд╛ рд╕реЗ рдПрдХ рдбрд┐рдЬрд╝рд╛рдЗрди рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред

{ "_id": "_design/complete", "_rev": "2-45c7b0280b529d99b1d34f362e457860", "views": { "freq": { "map": "function(doc) { emit(doc.REQUEST, 1);}", "reduce": "function (key, values, rereduce){return sum(values);}" } }, "lists": { "basicJSON": "function(head, req) { start({headers :{'Content-Type' : 'text/plain;charset=utf-8'}}); send('{\"head\":'+toJSON(head)+', ');send('\"req\":'+toJSON(req)+', ');send('\"rows\":[');var row;var prev = null;while (row = getRow()){if (prev != null && prev.key == row.key) {} else {if (prev != null) { send(',');} send(toJSON({id: row.id, key: row.key}));} prev = row;} send(']}');}" } } 


CouchDB рджреГрдврд╝рддрд╛ рд╕реЗ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдЧрд╛рдбрд╝реА рдХреЛ рдирд╛рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕рднреА рдлрд╝рдВрдХреНрд╢рди рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рдЪрд▓рддреЗ рд╣реИрдВред рдмреЗрд╣рддрд░ рдкрдардиреАрдпрддрд╛ рдХреЗ рд▓рд┐рдП, рдмреБрдирд┐рдпрд╛рджреАрдЬреЛрди рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕реВрдЪрд┐рдпреЛрдВ рдореЗрдВ рддреИрдирд╛рдд рдХрд░реЗрдВ:

 function (head, req) { start({ headers: { 'Content-Type': 'text/plain;charset=utf-8' } }); send('{\"head\":' + toJSON(head) + ', '); send('\"req\":' + toJSON(req) + ', '); send('\"rows\":['); var row; var prev = null; while (row = getRow()) { if (prev != null && prev.key == row.key) {} else { if (prev != null) { send(','); } send(toJSON({ id: row.id, key: row.key })); } prev = row; } send(']}'); 


рдпрд╣рд╛рдБ рдХреНрдпрд╛ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ?
рдореБрдЦреНрдп рд▓рд┐рдВрдХ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдЪрдХреНрд░ рд╣реИ:

  var row; ... while (row = getRow()) { ... send(','); ... send(toJSON({ id: row.id, key: row.key })); ... } 


рдЪреВрдВрдХрд┐ рд╣рдо CouchDB рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп HTTP рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рд╕реВрдЪреА рдлрд╝рдВрдХреНрд╢рди рдПрдХ HTTP рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдмрдирд╛рддрд╛ рд╣реИред рдпрд╛рдиреА рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдореЗрдВ рдкрд╛рда рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП рднреЗрдЬреЗрдВ () рдлрд╝рдВрдХреНрд╢рди рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ; рдпрд╣ рд╕рд░реНрд╡рд░ рдХреА http рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд╛рда рд╕реНрдЯреНрд░рд┐рдВрдЧ рджреЗрддрд╛ рд╣реИред рдЖрдк рднреЗрдЬрдиреЗ (toJSON ()) рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ; JSON рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХрд╛ рдПрдХ рдкрд╛рдард╛рддреНрдордХ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред

getRow () рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдЕрдЧрд▓рд╛ рд░рд┐рдХреЙрд░реНрдб рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рджрд░рдЕрд╕рд▓, рдЗрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдЪрдХреНрд░ рдмрдирддрд╛ рд╣реИред

рд╕реНрдЯрд╛рд░реНрдЯ рдлрдВрдХреНрд╢рди http рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╣реЗрдбрд░ рдХреЛ рдЬреЗрдирд░реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред

рдЙрдкрд░реЛрдХреНрдд рд╕реВрдЪреА рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЗрд╕ рддрд░рд╣ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ:

http: // localhost: 5984 / request-db / _design / complete / _list / basicJSON / freq? рдХрдо - рдЭреВрда?

рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдирд╛рдо, рдбрд┐рдЬрд╝рд╛рдЗрди рджрд╕реНрддрд╛рд╡реЗрдЬрд╝, _list, рд╕реВрдЪреА рдлрд╝рдВрдХреНрд╢рди рдирд╛рдо, рдкреНрд░рд╕реНрддреБрддрд┐ рдЗрдВрдЧрд┐рдд рдХреА рдЬрд╛рддреА рд╣реИред рдЗрд╕рдХреЗ рдмрд╛рдж рдкреНрд░реЗрдЬреЗрдВрдЯреЗрд╢рди рдХреЗ рдСрдкреНрд╢рди рдЖрдПрдВред рдкреИрд░рд╛рдореАрдЯрд░реНрд╕ рдХреЛ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рдХрд┐рд╕реА рднреА рджреГрд╢реНрдп рдХреЛ рдПрдХреНрд╕реЗрд╕ рдХрд░рддреЗ рд╕рдордпред

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╕реВрдЪреА рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдЖрд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдПрдХ рдЬреЛ рд╣рдореЗрд╢рд╛ рдореИрдк / рд░рд┐рдбреНрдпреВрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдпрд╛ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рдмрд╣реБрдд рдЬрдЯрд┐рд▓ рд╣реЛрдЧрд╛ред рд▓реВрдк рдореЗрдВ рд╢рд░реНрддреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдЖрдк рдХреБрдЫ рд░рд┐рдХреЙрд░реНрдбреНрд╕ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рдЖрдк рдПрдХ рд░рд┐рдХреЙрд░реНрдб рдкрд░ рдХрдИ рднреЗрдЬ () рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд░рд┐рдХреЙрд░реНрдб рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╡реГрджреНрдзрд┐ рд╣реЛрдЧреАред

рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕рднреА рд░рд┐рдХреЙрд░реНрдб рд╡рд╛рд▓реЗ рдПрдХ HTTP-рдЯреЗрдХреНрд╕реНрдЯ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рдЧреБрдЬрд░рддрд╛ рд╣реИред

рд╣рд╛рдВ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдпрд╣ рдмрд╣реБрдд рддреЗрдЬрд╝ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдкреВрд░реНрдг рддрд╛рд▓рд┐рдХрд╛ рд╕реНрдХреИрди рд░рд┐рд▓реЗрд╢рдирд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рднреА рдпрд╣ рд╕рдмрд╕реЗ рдзреАрдорд╛ рдСрдкрд░реЗрд╢рди рд╣реИред

рд▓рд┐рд╕реНрдЯ-рдлрд╝рдВрдХреНрд╢рдВрд╕ рдПрдХ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдФрд░ рдЙрдкрдпреЛрдЧреА рддрдВрддреНрд░ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рдХрдИ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдирд╣реАрдВ рдкрдврд╝рддреЗ рд╣реИрдВред рдХрдо рд╕реЗ рдХрдо рдореБрдЭреЗред

рдПрдХ рдЕрдЪреНрдЫрд╛ рдХреЛрдб рд╣реИ!

рдкреБрдирд╢реНрдЪред CouchDB рдореЗрдВ рдЕрднреА рднреА рд╢реЛ рдлрд╝рдВрдХреНрд╢рди рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдФрд░ рд╕рдордпред

Source: https://habr.com/ru/post/In144628/


All Articles