[katello-devel] search over rest api - interface design
Justin Sherrill
jsherril at redhat.com
Mon Jul 18 17:59:53 UTC 2011
On 07/18/2011 02:52 AM, Amos Benari wrote:
>
> ----- Original Message -----
>> From: "Justin Sherrill"<jsherril at redhat.com>
>> To: katello-devel at redhat.com
>> Sent: Monday, July 18, 2011 4:28:17 AM
>> Subject: Re: [katello-devel] search over rest api - interface design
>> On 07/17/2011 11:32 AM, Amos Benari wrote:
>>> ----- Original Message -----
>>>> From: "Lukas Zapletal"<lzap at redhat.com>
>>>> To: katello-devel at redhat.com
>>>> Sent: Thursday, July 14, 2011 4:07:24 PM
>>>> Subject: Re: [katello-devel] search over rest api - interface
>>>> design
>>>> On 07/14/2011 12:01 PM, Amos Benari wrote:
>>> ...
>>>> Well I am surprised that scoped_search is not a fulltext. As a
>>>> long-time Apache Lucene user I have to recommend this project.
>>> Lucene vs. scoped search
>>> -------------------------
>>> I am not really going to compere them because it's a bit like
>>> comparing oranges to apples.
>>> I am just going to write a short description of scoped search and
>>> try to point what use case will each fit.
>>>
>>> scoped_search is not an indexer, it's also not a data store. It's a
>>> light weight query parser, auto-completer and SQL query builder.
>>> It enables feature rich search box in the GUI and a powerful API, on
>>> top of any RDBMS, no schema change is needed.
>>> scoped search on top of RDBMS can easily handle structured data, it
>>> returns updated data as soon as it's stored in the database.
>>> No scoring, no ranking, just a simple "order by" clause in the SQL.
>>> It will scale as much as the underline database does.
>>>
>>> Lucene will index your data, store it in a document format optimized
>>> for searching.
>>> It will scale-out well as long as you can live with eventual
>>> consistency.
>>>
>>> So does Lucene it fit our needs?
>>> In Kalpana, Foreman and Candlepin the data set is not large enough
>>> to make a scale issue.
>> Is this true? From earlier discussions I seem to remember that Katello
>> should be able to support ~100,000 systems eventually. I would think
>> this could indicate scale may be an issue?
> Well, I guess that if the rest of the application is going to behave nice with
> ~100K systems then a search over the database should be fine.
> I think that the main area of concern here is if we are going to have a very high
> rate of updates to the systems table, it might slow read operation significantly.
> Otherwise, indexes and cache of the database engine should be able handle that scale.
> Amos.
>
I wouldn't think a high number of updates would happen very often (e.g.
you aren't going to update 100,000 systems very often). But the reading
of many systems could happen quite a bit (through search). You may
schedule some action to ~10,000 systems, but that type of data probably
won't be searchable (but maybe?).
Currently in the scoped_search we search across all fields of an object
when you search. To extend this thinking to systems(which i assume we
want to do in order to be consistent?) , lets say you search for
'192.168.0.2'. If we do not designate what field this actually is
searching and want to search across all system data, we would need to
search system information (including facts) in Candlepin (to possibly
get what products they are subscribed to), pulp (in order to search
package profile information), katello (to search any metadata we have
there), and foreman (in order to get configuration related information
and puppet facts).
This seems daunting, and I don't know if scoped search scale well or not
in the above case, but I ++ to brad's idea of doing some performance
testing.
-Justin
>>> In Pulp we already have a no-sql data store (mongoDB) with it's own
>>> search interface.
>>>
>>> Adding an external index store for searching can be an interesting
>>> idea, but it comes in the cost of:
>>> modeling the searchable data into document format.
>>> Updating the index on write, otherwise when a user update an item,
>>> he might not see the changes he made reflected in the GUI.
>>> RBAC model needs to be re-implemented in the index data store to
>>> prevent reading unauthorized data.
>>>
>>> Seems to me a bit of a complex solution.
>>> Amos.
>>>
>>> _______________________________________________
>>> katello-devel mailing list
>>> katello-devel at redhat.com
>>> https://www.redhat.com/mailman/listinfo/katello-devel
>> _______________________________________________
>> katello-devel mailing list
>> katello-devel at redhat.com
>> https://www.redhat.com/mailman/listinfo/katello-devel
More information about the katello-devel
mailing list