XPaSS is an extended publisher-subscriber (P-S) system. In a P-S
system, users subscribe their interests to a subscription server. The
subscription is usually expressed in some kind of queries: simple ones
such as key word lists and other more powerful ones such as the XPath
query we are using. The subscription server organizes these queries
(usually from a few thousand to hundreds of thousands or more),
evaluate the queries over the data, and return the data of interests
to every user. In many cases the data are in streaming form, such as
stock market updates, real-time news feeds, weblog, weather
broadcasts, and etc. Such data may arrive in a very high rate, and
usually the server needs to provide very prompt (if not real-time)
response. It is a challenge task to manage such large number of
queries.
Usually we need to group the queries to improve the performance of the query engine in the subscription sever: to improve the throughput and to use less memory. Scalability is the most important issue in such systems. The simplest grouping, for the key word lists queries, is to use a reverse index where the key of the index is a key word and the value is a list of users that include that key word in their list. It is not easy to group more advanced queries like XPath queries. P-S systems using XPath subscription is a very hot topic recently. To get more details, please see the references.
XPaSS also scales very well. In the best case, XPaSS can evaluate 500,000 XPath queries in less than 0.35s, using around 32MB memory. The reason XPaSS can scale to a very large number of queries is that it groups the queries using their common segments, which are a pair of two consecutive node tests and the axis that connects them. Most of the current approaches are grouping queries using prefixes or suffixes.
For a prefix-sharing system, only the "//store//book/title" prefix can be shared between the query 1 and 4. In contrast, XPaSS can share all the common segments in the queries. For example, the segment book/title are shared among all four queries.
We welcome your comments and suggestions. We would be grateful if you could inform us of how you are using XPaSS. In particular, if you make some code modifications that you would like to share, we would be happy to incorporate them in the next version.