A method and apparatus are provided for implementing a content-based
publish-and-subscribe system in a relational database system. A subscriber
may request for messages by using a query language supported by the
database server. The queries are then used as subscription rules for
determining whether an incoming message is to be sent to the subscriber.
Evaluation of incoming messages against subscription rules involves a
two-tier process. The first tier involves filtering out all the
subscription rules that could not possibly apply to the incoming message.
The second tier involves further evaluation of the incoming message, if
needed, to determine which subscribers are to receive the incoming
message. In another aspect of the embodiment, in cases where the publisher
is the relational database system itself, queries that request for
messages are not stored as subscription rules because publication of the
messages is implicit. In this situation, a query is received from a client
that is written in a query language supported by the database system. The
query is a request for data stored in the database system that satisfies
the query. A detection is made that the data stored in the database system
has been changed and in response, the changed data is provided to the
client.
Une méthode et un appareil sont donnés pour mettant en application contenu-basé éditer-et-souscrivent le système dans un système de base de données relationnelle. Un abonné peut demander pour des messages en employant un langage d'interrogation soutenu par le serveur de base de données. Les questions sont alors employées comme règles d'abonnement pour déterminer si un message entrant doit être envoyé à l'abonné. L'évaluation des messages entrants contre des règles d'abonnement comporte un processus à deux niveaux. La première rangée implique de filtrer hors de toutes les règles d'abonnement qui ne pourraient pas probablement s'appliquer au message entrant. La deuxième rangée implique davantage d'évaluation du message entrant, si nécessaire, pour déterminer quels abonnés doivent recevoir le message entrant. Dans un autre aspect de l'incorporation, dans les cas où l'éditeur est le système de base de données relationnelle lui-même, des questions qui demandent pour des messages ne sont pas stockées pendant que l'abonnement règne parce que la publication des messages est implicite. Dans cette situation, une question est reçue d'un client qui est écrit dans un langage d'interrogation soutenu par le système de base de données. La question est une demande des données stockées dans le système de base de données qui satisfait la question. Une détection est faite que les données stockées dans le système de base de données ont été changées et dans la réponse, les données changées est fournie au client.