์ด ๋ชจ๋์ elasticsearch-py
๋ชจ๋์ ํตํด Elasticsearch ํด๋ฌ์คํฐ ๋ฐ ๊ธฐ๋ณธ ๋
ธ๋์ ๋ํ ์ฐ๊ฒฐ์ ์ ๊ณตํฉ๋๋ค. ์ด ๋ชจ๋์ ์๊ตฌ ์ฌํญ์ connector
๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ฌ์ฉ์ ๋ฐฐ์ ํ๋ LGPL ๋ผ์ด์ ์ค์
๋๋ค.
Elasticsearch ์ธ๋ฑ์ค ๋ฐ ๋ฌธ์์์ CRUD๋ฅผ ํ์ฉํฉ๋๋ค. ๋ชฉํ๋ ์ด ๋ชจ๋์ ์ผ๋ถ๋ก Odoo ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํด๋ฌ์คํฐ ์ฐ๊ฒฐ ๋ฐ์ดํฐ ๋ฐ ๋ ธ๋ ํธ์คํธ ์ด๋ฆ ์ธ์๋ ์๋ฌด๊ฒ๋ ์ง์ํ์ง ์๋ ๊ฒ์ ๋๋ค. ์ํคํ ์ฒ ์ ํ ์ฌํญ์ ๋ฐ๋ผ ์ธ๋ฑ์ค์ ๋ฌธ์ ์ ํ์ ์ ์ฅํด์ผ ํ ์๋ ์์ง๋ง TransientModel์ ์ ์ฅํด์ผ ํ ์๋ ์์ต๋๋ค.
์ ๊ณต๋๋ ์ ์ผํ ๋ณด๊ธฐ๋ ํด๋ฌ์คํฐ/๋ ธ๋ ๋ฉํ์ ์ค์ ๋ฐ ์ ์ง ๊ด๋ฆฌ๋ฅผ ์ํ ๊ฒ์ ๋๋ค.
Odoo Recordset์ ๋งค๋๋ฝ๊ฒ ์๋ฎฌ๋ ์ด์ ํ ์ ์์ผ๋ฉด ์ข๊ฒ ์ง๋ง Elasticsearch ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ณ ๋ฐ์ดํฐ๋ฅผ ์ ์งํ์ง ์๊ณ ๋ง์ด์ฃ . ์ด๊ฒ์ ์ผ๋ถ ์ฐฝ์์ ์ธ ๋ฉ์๋ ์ค๋ฒ๋ก๋ฉ์ผ๋ก ๊ฐ๋ฅํ ์ ์์ต๋๋ค.
Recordset ์๋ฎฌ๋ ์ด์ ์ด ๊ฐ๋ฅํ๋ค๋ฉด ์ถ์ ๋ฌธ์ ๋ณด๊ธฐ๊ฐ ์ ๊ณต๋๋ ๊ฒ๋ ์ข์ ๊ฒ์ ๋๋ค. ๊ผญ ํ์ํ ๊ฒ์ ์๋์ง๋ง Odoo๊ฐ ์๊ธฐ์ ์ฒํ์ ๋ Elastic ๊ฒฐ๊ณผ๋ฅผ ์ง์ ์ฟผ๋ฆฌํ๊ณ ๋ณด๋ ๊ฒ์ด ์ข์ ๊ฒ์ ๋๋ค.
๋๊ตฐ๊ฐ๊ฐ ์ด์ ๊ฐ์ ๊ฒ์ ์ถ๊ตฌํ๋์ง ๊ถ๊ธํฉ๋๋ค. ํนํ ์์ ์ ์ฅ์๋ง ์ฌ์ฉํ์ฌ Recordset์ ์ํํ๊ฒ ์๋ฎฌ๋ ์ดํธํ๋ ๊ฒ๊ณผ ๊ด๋ จํ์ฌ์?
์๋
ํ์ธ์ @lasley at Akretion ์ฐ๋ฆฌ๋ ์๋ง๋ ๋น์ ์ด ํ์๋ก ํ๋ ๊ฒ์ ์์ํ์ ๊ฒ์
๋๋ค:
https://github.com/akretion/connector-nosql
solr ๋ถ๊ธฐ๋ ์ฐธ์กฐํ์ญ์์ค. https://github.com/akretion/connector-nosql/tree/9.0-solr
cc @sebastienbeau
์ด ์์
์ ํจ๊ป ํด์ฃผ์ธ์. ์ฐ๋ฆฌ๋ ์ด๋ฏธ Odoo๋ฅผ Solr ๋ฐ Algolia NoSQL ๋ฐ์ดํฐ ์ ์ฅ์์ ํตํฉํ ๊ฒฝํ์ด ์์ต๋๋ค.
์ข์, ๊ฐ์ฌํฉ๋๋ค @rvalyi - ์ ๋ง๋ก ๋น์ ์ด ๋ด๊ฐ ํ์ํ ๊ฒ์ ์์ํ ๊ฒ ๊ฐ์ต๋๋ค.
๋ถํํ๋ ๋ด ํ๋ก์ ํธ์ ์๊ตฌ ์ฌํญ ์ค ํ๋๋ LGPL์ด์ด์ผ ํ๋ค๋ ๊ฒ์
๋๋ค. ๋์ค์ RFC์์ ์ธ๊ธํ์ด์ผ ํ์ต๋๋ค(ํฌํจํ๋๋ก ํธ์ง๋จ). LGPL ์๊ตฌ ์ฌํญ์ connector
์ ์ฌ์ฉ์ ๋ฐฐ์ ํ๊ณ ์ด ๋
ผ๋ฆฌ๋ฅผ base_external_dbsource
ํฌํจํ๋ ๊ฒ๋ ๋ฐฐ์ ํฉ๋๋ค. ์ด ์๊ตฌ ์ฌํญ์ ์ด ๋ชจ๋์ ํต์ฌ SaaS ์ฒญ๊ตฌ ์ธํ๋ผ์ ์ผ๋ถ๋ก ์ฌ์ฉํ ๊ณํ ๋๋ฌธ์
๋๋ค.
์ฌ๊ธฐ์์ ๋ง์ ๋ด๋ณด๋ด๊ธฐ ๋ ผ๋ฆฌ๋ฅผ ๋ณผ ์ ์์ง๋ง ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ธฐ ์ํ ๊ฒ์ ์์ต๋๋ค. ๊ทธ ํ๊ฐ์์ ๋ด๊ฐ ์ณ์ต๋๊น?
Odoo์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํด์ผ ํ๋ ํ์์ฑ์ ์ด๋ป๊ฒ ์ฐํํ์ต๋๊น?
@lasley ์ ๋ base_external_dbsource
๋
ผ๋ฆฌ์ ์ ์์
๋๋ค. ๋๋ ์ญ์ฌ๋ฅผ ๋ณด์๊ณ ์ ์ผํ ๋ค๋ฅธ ๋
์ฐฝ์ ์ธ ๊ธฐ์ฌ๋ Firebird DB ์ฐ๊ฒฐ์ ์ถ๊ฐํ๋ ๊ฒ์
๋๋ค. ์ค์ํ๋ค๋ฉด ํด๋น ๋ชจ๋์ LGPL๋ก ์ฌ๋ผ์ด์ผ์คํ๋ ๊ฒ์ ๊ณ ๋ คํ ์ ์์ต๋๋ค.
์ฌ์ค, ๊ทธ๊ฒ๋ค์ ๋จ์ง ๊ธฐ์ ์ ์ธ ๋๊ตฌ์ด๊ธฐ ๋๋ฌธ์, ๋๋ server-tools repo๊ฐ โโ๊ฐ๋ฅํ ํ ๋ง์ LGPL์ด ๋๋ ๋ฌธ์ ๋ฅผ ๋ณด์ง ์์ ๊ฒ์
๋๋ค.
@dreispt - ์ฌ๋ผ์ด์ผ์ค์ ๋ฅ์ํ๋ค๋ฉด ๊ธฐ์กด ๋ชจ๋์ ๋ก์ง์ ์ถ๊ฐํ๊ณ ์ถ์ต๋๋ค. ๋๋ ์ด ๊ธฐ๋ฐ์ ๋ฉํธ๋ฆญ ์์ง ๋ฐ ๋ด SaaS ์ ํ์ ํ์ ์ฒญ๊ตฌ์ ์ฌ์ฉํ ๊ฒ์ด๋ฏ๋ก AGPL์ด ์ฌ๊ธฐ์ ์นจํฌํ๋ ๊ฒ์ ํ์ฉํ์ง ์๋ ๊ฒ์ ์ ๋์ ์ธ ์ฐจ๋จ์ ๋๋ค.
์ฒ์์๋ ๊ฐ๋จํ Elastic ์ฐ๊ฒฐ๋ง ์์ผ๋ฉด ์ถฉ๋ถํ๋ฏ๋ก base_external_dbsource
์ ํฉํฉ๋๋ค. ๋ํ conn_open
๋ฐ execute
๋ด๋ถ์ if
์ฒด์ธ์ ์ ๊ฑฐํ๊ธฐ ์ํด ์ฝ๊ฐ ๋ฆฌํฉํ ๋งํ ๊ฒ์
๋๋ค. ์ด ์ฒด์ธ์ ๋ โโ๋ง์ ์์ค๊ฐ ์ถ๊ฐ๋๊ธฐ ์์ํ๋ฉด ๊ธฐํ๊ธ์์ ์ผ๋ก ์ปค์ง ๊ฒ์
๋๋ค.
NoSQL์ ์ฟผ๋ฆฌ ์ธก๋ฉด์์ ์ฝ๊ฐ ๋ค๋ฅด์ง๋ง ์ฝ๊ฐ์ ์ฐฝ์์ ์ธ ์ ์์ผ๋ก execute
์ธํฐํ์ด์ค์ ๋ค์ด๊ฐ ์ ์์ต๋๋ค.
@lasley ์์์ด. ๋ฒ์ ์์ ์ด์ํ๋ ๊ฒ๊ณผ ๊ฐ์ ๋ค๋ฅธ ๋ชจ๋ ๊ธฐ์ฌ๋ฅผ ์กด์คํ๊ธฐ ์ํด ๋ฌธ์ ๋ฅผ ์ด์ด ๋ผ์ด์ ์ค ๋ณ๊ฒฝ์ ์ ์ํ๊ณ ๋
ผ์ํ ๊ฒ์
๋๋ค.
๊ทธ๋ฆฌ๊ณ Firebird์ ๊ฐ์ ์ถ๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํ ์ง์์ ์ถ๊ฐ ๋ชจ๋๋ก ์ฐ๊ฒฐํ ์ ์๋ ๋ชจ๋์ "ํ๋ฌ๊ทธ ๊ฐ๋ฅ"ํ๊ฒ ๋ง๋ค์ด์ผ ํฉ๋๋ค.
@dreispt ๊ฐ์ฌํฉ๋๋ค. ๊ฐ์ฌํฉ๋๋ค!
pluggable
- ๋ฌด์์ ์ผ๋์ ๋์
จ์ต๋๊น? ๋ด ๊ณํ๋ ๋ฆฌํฉํ ๋ง์ ์ค์ ๋ก ๋ ๊ฐ์ ๊ฑฐ๋ํ if ์ฌ์ฌ์ ๊นจ๋จ๋ฆฌ๋ ๊ฒ์ด์์ง๋ง ๋ด ๊ฐ๋ฐ ํ์ ์๋ ๋์ ๋ค๋ฅธ ๊ฐ์ ์ฌํญ์ ๋ํด ์ด๋ ค ์์ต๋๋ค.
@lasley ๋ค๋ฅธ ๋ชจ๋๋ก ์ฝ๊ฒ ํ์ฅํ ์ ์๋๋ก ํ๋ ๊ฒ์ ๋๋ค. ์ถ๊ฐ ํ์ฅ ๋ชจ๋์ ํตํด ์ถ๊ฐ db ์ง์์ ์ถ๊ฐํ ์ ์์ต๋๋ค.
@dreispt ์
๋ชจ๋ ๋ ๋ฆฝ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ค๋ฅผ ์์ฒด ๋ชจ๋๋ก ์ ๊ฑฐํ ์๊ฐ์ด ์์ต๋๊น? ์๋จ์ ์๋ ์ด ์๋/์ ์ธ ํญ๋ชฉ์ด ๋ค์ ๋ค๋ฃจ๊ธฐ ํ๋ ๊ฒ ๊ฐ์ต๋๋ค. ๋์ํ์ญ๋๊น? ์ด๊ฒ์ ํ์ฌ ์๋ฃจ์ ์ด์ง๋ง ์ฌ์ ํ ๊ฐ์ ๋ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ด๊ฒ์ ์์ ์ ์ธ ๋ฆด๋ฆฌ์ค ๋๋ฌธ์ v11๊น์ง ๊ธฐ๋ค๋ ค์ผ ํ๋ ๊ฒ์ ๋๊น? ์๋๋ฉด ๊ต์ฒด ๋ชจ๋๊ณผ ํจ๊ป ์ถ์ํด๋ ๋ฉ๋๊น?
๋ํ ๊ธฐ๋ณธ CRUD ์ ํ ์ธํฐํ์ด์ค๋ฅผ ์ถ๊ฐํ์ฌ ์ง์ SQL์์ ๋ฒ์ด๋๋ ๊ฒ์ ์๊ฐํ ์๋ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
IMO ํ์ฅ ๋ชจ๋์ด ์ผ๋ฐ์ ์ธ ์๊ฐ์ ํ๋ ๊ฒ์ด ๋ ๊นจ๋ํ ๊ฒ์
๋๋ค. base.external.dbsource
๋ชจ๋ธ์ ์์ํ์ฌ ๊ธฐ๋ฅ๊ณผ ๋ชจ๋ธ์ ์์ ํฉ๋๋ค.
์๋ก์ด ๋ฒ์ ์ด๊ธฐ ๋๋ฌธ์ 10.0์ ๋ํ db ๊ณต๊ธ์๋ฅผ ์ถ์ถํ๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์ด์ง๋ง 9.0์๋ ํฉ๋ฆฌ์ ์ด์ง ์์ ์ ์์ผ๋ฉฐ ์ ๋ฐ์ดํธํ๋ฉด ๊ธฐ์กด ์ค์น๊ฐ ์ค๋จ๋ฉ๋๋ค.
10.0์ ์ด๋ฏธ ๋ฆด๋ฆฌ์ค๋์์ผ๋ฉฐ 1:1 ๋ง์ด๊ทธ๋ ์ด์ ์ผ๋ก ๋ณด์ ๋๋ค. ์์ ์ ์ธ ์ถ์ ์ ์ฑ ์ ์ค์ํ๋ ค๋ฉด 11์๊น์ง ๊ธฐ๋ค๋ ค์ผ ํ ๊ฒ ๊ฐ์๋ฐ์?
์๋ฐํ ๋งํ๋ฉด ๊ทธ๋ ์ต๋๋ค.
์ฆ, ํ์ฌ ๋ชจ๋์์ ๊ธฐ๋ฅ์ ์ ๊ฑฐํด์๋ ์ ๋ฉ๋๋ค.
์ ๋ชจ๋์ ๋ ๋ฎ์ ๋ฒ์ ์์ ์๋ ์ค์นํ๋๋ก ํ๋ฉด ์ด๋ป๊ฒ ๋ ๊น์? ๋ด๊ฐ ์ฌ๊ธฐ์ ์๋ ๋์ ๊ฒฉ๋ฆฌ๋ฅผ ํ์ฉํ๊ณ ๋์ค์ ์ฌ์ฉํ ์ ์๋๋ก ์ค์์น๋ฅผ ์ฝ๊ฒ ๋ ์ ์์ต๋๋ค.
์ธ๋ถ ๋๋ฉด API๋ ๋์ผํ๋ฏ๋ก ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ง ์์ ๊ฒ ๊ฐ์๋ฐ์?
@lasley ์, ์ข์ ์๊ฐ์ ๋๋ค.
์๋ ํ์ธ์,
@lasley https://github.com/camptocamp/odoo-elasticsearch-kibana ๋ฅผ ๋ณด๊ณ ์ถ์ ์๋ ์์ต๋๋ค.
๋ฌธ์ ์ธ์ฌ,
์กฐ์
์์์ @jgrandguillaume์ด ๋ณด์ฌ์ค ๊ฒ์ ์ด์ด ๋ณด๊ณ ๋ชจ๋ธ์ ์ ์ํ๊ธฐ ์ํด https://github.com/OCA/reporting-engine/tree/8.0/bi_view_editor ์ ๊ฐ์ ๋๊ตฌ๊ฐ ์์ผ๋ฉด ์ข์ ๊ฒ์ด๋ผ๊ณ ๊ทธ์ ๋ ผ์ํ์ต๋๋ค. Odoo์์ ์ด ๋ชจ๋ธ์ ๋ฐ์ดํฐ๋ฅผ ElasticSearch๋ก ๋ด๋ณด๋ด ๋ค๋ฅธ ๋ฐ์ดํฐ ์์ค์ ๊ฒฐํฉํ ๋ค์ Kibana๋ฅผ ์ฌ์ฉํ์ฌ ๋ณด๊ณ ํ ์ ์์ต๋๋ค.
์ด์ @lasley ๊ฐ ์ด RFC์์
๋ ๊ฐ์ง ๋ฉด์์ ๋ชจ๋ ํฅ๋ฏธ๋กญ์ต๋๋ค. @jgrandguillaume & @jbeficent์๊ฒ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
odoo-elasticsearch-kibana
๋ํ ๋ชจ๋ ์ข
์์ฑ์ผ๋ก ์ฐ๊ฒฐ๋ sql_view
์ ์
๊ทธ๋ ์ด๋๋ ํํ๋ฅผ @jbeficent ๊ฐ ์ฐ๊ฒฐํ bi_view_editor
odoo-elasticsearch-kibana
์
๋๊น?
๋๋ ์ด RFC์ ์ผ์ข ์ ๋ค๋ชฉ์ ์๋๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์ฃผ์ ๋ชฉ์ ์ ์ฐ๊ฒฐ๋ ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ํ๋๋ ๊ฒ๊ณผ ์ ์ฌํ๊ฒ Odoo์์ ํต๊ณ๋ฅผ ๋ด๋ณด๋ด๋ ๊ฒ์ ๋๋ค.
์กฐ๊ธ ๋ ๋ด๋ ค๊ฐ๋ฉด ์ผ๋ถ ๋ฐ์ดํฐ ๊ฒฝ๋ก๋ฅผ ๋ฐ๋๋ก ํด์ผ ํฉ๋๋ค. Kibana๋ ์ ์๊ฒ ํ๋ฅญํ ์๊ฐํ ๋๊ตฌ์ด์ง๋ง ํด๋ผ์ด์ธํธ ๋์๋ณด๋๋ฅผ ํตํ ์ง์ ๋ณด๊ณ ๋ฅผ ์ํด Odoo์์ ์ผ๋ถ ๋์๋ณด๋๋ฅผ ๊ตฌ์ถํด์ผ ํฉ๋๋ค.
@lasley ์ฌ๊ธฐ์์ https://github.com/OCA/reporting-engine/tree/8.0/bi_view_editor. ํ์ฌ odoo-elasticsearch-kibana
๋ํ ์ข
์์ฑ์ด ์๋๋๋ค. ์ผ๋ฐ ์ฌ์ฉ์๊ฐ ๋ณด๊ณ ๋ชฉ์ ์ผ๋ก Odoo ๋ชจ๋ธ์ ์ค๊ณํ ์ ์๋ ๋๊ตฌ์
๋๋ค. sql_view๋ฅผ ์ํํ๋ ๊ฒ๊ณผ ์ ์ฌํ์ง๋ง ๊ถํ์ ์ฌ์ฉ์์๊ฒ ์์ต๋๋ค.
์ฐ๋ฆฌ๋ ๋ํ Odoo์์ ํต๊ณ๋ฅผ ๋ด๋ณด๋ด๊ณ ์ ํ๋ฉฐ ๋ชฉํ๋ ์ฌ์ฉ์๊ฐ Odoo์์ ๋ด๋ณด๋ด๊ณ ์ถ์ ํต๊ณ๋ฅผ ๋์์ธํ ์ ์๋ ๊ธฐ๋ฅ์ ๊ฐ๋ ๊ฒ์ ๋๋ค.
์ญ๋ฐฉํฅ ๊ฒฝ๋ก๋ ์ข์ต๋๋ค.
@jbeficent - ์ ๋ง
๋ด๊ฐ ๊ฐ๋ฐํ์ง ์์ ์ธ๋ฑ์ค ๋ถ์ ๊ฐ๋ ์ด ํ์ํ ์ด์ ๊ฐ์ ๊ฒ์ ์ง์ํ๋ ค๋ฉด ์ธ๋ฑ์ค์ ๋ํ ๋ช ๊ฐ์ง ๋ฉ์๋๋ฅผ #645์ ์ถ๊ฐํด์ผ ํ ๊ฒ์ ๋๋ค.
๊ด์ฌ ์๋ ๋ชจ๋ ์ฌ๋์๊ฒ Ping - ๋ณด๊ณ ์ถ์ ์ฌ๋์ด ์์ผ๋ฉด https://github.com/OCA/server-tools/pull/660#issuecomment -273583948์ ์๋น ๋ฐ์ดํฐ ๋์์ธ์ ๋ฃ์์ต๋๋ค. ์ด๊ฒ์ ์ฌ์ ํ โโ๋ทฐ ํ๋ ์์ํฌ๊ฐ ๋ถ์กฑํ์ง๋ง ์ฌ๋ฐ๋ฅธ ๋ฐฉํฅ์ผ๋ก ๋์๊ฐ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.