Dotazovací DSL pro pokročilé uživatele

30 views
Skip to first unread message

Honza Javorek

unread,
Feb 8, 2013, 2:48:55 PM2/8/13
to djan...@googlegroups.com
Ahoj,

mám úplně stejný problém jako tenhle borec: http://stackoverflow.com/questions/10959489/building-a-dsl-query-language Mám appku, která pracuje nad SQL databází nějakých objektů. Uživatel může v objektech hledat, některým ale nestačí jednoduchý formulář a chtějí složitější dotazy, dokonce by se hodilo i nějaké počítání (sečíst dva sloupce, přičíst jedničku, atd.). Přemýšlím, jak to udělat a nestrhat se na tom.

V současné době tam mám jednoduché SQL-ish DSL, které se prostě zvaliduje a přeloží na normální SQL. Nechtěl bych ale skončit s tím, že budu takhle nakonec psát celý nějaký vlastní jazyk - zas tak dobrej v překladačích nejsem. Ve Facebooku (FQL) nebo v Yahoo (YQL) tak skončili, ale to je trošku moc na mě... :) Docela by mi nevadilo, kdyby na tohle byly už nějaké hotové nástroje.

Říkám si - jak to vyřešit jednoduše a chytře? Dát uživatelům k dispozici rovnou SQL a nějak ho zabezpečit? Toho se fakt bojím. ElasticSearch / Solr jsou overkilly, do kterých se teď fakt nechci zababrávat.

Nějaké nápady, tipy? Viděli jste někde jinde něco takového už?

H

jirka.v...@gmail.com

unread,
Feb 8, 2013, 8:33:13 PM2/8/13
to djan...@googlegroups.com
Ahoj,

Asi hodne zalezi na tom, jestli jsi schopny predem odhadnout nejakych 90% typickych dotazu. Jak jsem tohle kdysi resil a mel jsem pripravene "dotazove komponenty", kde na jedne strane byl formular pro "typ dotazu" a pak vlastni text, ktery se ma hledat. Uvnitr se to pak poskladalo pomoci kombinace django.db.models.Q objektu vyrobenych z uzivatelem pouzitych "komponent", se kterymi se da pekne kouzlit.

Ale jde to jenom do urcite urovne slozitosti, jestli potrebujes jeste neco komplexnejsiho, neporadim ti.

Jirka

From: Honza Javorek <jan.j...@gmail.com>
Date: Fri, 8 Feb 2013 20:48:55 +0100
Subject: [django-cs] Dotazovací DSL pro pokročilé uživatele
--
--
E-mailová skupina djan...@googlegroups.com
Správa: http://groups.google.cz/group/django-cs
 
---
Tuto zprávu jste obdrželi, protože jste přihlášeni k odběru skupiny django-cs ve Skupinách Google.
Pokud chcete zrušit odběr skupiny, aby vám z ní již nechodily e-maily, zašlete e-mail na adresu django-cs+...@googlegroups.com.
Další možnosti najdete na adrese https://groups.google.com/groups/opt_out.
 
 
Reply all
Reply to author
Forward
0 new messages