[go: up one dir, main page]

KR100324978B1 - message broker apparatus, method and computer program product - Google Patents

message broker apparatus, method and computer program product Download PDF

Info

Publication number
KR100324978B1
KR100324978B1 KR1019990008627A KR19990008627A KR100324978B1 KR 100324978 B1 KR100324978 B1 KR 100324978B1 KR 1019990008627 A KR1019990008627 A KR 1019990008627A KR 19990008627 A KR19990008627 A KR 19990008627A KR 100324978 B1 KR100324978 B1 KR 100324978B1
Authority
KR
South Korea
Prior art keywords
message
data processing
stream
messages
database
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
KR1019990008627A
Other languages
Korean (ko)
Other versions
KR19990082740A (en
Inventor
토드스티븐제임스폴
Original Assignee
포만 제프리 엘
인터내셔널 비지네스 머신즈 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 포만 제프리 엘, 인터내셔널 비지네스 머신즈 코포레이션 filed Critical 포만 제프리 엘
Publication of KR19990082740A publication Critical patent/KR19990082740A/en
Application granted granted Critical
Publication of KR100324978B1 publication Critical patent/KR100324978B1/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Multimedia (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명은 소프트웨어 프로그래밍 변경이 용이한 메시지 중개인 데이터 프로세싱 장치, 방법, 컴퓨터 프로그램 제품 및 정보 서비스 제공 방법을 제공하기 위한 것이다. 송신자 애플리케이션(sender application)으로부터 메시지들을 수신하고, 수신된 메시지들을 프로세싱하고 프로세싱된 메시지들을 전달하기 위하여 수신자 애플리케이션을 결정하는 메시지 중개인 데이터 프로세싱 장치는, 송신자 애플리케이션으로부터 인입 메시지 스트림(incoming message stream)을 수신하기 위한 수단-여기서, 각 메시지는 적어도 하나의 필드를 갖는 투플(tuple)로서 배열되어 있음-과; 데이터베이스에 저장되어 있는 데이터베이스 데이터와 상기 인입 메시지 스트림을 조합(照合)하는 수단-여기서, 데이터베이스 데이터도 또한 적어도 하나의 필드를 갖는 투플들로서 배열되어 있음-과; 최종 메시지 스트림이 적어도 하나의 수신하는 애플리케이션에 전해지도록 상기 메시지 스트림을 프로세싱하는 수단을 포함한다.The present invention provides a message broker data processing apparatus, method, computer program product, and information service providing method which are easy to change software programming. A message broker data processing apparatus that receives messages from a sender application, and determines a receiver application to process received messages and deliver the processed messages, receives an incoming message stream from the sender application. Means for, where each message is arranged as a tuple having at least one field; Means for combining the incoming message stream with database data stored in a database, wherein the database data is also arranged as tuples having at least one field; Means for processing said message stream such that a final message stream is delivered to at least one receiving application.

Description

메시지 중개인 장치, 방법 및 컴퓨터 프로그램 제품{message broker apparatus, method and computer program product}Message broker apparatus, method and computer program product

발명의 분야Field of invention

본 발명은 예를 들어, 클라이언트의 작업의 일부를 수행할 것을 하나의 컴퓨팅 기기가 다른 컴퓨팅 기기에게 요구하는, 클라이언트/서버 컴퓨팅(또한 '분산 컴퓨팅'으로 알려짐) 분야에 관한 것이다.The present invention relates to the field of client / server computing (also known as 'distributed computing'), for example, where one computing device requires another computing device to perform some of the client's work.

발명의 배경Background of the Invention

클라이언트/서버 컴퓨팅은 정보 기술 세계에서 지난 수년에 걸쳐서 더욱 더 중요하게 되어왔다. 이 형태의 분산 컴퓨팅은, 기계 상에서 실행되는 하나의 프로세스('클라이언트')로 하여금 그 작업의 일부를 예를 들어, 그 작업을 수행하기에 보다 더 적합할 수 있는 다른 기계 상에서 실행되는 다른 프로세스('서버')에게 대리하도록 한다. 클라이언트와 서버는 또한 동일한 물리적 기계 상에서 실행되는 2개의 프로세스들일 수도 있다.Client / server computing has become increasingly important in the information technology world over the years. This form of distributed computing allows one process ('client') to run on a machine to perform some of its work, for example, on another machine that may be more suitable for performing the work ( On behalf of the server. The client and server may also be two processes running on the same physical machine.

메시지 큐잉 데이터 프로세싱 기술은 오늘날의 클라이언트/서버 네트워크들에서 더욱 더 일반화되어가고 있다. 이 기술은 클라이언트 컴퓨터 시스템과 서버 컴퓨터 시스템이 서로 매우 다르더라도 운용 시스템, 데이터 포맷 및 통신 프로토콜에 의해, 클라이언트 컴퓨터 시스템이 서버 컴퓨터 시스템과 통신하도록 한다. 또한, 이 기술의 비동기적 성질로 인하여, 클라이언트는 서버에게 메시지를 송신할 수 있고 서버는 큐에 메시지를 저장하고 나중에 이 메시지를 프로세스하고 응답할 수 있다. 이는 클라이언트와 서버가 실시간으로 대화할 것을 요구하는 (예를 들어,클라이언트가 다른 업무(task)를 수행하기 전에 서버가 응답하기를 클라이언트가 기다림) 동기적 클라이언트/서버 모델들과는 매우 다른 것이다.Message queuing data processing techniques are becoming more and more common in today's client / server networks. This technology allows the client computer system to communicate with the server computer system by means of operating system, data format and communication protocol, even though the client computer system and server computer system are very different from each other. Also, due to the asynchronous nature of this technique, the client can send a message to the server and the server can store the message in a queue and later process and reply to the message. This is very different from synchronous client / server models that require the client to communicate with the server in real time (eg, the client waits for the server to respond before the client performs another task).

메시지 큐잉 및 상업적으로 이용 가능한 메시지 큐잉 제품들은 1994년 McGraw-Hill에 의해 출판된, B. Blakeley와 H.Harris와 R. Lewis의 'Messaging and Queuing Using the MQI' 및 IBM 사로부터 이용 가능한 출판물들인 'An Introduction to Messaging and Queuing'(IBM 서류 번호 GC33-0805-00) 및 'MQSeries-Message Queue Interface Technical Reference'(IBM 서류 번호 SC33-0850-01)에 기재되어 있다. IBM과 MQSeries는 IBM 사의 상표들이다. IBM의 MQSeries 메시징 소프트웨어 제품들은, 시스템 또는 통신에 장애가 있는 경우에도 일단 확인 일회 메시지 전달(assured once and once-only message delivery)을 하는 메시징 프로토콜에 따라 작업의 로직 유닛들 내의 메시지들에 동기하여, 트랜잭션 메시지를 지원한다. MQSeries 제품들은 수신자 시스템에 의해 안전하게 저장되었음이 확인될 때까지 송신자 시스템 상의 저장소로부터 메시지를 최종적으로 지우지 않도록 하고 복잡한 복구 기능들을 사용함으로써 확인 전달을 한다. 성공적인 저장의 확인에 기초하여 메시지 전달을 위탁하기에 앞서, 송신자 시스템의 저장소로부터 메시지를 삭제하는 것과 수신자 시스템의 저장소에 메시지를 삽입하는 것은 모두 '의심(in doubt)'으로 유지되고, 장애(failure)가 있는 경우에 자동으로 되돌릴(back out) 수 있다. 이러한 메시징 전송 프로토콜과 관련된 트랜잭션 개념들 및 복구 기능들은 국제 특허 출원 재95/10805 및 미국 특허 5465328에 기재되어 있으며 이를 참조로 여기에 합체한다.Message queuing and commercially available message queuing products are published by McGraw-Hill in 1994, 'Messaging and Queuing Using the MQI' by B. Blakeley, H.Harris and R. Lewis, and the publications available from IBM. An Introduction to Messaging and Queuing '(IBM Document No. GC33-0805-00) and the MQSeries-Message Queue Interface Technical Reference (IBM Document No. SC33-0850-01). IBM and MQSeries are trademarks of IBM Corporation. IBM's MQSeries messaging software products synchronize transactions in messages within logic units of operation according to a messaging protocol that ensures once and once-only message delivery even in the event of a system or communication failure. Support message. MQSeries products deliver acknowledgment by using complex recovery functions and avoiding final deletion of messages from storage on the sender's system until it has been securely stored by the recipient's system. Prior to committing message delivery based on the confirmation of successful storage, deleting the message from the sender's system store and inserting the message into the receiver system's store both remain 'in doubt' and fail. ) Can be automatically backed out if Transaction concepts and recovery functions associated with this messaging transport protocol are described in International Patent Application No. 95/10805 and US Patent 5465328 and incorporated herein by reference.

관계형 데이터베이스들이 많은 양의 관련된 데이터를 저장 및 검색(retrieve)하기 위한 구축된 메커니즘으로서 통상 사용되므로, IBM의 DB2 제품 또는 마이크로소프트의 액세스 제품(DB2는 IBM사의 상표이고, 액세스는 마이크로소프트사의 상표임)과 같은, 관계형 데이터베이스 시스템을 갖춘 메시징 및 큐잉 시스템을 결합하는 것이 더욱 더 일반화되어가고 있다.Because relational databases are commonly used as built mechanisms for storing and retrieving large amounts of related data, IBM's DB2 products or Microsoft's access products (DB2 is a trademark of IBM Corporation, and access is a trademark of Microsoft Corporation). It is becoming more and more common to combine messaging and queuing systems with relational database systems.

예를 들어, 선 마이크로시스템 사는 발행(publish)/가입(subscribe) 기능을 수행하는데 사용되는 메시징 및 큐잉 시스템을 기재하고 있다(유럽 특허 출원 번호 806,731, 1996년 11월 17일 공개). 각 메시지에 대해 토픽을 특정하지만 서버들은 발행자들로서 역할을 하고 메시지를 발행한다. 클라이언트들은 가입자들로서 역할을 하고 그들이 메시지를 수신하고 싶어하는 토픽을 특정한다. 메시징 및 큐잉 중개인(broker)은 클라이언트들과 서버들 사이에 놓이며 적절한 클라이언트에게 발행된 메시지들을 분배하는 역할을 한다. 시스템은 많은 양의 구축된 데이터가 네트워크에 발행될 수 있도록 데이터베이스가 발행 서버(publishing server)로서 제공될 수 있게 한다. 데이터베이스는 또한 많은 양의 메시지들을 쉽고 구조적으로 검색하도록 하기 위해 수신된 발행 메시지들을 저장하는, 인용 클라이언트로서 제공될 수도 있다. 이러한 시스템은 메시징 및 큐잉 시스템과 관계형 데이터베이스 시스템 사이에 어떠한 구체적인 통합(integration)을 설명하고 있지 않다.Sun Microsystems, for example, describes a messaging and queuing system used to perform publish / subscribe functions (European Patent Application No. 806,731, published November 17, 1996). You specify a topic for each message, but the servers act as publishers and publish the message. Clients act as subscribers and specify the topics they want to receive messages from. Messaging and queuing brokers are placed between clients and servers and serve to distribute messages issued to the appropriate clients. The system allows a database to be provided as a publishing server so that large amounts of built data can be published to the network. The database may also be provided as a citation client, storing received publication messages for easy and structured retrieval of large amounts of messages. Such a system does not describe any specific integration between messaging and queuing systems and relational database systems.

오라클 사는 가입자가 수신하기를 원하는 발행 메시지를 특정하기 위하여, 메시징 및 큐잉 중개인에게 구조화된 질의를 클라이언트 애플리케이션(가입자)이 제출하도록 함으로써, 그들의 Oracle8 어드밴스트 큐잉(AQ) 시스템('Oracle8' 및 '어드밴스트 큐잉'은 오라클 사의 상표임)에서 보다 한발 더 나아간 이러한 통합을 취했다. 인터넷의 토픽을 특정하기 위하여 SQL(Structured query language)과 같은 표준 데이터베이스 언어를 사용하는 가입자(subscriber)의 능력은, 가입자가 수신하고 싶어하는 발행 메시지들의 형태를 정확히 표현하느냐하는 점에서 매우 높은 수준의 특정성을 참작한다. 예를 들어, 가입자는 주식 가격이 주당 100 미국 달러 이상인 모든 발생 IBM 주식 시세를 수신할 것을 특정하기 위하여 표준 SQL 질의 서술문을 사용할 수 있다. SQL 서술문에 부가하여, 가입자는 또한 가입자가 보고 싶은 발행 메시지들의 형태들을 프로그래머가 정확히 특정하는 것을 보다 쉽게 하기 위하여 마이크로소프트 액세스 제품들에 의해 제공되는 것과 같은 다양한 비주얼 관계형 데이터베이스 프로그래밍 테크닉들을 이용할 수도 있다.Oracle specifies their Oracle8 Advanced Queuing (AQ) system ('Oracle8' and 'Advanced') by having the client application (subscriber) submit a structured query to a messaging and queuing broker to specify the publication message that the subscriber wishes to receive. TQ Queuing is a trademark of Oracle Corporation. The ability of a subscriber to use a standard database language such as Structured Query Language (SQL) to specify the topic of the Internet is a very high level of specificity in that it accurately represents the type of publication messages that the subscriber wants to receive. Consider the castle. For example, a subscriber can use a standard SQL query statement to specify to receive all accrued IBM stock quotes with a stock price of more than 100 US dollars per share. In addition to the SQL statement, the subscriber may also use a variety of visual relational database programming techniques, such as those provided by Microsoft Access products, to make it easier for the programmer to accurately specify the types of publication messages that the subscriber wants to see.

오픈 호라이즌(Open Horizon) 사는 이러한 통합을 취하고 한발 더 나아가, 요구 중인 가입자들에게 메시지들을 보내기 전에 메시징 및 큐잉 중개인이 발행된 메시지들의 내용들에 주제(subject matter)를 부가하도록 함으로써, 암브로시아 2.1 제품(암브로시아(ambrosia)는 오픈 호라이즌 사의 상표임)을 내놓았다. 메시징 및 큐잉 중개인은 발행된 메시지를 입력 큐로 수신한다. 오라클 제품과 마찬가지로, 표준 SQL 테크닉들은 가입자가 보기를 원하는 발행 메시지들의 형태를 정확히 특정하는데 사용된다. 그러나, 암브로시아 제품은 더 나아가 관계형 데이터베이스에 저장된 레코드들을 가진 발행 메시지에 정보를 조합(照合)(collate)하기도 한다. 특히, 일단 발행 메시지가 수신되면, 메시징 및 큐잉 중개인에 의해 원래 수신되었던 발행 메시지에 비하여, 보다 상세한 내용들을 가진 발행 메시지를 생성하기위하여 발행 메시지의 내용들에 데이터베이스 레코드들로부터의 데이터의 일부가 부가된다. 예를 들어, 주당 125 달러인 IBM 주식이 리스트되고 있음을 특정하는 발행 메시지가 중개인의 입력 큐에 수신되면, 중개인은 고객의 식별자(예를 들어 C23) 및 이 고객이 현재 소유하고 있는 IBM 주식의 양(예를 들어 225주)을 포함하는 정보 등을 관계형 데이터베이스로부터 검색하도록 프로그램될 수 있다. 데이터베이스로부터 검색된 정보는 주당 125달러로 현재 거래되고 있는 IBM 주식 225주를 고객 C23이 소유하고 있다는 보다 상세한 메시지를 생성하기 위하여 발행 정보에 결합된 다음, 가입자로서 이전에 등록되어 있는 고객 C23에게 전송된다.Open Horizon takes this integration and goes a step further by allowing messaging and queuing agents to add subject matter to the contents of published messages before sending messages to demanding subscribers. Ambrosia is a trademark of Open Horizon. The messaging and queuing broker receives published messages into the input queue. Like Oracle products, standard SQL techniques are used to specify exactly the type of publication messages a subscriber wants to see. However, Ambrosia products may further collate information into publication messages with records stored in a relational database. In particular, once a publish message is received, a portion of the data from the database records is appended to the contents of the publish message to produce a publish message with more details than the publish message originally received by the messaging and queuing broker. do. For example, if a publication message is received on the broker's input queue that specifies that IBM stocks, which are $ 125 per share, are listed, the broker is responsible for the identifier of the client (for example, C23) and the IBM stock currently owned by the client. Information including amounts (eg 225 weeks) may be programmed to retrieve from a relational database. The information retrieved from the database is combined with the issuance information to generate a more detailed message that customer C23 owns 225 IBM stocks currently traded at $ 125 per share, and then sent to customer C23 previously registered as a subscriber. .

암브로시아 제품이 위에서 언급한 다른 제품들에 비하여 상당한 가치를 제공하지만, 어떻게 발행 메시지들이 데이터베이스 레코드들과 조합(照合)될 것인지를 정확히 특정할 수 있도록 전용 소프트웨어 코드가 기재되어야만 한다는 단점이 있다.Although Ambrosia products provide significant value over the other products mentioned above, the drawback is that dedicated software code must be written so that it can specify exactly how publication messages will be combined with database records.

데이터베이스 내용이 발행 메시지에 값을 부가하기 위하여 발행 메시지들에 부가될 수 있다는 점에서, 액티브 소프트웨어 사의 액티브웹(ActiveWeb)(액티브 소프트웨어 사의 상표임) 메시지 중개인 제품은 오픈 호라이즌의 암브로시아 제품과 유사하다. 액티브웹은 조합(예를 들어 결합) 동작을 수행하기 위하여 데이터베이스 어댑터로 불리는 소프트웨어 코드의 특정 부분(specific piece)을 이용할 수 있다. 이러한 어댑터는 발행 메시지들로부터 데이터를 추출하고, 이 데이터를 데이터베이스가 요구하는 정확한 형태의 데이터베이스 질의로 변환하고, 데이터베이스로부터 데이터를 검색하고, 발행 메시지 및 데이터베이스 데이터에 대하여 특정 조합(照合) 동작을 수행하기 위하여 요구된다.ActiveWeb's ActiveWeb (trademark of Active Software) message broker product is similar to Open Horizon's Ambrosia product in that database content can be added to publish messages to add value to the publish message. The active web can use a specific piece of software code called a database adapter to perform a combination (eg, combining) operation. These adapters extract data from publication messages, convert this data into the exact type of database query required by the database, retrieve data from the database, and perform specific combination operations on the publication message and database data. Is required to do.

따라서 액티브웹은 또한, 예를 들어 데이터베이스 레코드들과 발행 메시지들을 결합하는 조합 동작을 수행하기 위하여 소프트웨어의 전용 부분을 제공하여야 할 필요성이 있다는 단점도 있다. 그러한 소프트웨어를 변형(modification)하는 것은 사용자가 소프트웨어의 전용 부분의 프로그래밍 구조 및 언어에 친숙할 것을 요구한다. 따라서, 프로그래머가 나머지 메시지 중개인을 변형하는 것이 쉽다는 것을 알지만, 조합 동작을 수행하는 소프트웨어의 전용 부분을 변형하기 위하여 새로운 프로그래밍 환경으로 전환할 것이 필요하게 된다.ActiveWeb therefore also has the disadvantage that it is necessary, for example, to provide a dedicated part of the software in order to perform a combination operation combining database records and publish messages. Modification of such software requires the user to be familiar with the programming structure and language of the dedicated portion of the software. Thus, although the programmer knows that it is easy to modify the rest of the message broker, it is necessary to switch to a new programming environment to modify the dedicated part of the software that performs the combinatorial operation.

도 1은 본 발명의 바람직한 실시예에 따른 관계형 메시지 중개인의 기본적인 구성(set up)을 나타내는 블록도.1 is a block diagram illustrating the basic set up of a relational message broker according to a preferred embodiment of the present invention.

도 2는 본 발명의 바람직한 실시예에 따른 관계형 메시지 중개인에 관하여 보다 상세히 나타낸 블록도.2 is a more detailed block diagram of a relational message broker in accordance with a preferred embodiment of the present invention.

도 3은 도 2의 관계형 메시지 중개인의 변형된 버전을 나타내는 블록도.3 is a block diagram illustrating a modified version of the relational message broker of FIG.

<도면의 주요 부분에 대한 부호의 설명><Explanation of symbols for the main parts of the drawings>

11…발행자11... publisher

12…큐 관리자12... Queue manager

13…관리형 메시지 중개인13... Managed Message Broker

14…데이터베이스14... Database

15…가입자(subscriber)15... Subscriber

일 측면에 따르면, 본 발명은 송신자 애플리케이션으로부터 메시지들을 수신하고, 수신된 메시지들을 프로세싱하여 프로세싱된 메시지들을 어느 수신자 애플리케이션으로 전달한 것인가를 결정하는 메시지 중개인 데이터 프로세싱 장치에 있어서, 각 메시지들이 적어도 하나의 필드를 갖는 투플(tuple)들로서 배열되도록 하면서, 송신자 애플리케이션으로부터 인입(incoming) 메시지 스트림을 수신하는 수단과; 데이터베이스에 저장된 데이터베이스 데이터와 상기 인입 메시지 스트림을 조합하는 수단과-여기서, 데이터베이스 데이터도 또한 적어도 하나의 필드를 갖는 투플들로서 배열됨-; 합성 메시지 스트림(resultant stream of messages)이 적어도 하나의 수신중 애플리케이션(receiving application)으로 보내지도록 메시지들의 스트림을 프로세스하는 수단을 포함하는 메시지 중개인 데이터 프로세싱 장치를 제공한다.According to one aspect, the present invention provides a message broker data processing apparatus for receiving messages from a sender application and processing the received messages to determine to which recipient application the processed messages are delivered, wherein each message comprises at least one field. Means for receiving an incoming message stream from a sender application, while being arranged as tuples with a; Means for combining the incoming message stream with database data stored in a database, wherein the database data is also arranged as tuples having at least one field; Provided is a message broker data processing apparatus comprising means for processing a stream of messages such that a resultant stream of messages is sent to at least one receiving application.

바람직하게는, 상기 수신하는 수단, 조합(照合)하는 수단, 프로세스하는 수단은 프로세싱 노드들의 네트워크를 형성하기 위하여 상호연결된 복수의 프로세싱 노드들을 이용하고, 각 노드의 프로세싱 기능(functionality)은 표준 관계형 언어로 관계형 표현에 의해 정의되며, 메시지 투플들의 스트림들이 복수의 노드들간에 전달된다. 또한, 네트워크에서 2개의 인접 노드들인 노드 1 및 노드 2에 있어서, 노드 1의 기능을 규정하는 관계형 표현의 출력은 노드 2의 기능을 규정하는 관계형 표현의 입력에 의해 메시지 투플들의 스트림으로서 해석된다.Advantageously, said means for receiving, means for combining, means for processing use a plurality of interconnected processing nodes to form a network of processing nodes, the processing functionality of each node being a standard relational language. As defined by the relational representation, streams of message tuples are passed between a plurality of nodes. In addition, for two adjacent nodes in the network, Node 1 and Node 2, the output of the relational expression that defines the function of Node 1 is interpreted as a stream of message tuples by the input of the relational expression that defines the function of Node 2.

바람직하게는, 수신하는 수단은 큐 관리자와 통신한다.Preferably, the means for receiving is in communication with a queue manager.

바람직한 실시예에서, 송신중 애플리케이션(sending application)은 발행자(publisher)이고 수신중 애플리케이션은 가입자이다.In a preferred embodiment, the sending application is a publisher and the receiving application is a subscriber.

바람직하게, 표준 관계형 언어는 구조화 질의 언어이고 비주얼 데이터베이스 툴은 노드의 기능을 규정하는 관계형 표현을 발생하는데 사용된다.Preferably, the standard relational language is a structured query language and visual database tools are used to generate relational representations that define the functionality of the node.

일 실시예에서, 2개의 노드들간에 존재하는 메시지 투플들의 스트림에서 각 메시지 투플은 동일한 세트의 필드들을 갖는다. 다른 실시예에서, 2개의 노드들간의 존재하는 메시지 투플들의 스트림에서, 메시지 스트림에서의 각 메시지 투플은 반드시 동일한 세트의 필드들을 가질 필요는 없다. 바람직하게는, 후자의 실시예에서, 노드의 기능을 규정하지만 노드로 입력되는 스트림의 특별한 메시지 투플에 규정되어 있지 않은 관계형 표현에 사용되는 필드들은 무효 값이 할당된다.In one embodiment, each message tuple in the stream of message tuples present between two nodes has the same set of fields. In another embodiment, in a stream of message tuples existing between two nodes, each message tuple in the message stream does not necessarily have the same set of fields. Preferably, in the latter embodiment, the fields used in the relational representation that specify the functionality of the node but are not specified in the special message tuple of the stream entering the node are assigned invalid values.

일 실시예에서, 장치는 단일 데이터 프로세싱 유닛에 포함되지만, 다른 실시예에서 장치는 복수의 상호연결된 데이터 프로세싱 유닛에 포함된다.In one embodiment, the apparatus is included in a single data processing unit, while in other embodiments the apparatus is included in a plurality of interconnected data processing units.

제2 측면에 따르면, 본 발명은 제1 측면에서 논의한 기능을 수행하는 방법을 제공한다.According to a second aspect, the present invention provides a method for performing the functions discussed in the first aspect.

제3 측면에 따르면, 본 발명은 컴퓨터 상에서 실행될 때, 제1 측면에서 논의한 기능을 수행하기 위한 컴퓨터 프로그램 제품(computer program product)을 제공한다.According to a third aspect, the present invention provides a computer program product for performing the functions discussed in the first aspect when executed on a computer.

제4 측면에 따르면, 본 발명은 제1 측면의 메시지 중개인 데이터 프로세싱 장치를 사용하여, 고객에게 정보 서비스를 제공하는 방법에 있어서, (a) 고객이 수신하기를 원하는 메시지가 어느 것인지에 관하여 고객으로부터 기준(criteria)을 수신하는 단계와; (b)발행인으로부터 발행된 메시지들을 수신하는 단계와; (c) 상기 고객으로부터 수신된 기준과 상기 발행된 메시지들을 비유하는 단계와; (d) 상기 고객으로부터 수신된 기준에 맞는 발행 메시지들을 상기 고객에게 전송하는 단계를 포함하는 정보 서비스를 제공하는 방법을 제공한다.According to a fourth aspect, the present invention provides a method of providing an information service to a customer using the message broker data processing apparatus of the first aspect, comprising: (a) a reference from a customer as to which message the customer wants to receive; receiving a criteria; (b) receiving messages issued from the publisher; (c) comparing the criteria received from the customer with the issued messages; (d) providing an information service comprising sending issuance messages meeting the criteria received from the customer to the customer.

본 발명은 메시지 투플의 스트림으로서 중개인에게 인입 데이터를 제공하므로, 인입 데이터를 데이터베이스의 데이터와 조합하기 쉽다. 왜냐하면, 데이터베이스 데이터도 또한 투플들로 조직화되기 때문이다. 따라서, 데이터 스트림 내의 메시지들을 데이터베이스로부터의 데이터와 조합(照合)하는 데이터 프로세싱 단계는 전체적인 메시지 중개인 시스템에 심리스(seamless)하게 통합될 수 있다.Since the present invention provides incoming data to the broker as a stream of message tuples, it is easy to combine incoming data with data in the database. Because database data is also organized in tuples. Thus, the data processing step of combining the messages in the data stream with the data from the database can be seamlessly integrated into the overall message broker system.

이러한 데이터 프로세싱 요소를 전체적인 메시지 중개인 시스템에 심리스하게 통합함으로써, 중개인의 다른 부분들을 프로그램하기 위해 사용되는, 비주얼 툴, 인터페이스 및 모델들과 같은 동일한 표준 관계형 방법들이, 데이터의 스트림이 어떻게 데이터베이스로부터의 데이터와 조합(照合)(예를 들어, 머지 및 결합)되어야만 하는가를 특정하는 것을 프로그래밍하는 동안에 사용될 수도 있다. 이는 동일 툴들이 시종일관 사용될 수 있으므로, 전체적인 중개인 시스템을 프로그래밍하는 것을 용이하게 한다.By seamlessly integrating these data processing elements into the overall message broker system, the same standard relational methods, such as visual tools, interfaces and models, used to program different parts of the broker, how the stream of data is from the database It may be used during programming to specify whether and must be combined (eg, merged and combined). This facilitates programming the entire broker system since the same tools can be used consistently.

완벽한 메시징 중개인에 관하여 그러한 관계형 테크닉들(특히, 비주얼 툴들)을 사용하는 능력으로 인하여 비효율적으로 프로그램될 우려가 있을 수 있는 중개인의 부분들을 최적화하는 것이 매우 쉬워진다.The ability to use such relational techniques (especially visual tools) with respect to a perfect messaging broker makes it very easy to optimize the parts of the broker that may be inefficiently programmed.

또한, 중개인을 통한 메시지들의 흐름은, 인입 데이터 스트림들을 저장된 데이터베이스 데이터와 조합하는 전체적인 중개인 시스템의 유닛으로의 심리스한 통합으로 인하여 (종래의 암브로시아 및 액티브웹에 비하여) 훨씬 더 효율적으로 이루어진다.In addition, the flow of messages through the broker is much more efficient due to the seamless integration into the unit of the overall broker system that combines incoming data streams with stored database data (compared to conventional Ambroseia and the Active Web).

마지막으로, 본 발명에 연관된 심리스 통합으로 인해 메시지 중개인의 다른 부분들에서 발생하는 프로세싱도 또한 고려하는 전체적인 트랜잭션의 일부로서 조합 유닛(collation unit) 내에 일어나는 프로세싱으로 취급하는 것이 훨씬 쉬워진다. 즉, 중개인의 모든 요소들이 동일하게 취급될 수 있다면, 시스템-와이드 프로세싱 측면을 추적하는 것이 훨씬 쉬워진다.Finally, the seamless integration associated with the present invention makes it much easier to treat the processing that occurs in other parts of the message broker as processing occurring within a collation unit as part of the overall transaction that also takes into account. In other words, tracking all aspects of the system-wide processing becomes much easier if all elements of the broker can be treated identically.

도 1에서, 가입자들이 수신하고 싶어하는 라이브 업-투-더 미누트(live up-to-the-minute) 데이터를 공급하기 위해 발행자 데이터 프로세싱 유닛(11)이 제공된다(바람직한 실시예에서는 주식 데이터가 사용되는데, 이는 중개인 사용의 대표적인 형태이며, 또한 주식 데이터가 지속적으로 변경되고 많은 가입자들에 의해 즉시 기반으로 요구되는 데이터의 좋은 예이기 때문임). 발행자 데이터 프로세싱 유닛(11)은 임의의 다수의 이용 가능한 컴퓨터 프로세싱 플랫폼들 상에서 실행될 수 있다.In FIG. 1, a publisher data processing unit 11 is provided to supply live up-to-the-minute data that subscribers would like to receive (in preferred embodiments, stock data is provided). It is used as a representative form of broker use, and also because stock data is constantly changing and a good example of data that is required on an immediate basis by many subscribers). The publisher data processing unit 11 may run on any of a number of available computer processing platforms.

IBM의 MQseries 제품(큐 관리자(12)로 나타내어짐)과 같은 메시징 및 큐잉 유닛은 발행자 데이터 프로세싱 유닛(11) 및 가입자 데이터 프로세싱 유닛(15) 사이에 놓인다. 가입자 프로세싱 유닛(15)은 임의의 다수의 이용 가능한 컴퓨터 프로세싱 플랫폼들 상에서 실행될 수 있으며, 선택된 플랫폼은 발행자(11)에 의해 사용되는 플랫폼과 다를 수 있다. (MQseries와 같은) 알려진 큐 관리자(12)는 비동기 방식으로 발행자(11)와 가입자(15)가 서로 통신하도록 하기 위하여 모든 필요한 데이터 포맷 변환(예를 들어, 프로토콜 등)을 맡는다(예를 들어, 가입자(15)는 메시지들이 발행자(11)에 의해 발행되고 있을 때 동작 중일 필요가 없으며, 메시지들은 큐에 저장되고 가입자(15)는 가입자(15)가 다시 동작하게 될 때 메시지들을 검색할 수 있다). 별개의 큐 관리자(12)는 통상 각 발행자 및 가입자에게 할당되며, 큐 관리자들은 유닛들간의 메시지들의 흐름을 제어하기 위하여 상호작용을 한다. 그러나, 설명의 편이를 위하여 큐 관리자(12)는 단일 엔터티로서 설명하기로 한다.Messaging and queuing units, such as IBM's MQseries product (represented by queue manager 12), are placed between publisher data processing unit 11 and subscriber data processing unit 15. Subscriber processing unit 15 may run on any of a number of available computer processing platforms, and the selected platform may be different from the platform used by issuer 11. Known queue manager 12 (such as MQseries) takes care of all necessary data format conversions (e.g., protocols, etc.) in order for publisher 11 and subscriber 15 to communicate with each other in an asynchronous manner (e.g., Subscriber 15 need not be active when messages are being issued by issuer 11, messages are stored in a queue and subscriber 15 can retrieve messages when subscriber 15 becomes operational again. ). A separate queue manager 12 is typically assigned to each issuer and subscriber, with the queue managers interacting to control the flow of messages between units. However, for ease of explanation, the queue manager 12 will be described as a single entity.

발행 메시지 및 가입자(15)가 동일 기계(machine) 상에서 실행될 수 있음을 주목하여야 한다. 이와 같은 경우에, 데이터 포맷 변환에 대한 필요성이 감소되며큐 관리자(12)는 단순히 발행자 애플리케이션으로부터의 발행 메시지들을 가입자 애플리케이션으로 경로 배정(route)하게 된다.It should be noted that the issue message and the subscriber 15 can be executed on the same machine. In such a case, the need for data format conversion is reduced and the queue manager 12 simply routes the publish messages from the publisher application to the subscriber application.

큐 관리자(12)는 수신한 발행 메시지들을 관계형 메시지 중개인(13)(관계형 메시지 중개인(13)은 중개 데이터 프로세싱 유닛(intermediary data processing unit) 또는 복수의 상호연결된 데이터 프로세싱 유닛들 상에서 실행될 수 있음)에게 보내고, 관계형 메시지 중개인(13)은 (후술하는 바와 같이) 메시지들을 처리하여, 처리된 메시지들이 가입자들에 의해 검색될 수 있도록 적절한 가입자들의 출력 큐들에 놓기 위하여 다시 큐 관리자(12)로 돌려보낸다. 간단하게 하기 위하여 이러한 가입자( 및 발행자)는 단 하나만이 도 1에 나타내져 있으나 통상의 경우에는 복수의 가입자들 및 발행자들이 있게 된다.The queue manager 12 sends the received messages to the relational message broker 13 (the relational message broker 13 may be executed on an intermediary data processing unit or a plurality of interconnected data processing units). The relational message broker 13 processes the messages (as described below) and returns them back to queue manager 12 to place them on the output queues of the appropriate subscribers so that the processed messages can be retrieved by the subscribers. For simplicity, only one such subscriber (and issuer) is shown in FIG. 1, but in general there will be multiple subscribers and issuers.

도 1의 점선으로 나타낸 바와 같이, 큐 관리자(12)를 바이패싱하여, 관계형 메시지 중개인(13)이 동기 모드로 동작하는데 사용될 수 있음을 주목해야 한다. 사실상, 중개인(13)은 큐 고정 수단(118)의 도움(provision) 없이 전체적인 동기 환경에서 사용될 수 있다. 이는 예를 들어, 발행자 및 가입자가 항상 동작 중이기 때문에 큐 관리자(12)의 기능들에 대한 필요성이 없는 시스템에 관련된다.As indicated by the dashed line in FIG. 1, it should be noted that by bypassing queue manager 12, relational message broker 13 can be used to operate in a synchronous mode. In fact, the broker 13 can be used in an overall synchronous environment without the provision of the queue fixing means 118. This relates to, for example, a system that eliminates the need for the functions of queue manager 12 because the publisher and subscriber are always in operation.

프로세싱을 수행함에 있어서, 중개인(13)은 종종 데이터베이스(14)를 액세스한다. 예를 들어, 발행 메시지들 내의 정보는 보다 의미 있는 메시지를 생성한 후 이를 가입자에게 보내기 위하여 데이터베이스에 저장되어 있는 정보와 결합( join)된다. 예를 들어, 발행 메시지는 주당 150 미국 달러까지 IBM 주식 가격이 오른다는 것일 수 있으며, 데이터베이스(14)에 저장된 데이터베이스 레코드는 식별자 C3을 갖는 특정 고객이 IBM 주식 77주를 소유하고 있음을 나타낼 수 있다. 중개인(13)에 의해 수행되는 결합 동작은, 고객 C3이 현재 주당 150 미국 달러의 가치가 있는 IBM 주식을 77주 소유하고 있음을 나타내는 발행 메시지보다 긴 메시지를 생성하기 위하여 이 정보의 모두를 모을 것이다.In performing the processing, the broker 13 often accesses the database 14. For example, the information in the publish messages is joined with the information stored in the database to produce a more meaningful message and send it to the subscriber. For example, the issue message may indicate that IBM stock prices are up to 150 US dollars per share, and a database record stored in database 14 may indicate that a particular customer with identifier C3 owns 77 IBM shares. . The combining operation performed by the broker 13 will gather all of this information to produce a message longer than the issued message indicating that client C3 currently owns 77 shares of IBM stock worth 150 US dollars per share. .

잘 알려진 바와 같이, 데이터베이스에 저장된 데이터는 '투플'로 불리는 로우들로 조직화된다. 예를 들어, 표 1은 3 투플을 나타낸다.As is well known, data stored in a database is organized into rows called tuples. For example, Table 1 shows three tuples.

(데이터베이스에 저장된 데이터 샘플)(Samples of data stored in the database) 회사company 고객customer 물량Volume IBMIBM C3C3 7777 IBMIBM C2C2 4444 FordFord C3C3 120120

제1 투플은 고객 C3이 IBM 주식을 77주 가지고 있음을 나타낸다. 제2 투플은 고객 C2가 IBM 주식을 44주 가지고 있음을 나타낸다. 제3 투플은 고객 C3이 Ford 주식을 120주 가지고 있음을 나타낸다.The first tuple indicates that customer C3 has 77 shares of IBM stock. The second tuple indicates that customer C2 has 44 shares of IBM. The third tuple indicates that customer C3 has 120 shares of Ford.

본 발명의 바람직한 실시예에 따르면, 발행자(11)가 보내온 발행 메시지들도 또한 투플들로 조직화된다. 따라서 발행 메시지의 스트림은 투플들의 임시 순서화 리스트이다. 예를 들어, 표 2는 각각 투플들로 조직화되는 2개의 메시지들의 시퀀스를 나타낸다.According to a preferred embodiment of the present invention, the issue messages sent by the issuer 11 are also organized in tuples. Thus the stream of issue messages is a temporary ordered list of tuples. For example, Table 2 shows a sequence of two messages, each organized into tuples.

(메시지 스트림 내의 샘플 투플들)(Sample tuples in the message stream) 회사company 가격price IBMIBM 160160 FordFord 4444

제1 투플은 IBM 주식이 현재 주당 160 미국 달러의 가치가 있음을 나타낸다. 제2 투플은 Ford 주식이 현재 주당 44 미국 달러의 가치가 있음을 나타낸다.The first tuple indicates that IBM stock is currently worth 160 US dollars per share. The second tuple indicates that the Ford stock is currently worth 44 US dollars per share.

스트림 내의 각 메시지 투플은 동일한 세트의 필드들(예를 들어, 회사 및 가격 필드들)을 가질 수 있다. 이와 달리, 스트림 내의 몇몇 메시지 투플들은 무효(null) 값이 할당되어 있는 특별한 메시지 투플을 위해 규정되지 않은 필드들과는 다른 세트의 필드들을 가질 수 있다. 또한, 표 2에 나타낸 투플들은 간단한 데이터(예를 들어, 수 또는 문자열)를 가지고 있으나, 필드들도 또한 어떤 추가적인 구조를, 예를 들어 어레이 또는 내포형 투플(nested tuple)을 포함할 수 있을 것이다.Each message tuple in the stream may have the same set of fields (eg, company and price fields). Alternatively, some message tuples in the stream may have a different set of fields than fields not specified for a particular message tuple to which a null value is assigned. In addition, the tuples shown in Table 2 have simple data (eg numbers or strings), but the fields may also include any additional structure, eg an array or nested tuples. .

도 2에 나타내어진 관계형 메시지 중개인(13)의 보다 구체적인 블록도 및 이어지는 복수의 예들에 대한 후술하는 논의로부터 명백하게 되는 바와 같이, 발행 메시지들 및 데이터베이스 데이터의 모두가 투플들로 배열되어 있으므로, 발행 메시지들 및 데이터베이스 데이터의 원하는 조합(collation)이 표준 관계형 표현을 사용하여 특정될 수 있다.As will be evident from the more detailed block diagram of the relational message broker 13 shown in FIG. 2 and the discussion below, with the following plurality of examples, both the issue messages and the database data are arranged in tuples, so the issue message And desired collations of database data can be specified using standard relational representations.

도 2에서, 발행자 애플리케이션 P1(11)은 메시지들을 프로세스하여 특별한 가입자들에게 할당하기 위해 관계형 메시지 중개인(13)에게 스트림을 전달하는 큐 관리자(12)에게 투플로서 배열된 발행 메시지들의 스트림을 보내고, 이어서 메시지들의 스트림은 3개의 가입자 애플리케이션들 S1(15a), S2(15b), S3(15c)에게 전송하기 위해 큐 관리자(12)에게 돌려 보내진다. 관계형 메시지 중개인(13)은 네트워크를 형성하기 위하여 상호연결된 프로세싱 노드들(21, 22, 23)의 세트로서 배열되어 있다. 이들 프로세싱 노드들은 모두 동일한 데이터 프로세싱 기계 상에 위치할 수도 있고, 복수의 상호연결된 데이터 프로세싱 기계들에 분산될 수도 있다. 각 노드의 프로세싱 기능은 이하에서 보다 구체적으로 설명하는 바와 같이 표준 관계형 언어(예를 들어 SQL 질의)로 된 관계형 표현에 의해 규정된다.In FIG. 2, the publisher application P1 11 sends a stream of published messages arranged as a tuple to the queue manager 12 which delivers the stream to the relational message broker 13 for processing and assigning messages to particular subscribers. The stream of messages is then sent back to queue manager 12 for transmission to three subscriber applications S1 15a, S2 15b, S3 15c. The relational message broker 13 is arranged as a set of interconnected processing nodes 21, 22, 23 to form a network. These processing nodes may all be located on the same data processing machine and distributed across a plurality of interconnected data processing machines. The processing function of each node is defined by a relational representation in a standard relational language (eg SQL query), as described in more detail below.

일단 중개인(13) 내에서, 발행 메시지의 스트림에 대해서 먼저 어떤 메시지들만이 필터를 통과하도록 하고 발행 메시지들의 일부를 필터 아웃(폐기)하는 필터 노드(21)에 의한 프로세싱이 이루어진다. 예를 들어, P1로부터 발행된 주식 시세들의 스트림은 일반적으로 매우 많은 수의 회사들의 주식 시세들에 관련될 것이다. 아마 가입자들 S1, S2, S3은 IBM 및 Ford 주식들에만 관심이 있다. 따라서, 필터 노드(21)는 단지 메시지가 IBM 또는 Ford의 주식 가격에 관련된 경우에만 필터를 통과하도록 할 수 있다. 필터 노드(21)의 기능은 매우 일반적인 관계형 데이터베이스 동작(통상 선택(select)으로 언급됨)이므로, 필터 노드(21)의 기능은 관계형 데이터베이스 분야에 매우 잘 알려져 있다. 필터 노드(21)의 프로세싱 기능은 정확히 어떤 메시지들이 필터를 통과할 수 있는 것인지를 표현하기 위하여, 예를 들어 SQL SELECT 서술문을 사용하는 관계형 표현에 의해 규정된다.Once within the broker 13, processing is done by the filter node 21 which first allows only certain messages to pass through the filter and filters out (discards) some of the issued messages for the stream of published messages. For example, the stream of stock quotes issued from P1 will generally be related to the stock quotes of a very large number of companies. Perhaps subscribers S1, S2, S3 are only interested in IBM and Ford stocks. Thus, filter node 21 can only pass the filter if the message relates to the stock price of IBM or Ford. Since the function of the filter node 21 is a very general relational database operation (commonly referred to as a select), the function of the filter node 21 is very well known in the relational database art. The processing function of the filter node 21 is defined by a relational representation using, for example, an SQL SELECT statement to express exactly what messages can pass through the filter.

필터(21)의 출력은 제1 입력으로서 (단지 IBM과 Ford 주식 시세에만 관련되는) 필터링된 메시지 스트림을 받는 결합 오퍼레이터(22)의 입력에 연결된다. 결합 노드(22)는 데이터베이스(14)로부터 제2 입력을 수신한다. 결합 노드(22)가 필터 노드(21)의 출력으로부터 발행 메시지를 수신할 때, 발행 메시지들과 결합하기 위하여 적절한 데이터베이스 투플들이 액세스되어 데이터베이스(14)로부터 읽혀진다.결합 노드(22)의 기능은 매우 일반적인 관계형 데이터베이스 동작이므로, 결합 노드(22)의 기능은 관계형 데이터베이스 분야에 매우 잘 알려져 있다. 결합 노드(22)의 프로세싱 기능은 메시지 스트림이 어떻게 데이터베이스 데이터와 결합되는지를 정확히 표현하기 위하여, 예를 들어 SQL INNER JOIN 서술문을 사용하는 관계형 표현에 의해 규정된다.The output of the filter 21 is connected to the input of the combining operator 22 which receives the filtered message stream (only relevant for IBM and Ford stock quotes) as the first input. Joining node 22 receives a second input from database 14. When the join node 22 receives a publish message from the output of the filter node 21, the appropriate database tuples are accessed and read from the database 14 to join the publish messages. The function of the combine node 22 is Because of the very common relational database operation, the function of the joining node 22 is very well known in the relational database art. The processing function of the joining node 22 is defined by a relational representation using, for example, an SQL INNER JOIN statement to express exactly how the message stream is combined with the database data.

예를 들어, 표 1의 데이터베이스 데이터를 사용하여, IBM 주식 가격이 현재 주당 160 미국 달러임을 나타내는 (표 2의 제1 라인에 있는) 제1 발행 메시지 투플이 중개인(13)에 의해 수신될 때, 이 노드를 규정하는 관계형 표현은 IBM 또는 Ford 주식 가격에 관련된 메시지 투플들을 통과하도록 하고 있으므로, 제1 발행 메시지 투플은 필터 노드(21)를 통과한다. 이 메시지 투플이 결합 노드(22)에 도착할 때, 결합 노드는 이 메시지 투플과 표 1의 제1 라인에 나타내어진 투플을 조합(照合)하여 표 3의 제1 라인에 나타내어진 바와 같은 보다 긴 투플(이 투플은 현재 주당 160 미국 달러의 가치가 있는 IBM 주식 77주를 고객 C3이 가지고 있음을 나타낸다)을 제공한다.For example, using the database data in Table 1, when a first issued message tuple (in line 1 of Table 2) is received by broker 13 indicating that the IBM stock price is currently 160 US dollars per share, Since the relational representation that defines this node is intended to pass through message tuples related to IBM or Ford stock prices, the first issued message tuple passes through filter node 21. When this message tuple arrives at the joining node 22, the joining node combines this message tuple and the tuple shown in the first line of Table 1 to form a longer tuple as shown in the first line of Table 3. (This tuple represents customer C3 currently holding 77 IBM stocks worth 160 US dollars per share).

(결합 노드의 출력에서의 메시지 스트림에서의 샘플 투플들)(Sample tuples in the message stream at the output of the joining node) 회사company 가격price 고객customer 물량Volume IBMIBM 160160 C3C3 7777 IBMIBM 160160 C2C2 4444 FordFord 4444 3333 120120

이어서 결합 노드(22)의 출력은 S3의 큐에 포함(inclusion)되기 위해 큐 관리자(12)로 보내진다. 가입자 S3(15c)은 그 때 가입자 S3이 정보를 검색할 준비가될 때마다 큐로부터 메시지들을 검색한다. 도 2의 노드 구조에 따르면, S3은 IBM 또는 Ford 주식을 소유하고 있는 모든 고객들에 관한 메시지들을 수신할 것이다. S3은 예를 들어 모든 고객들의 주식 소유 데이터(stock ownership data)를 얻기를 원하는 회계 감사원이다.The output of join node 22 is then sent to queue manager 12 for inclusion in the queue at S3. Subscriber S3 15c then retrieves messages from the queue each time subscriber S3 is ready to retrieve information. According to the node structure of FIG. 2, S3 will receive messages regarding all customers who own IBM or Ford shares. S3 is, for example, an auditor who wants to obtain stock ownership data of all customers.

이 동일 메시지 투플(표 2의 제1 라인에 나타내어짐)도 또한 표 1의 제2 라인에 나타내어진 데이터베이스 투플과 결합 노드(22)에서 결합되어, 결과적으로 표 3의 제2 라인에 나타내어진 바와 같은 보다 긴 투플(이 투플은 현재 주당 160 미국 달러의 가치가 있는 IBM 주식 44주를 고객 C2가 소유하고 있음을 나타냄)이 된다. 이 결합 노드(22)의 출력은 이어서 S3의 큐에 포함되기 위하여 큐 관리자(12)로 보내진다. 그런 다음 가입자 S3(15c)은 가입자 S3이 정보를 검색할 준비가 될 때마다 큐로부터 메시지들을 검색한다.This same message tuple (shown in the first line of Table 2) is also combined at the joining node 22 with the database tuple shown in the second line of Table 1, and consequently, as shown in the second line of Table 3. The same longer tuple, which indicates that customer C2 owns 44 shares of IBM, currently worth 160 US dollars per share. The output of this joining node 22 is then sent to queue manager 12 for inclusion in the queue at S3. Subscriber S3 15c then retrieves messages from the queue each time subscriber S3 is ready to retrieve information.

결합 노드(22)의 출력은 또한 S2의 큐에 포함되기 위하여 큐 관리자(12)로 보내진다. 특히, 결합 노드(22)의 출력은 고객 C2에 관련된 메시지 투플들만을 통과하도록 프로그램되어 있는 필터 노드(23)로 보내진다. 필터 노드(23)의 프로세싱 기능은 어느 메시지들이 필터를 통과하도록 허여되는지를 정확히 표현하기 위하여 예를 들어 SQL SELECT 서술문을 사용하는 관계형 표현에 의해 규정된다. 표 3의 제2 라인에 나타내어진 메시지 투플은 C2에 관련되어 있으므로 필터 노드(23)를 통과하여 S2의 큐에 포함되기 위해 큐 관리자(12)로 보내질 것이다. 가입자 S2(15b)는 그런 다음 가입자 S2가 정보를 검색할 준비가 될 때마다 큐로부터 메시지들을 검색(retrieve)한다.The output of join node 22 is also sent to queue manager 12 for inclusion in the queue at S2. In particular, the output of the joining node 22 is sent to the filter node 23 which is programmed to pass only message tuples related to the customer C2. The processing function of the filter node 23 is defined by a relational representation using, for example, an SQL SELECT statement to express exactly which messages are allowed to pass through the filter. The message tuple shown in the second line of Table 3 is related to C2 and therefore will be sent to queue manager 12 for inclusion in the queue of S2 through filter node 23. Subscriber S2 15b then retrieves messages from the queue each time subscriber S2 is ready to retrieve information.

(표 2의 제2 라인에 나타낸 바와 같은) 제2 발행 메시지 투플이 필터 노드(21)에 도달할 때, 이 메시지 투플은 Ford 주식 가격(특히, 이 메시지 투플은 현재 Ford 주식 가격이 지금 주당 44 미국 달러임을 나타냄)에 관한 것이므로 필터 노드(21)를 통과하게 될 것이다. 일단 필터 노드(21)를 통해서, 이 메시지 투플은 결합 노드(22)로 가서, (이 메시지 투플은 Ford에 관련된 데이터베이스 투플이므로) 표 1의 제3 라인에 나타낸 데이터베이스 투플과 결합되어 표 3의 제3 라인에 나타낸 바와 같은 보다 긴 투플(이 투플은 고객 C3이 현재 주당 44 미국 달러의 가치가 있는 Ford 주식 120주를 가지고 있음을 나타냄)을 제공한다. 결합 노드(22)로부터 출력된 이 메시지 투플은 이어서 S3의 큐에 포함되기 위해 큐 관리자(12)로 보내진다. 그런 다음 가입자 S3(15c)은 가입자 S3이 정보를 검색할 준비가 될 때마다 큐로부터 메시지들을 검색한다. (고객 C3에 관련된) 결합 노드(22)로부터 출력된 이 메시지 투플은, 필터 노드(23)가 고객 C2에 관련된 메시지 투플들만을 통과하도록 허용하기 때문에, 필터 노드(23)를 통과할 수 없다.When the second issued message tuple (as shown in line 2 of Table 2) reaches the filter node 21, the message tuple is the Ford stock price (in particular, this message tuple is currently at 44 Ford stock price per share). Will be passed through filter node 21. Once through the filter node 21, this message tuple goes to the joining node 22 and is combined with the database tuple shown in the third line of Table 1 (since this message tuple is a database tuple related to Ford). Longer tuples as shown in line 3 (this tuple indicates customer C3 currently has 120 Ford shares worth 44 US dollars per share). This message tuple output from joining node 22 is then sent to queue manager 12 for inclusion in the queue at S3. Subscriber S3 15c then retrieves messages from the queue each time subscriber S3 is ready to retrieve information. This message tuple output from the joining node 22 (relative to the customer C3) cannot pass through the filter node 23 because it allows the filter node 23 to pass only message tuples related to the customer C2.

가입자 S1이 IBM 및 Ford 주식에 매우 관심이 있으나 둘 중 어느 회사의 주식을 사지도 않았으며 살 계획도 없다고 가정하자. 예를 들어, S1은 IBM과 Ford 주식의 현재 주식 가격을 기초로 사업 결정을 하는 재정 전문가(financial agent)라고 가정하자. 이 경우에, 데이터베이스(14)는 S1이 바랄 수 있는 어떤 정보도 포함하지 않으므로 결합 노드(22)에 연루될 필요가 없다. 따라서, 제2 출력은 필터 노드(21)로 제공되고 필터 노드(21)가 통과시킨 모든 발행 메시지들(IBM 및 Ford 주식 가격들에 관한 주식 가격들)이 제2 출력으로부터 출력된다. 그런 다음 이 메시지들은 S1의 큐에 포함되기 위해 큐 관리자(12)로 전달된다. 그런 다음 가입자 S1(15a)은 가입자 S1이 정보를 검색할 준비가 될 때마다 큐로부터의 메시지를 검색한다.Suppose subscriber S1 is very interested in IBM and Ford stocks but has not bought and plans to buy shares of either. For example, suppose S1 is a financial agent that makes business decisions based on the current stock prices of IBM and Ford stocks. In this case, the database 14 does not contain any information that S1 may wish to and thus does not need to be involved in the joining node 22. Thus, the second output is provided to the filter node 21 and all issued messages (stock prices relating to IBM and Ford stock prices) passed by the filter node 21 are output from the second output. These messages are then delivered to queue manager 12 for inclusion in the queue at S1. Subscriber S1 15a then retrieves the message from the queue whenever subscriber S1 is ready to retrieve information.

따라서, 중개인(13)의 각 노드의 기능은 전적으로 데이터베이스-특정 용어들로 규정된다. 각 노드는 SQL과 같은 표준 관계형 언어로 표현된 관계형 표현을 갖는다. 한 노드의 관계형 표현의 출력은 인접 노드의 관계형 표현에 입력으로서 제공되는 메시지 투플들의 스트림이다. 필터 노드들(21, 23)은 데이터베이스 관계형 대수(algebra)의 일반적인 SELECT 기능을 사용한다. 결합 노드(22)는 데이터베이스 관계형 대수의 일반적인 INNER JOIN 기능을 사용한다. 데이터베이스(14)와 발행 메시지들 간에 일어나는 조합(照合)이 '결합(join)' 동작으로서 상세히 설명되었으나, 다른 많은 관계형 대수들도 또한 '교차(intersection)' 또는 '계산(compute)' 또는 '통합(union)'과 같은 발행 메시지들과 데이터베이스 데이터를 조합(照合)하기 위하여 구현될 수 있다.Thus, the function of each node of the broker 13 is defined entirely in database-specific terms. Each node has a relational representation expressed in a standard relational language such as SQL. The output of the relational representation of a node is a stream of message tuples provided as input to the relational representation of an adjacent node. The filter nodes 21, 23 use the general SELECT function of the database relational algebra. The join node 22 uses the generic INNER JOIN function of database relational algebra. Although the combination that occurs between the database 14 and the publish messages has been described in detail as a 'join' operation, many other relational algebra are also 'intersection' or 'compute' or 'integration'. It can be implemented to combine database data with publication messages, such as 'union'.

노드들의 기능을 규정하는데 사용될 수 있는 관계형 표현들의 몇 가지 예를 여기서 설명하기로 한다.Some examples of relational representations that can be used to define the functionality of the nodes are described herein.

예 1: 필터링Example 1: Filtering

이 예에서 제1 필터 노드(21)는 SQL로 다음과 같이 규정된다.In this example, the first filter node 21 is defined in SQL as follows.

SELECT*SELECT *

FROM StockFROM Stock

WHERE Company='IBM' 또는 Company='Ford'WHERE Company = 'IBM' or Company = 'Ford'

예 2: 결합(Join)Example 2: join

노드(21)로부터의 출력 스트림을 Q21이라 하고 정보를 포함하는 고객의 데이터베이스 관계를 홀딩(Holding)이라 부르기로 하자. 이 때 결합 노드(22)는 다음과 같이 규정된다.Let the output stream from node 21 be Q21 and the database relationship of the customer that contains the information is called holding. At this time, the joining node 22 is defined as follows.

SELECT Q21.*, Customer, QuantitySELECT Q21. *, Customer, Quantity

FROM Q21 INNER JOIN HoldingFROM Q21 INNER JOIN Holding

ON Q21.Company=Holding.CompanyON Q21.Company = Holding.Company

예 3: 결합 종속 필터링Example 3: join dependent filtering

결합 노드의 출력 스트림이 Q22라면, 결합으로부터 출력된 고객 필드에 의존하는 필터 노드(23)는 다음과 같이 표현된다.If the output stream of the join node is Q22, the filter node 23 depending on the customer field output from the join is expressed as follows.

SELECT*SELECT *

FROM Q22FROM Q22

WHERE Customer='C2'WHERE Customer = 'C2'

예 4: 계산(computation)Example 4: computation

각 트랜잭션을 위한 총 가격은 다음과 같이 계산될 수 있다.The total price for each transaction can be calculated as follows.

SELECT*, Price*Quantity AS TotalValueSELECT *, Price * Quantity AS TotalValue

FROM Q22FROM Q22

예 5: 네거티브 필터링(차이)Example 5: negative filtering (difference)

가입자는 지방 정책(local policy)에 의해 주식 거래가 금지되는 회사들에 관한 주식 정보를 보기를 원하지 않는다. 그러한 회사들의 리스트는 데이터베이스의 금지 관계(Proscribed relation) 내에 유지된다. 가입(subscription)은 다음과 같은 SQL 규정으로 만들어진다.Subscribers do not want to see stock information about companies whose stock trading is prohibited by local policy. The list of such companies is maintained within the Proscribed relation of the database. A subscription is made up of the following SQL rules:

SELECT*SELECT *

FROM StockFROM Stock

WHERE Company NOT INWHERE Company NOT IN

(SELECT Company FROM Proscribed)(SELECT Company FROM Proscribed)

예 6:아카이브(Archive)Example 6: Archive

관리인(administrator)은 입력 스트림 주식의 메시지 투플들을 관계 내에 삽입함으로써 날짜가 찍힌 아카이브(datestamped archive)를 셋업 한다.An administrator sets up a dated archive by inserting message tuples of input stream stock into a relationship.

INSERT INTO StockArchiveINSERT INTO StockArchive

SELECT*, Time() as TimeAuditSELECT *, Time () as TimeAudit

FROM StockFROM Stock

예 7: 갱신(Update)Example 7: Update

관리인은 데이터베이스 테이블 최신주식(StockLatest)에 각 회사에 대한 최신 가격을 추적하기를 원한다.The manager wants to keep track of the latest prices for each company in the database table StockStock.

UPDATE StockLatest INNER JOIN StockUPDATE StockLatest INNER JOIN Stock

ON StockLatest.Company=Stock.CompanyON StockLatest.Company = Stock.Company

SET StockLatest.Price=Stock.price, StockLatest.LogTime=Now();SET StockLatest.Price = Stock.price, StockLatest.LogTime = Now ();

예 8: 합성 표현(Compound expression)Example 8: Compound expression

SQL은 단일 표현 내에 몇 가지 계산들이 조합(組合)될 수 있다. 다음 표현은 결합(join), 필터(filter), 계산(computation)을 조합한 것이다.SQL can combine several calculations into a single expression. The following expression is a combination of joins, filters, and computations.

SELECT Q21*, Customer, Quantity, Price*Quantity as TotalValueSELECT Q21 *, Customer, Quantity, Price * Quantity as TotalValue

FROM Q21 INNER JOIN HoldingFROM Q21 INNER JOIN Holding

ON Q21.Company=Holding.CompanyON Q21.Company = Holding.Company

WHERE Customer='C2'WHERE Customer = 'C2'

일단 중개인 시스템이 고안되면, 추가적인 기능을 부가하기 위하여 변경하는 것이 매우 쉽다. 예를 들어, 최종 메시지(resultant message)가 관련 있는 회사에서 각 고객의 주식 소유의 총 현재 가치인 또 다른 필드를 포함할 수 있도록, (도 3에 나타낸 바와 같은) 계산 노드(24)가 결합 노드(22)의 출력에 부가될 수 있을 것이다. 즉, 계산 노드(24)는 주식 가격과 고객이 가지고 있는 주식 수를 곱하여 곱한 결과(product)를 ('총 가치(total value)'로 불리는) 별개의 필드로 제공한다. 따라서, 표 3은 다음과 같이 될 것이다.Once the broker system is invented, it is very easy to make changes to add additional functionality. For example, the calculation node 24 (as shown in FIG. 3) may be a joining node such that the final message may include another field that is the total present value of the stock ownership of each customer in the relevant company. May be added to the output of 22. In other words, the calculation node 24 multiplies the stock price by the number of shares the customer has and provides the product as a separate field (called 'total value'). Thus, Table 3 will be as follows.

회사company 가격price 고객customer 물량Volume 총 가치Total value IBMIBM 160160 C3C3 7777 1232012320 IBMIBM 160160 C2C2 4444 70407040 FordFord 4444 C3C3 120120 52805280

또한 현존 노드들(예를 들어, 22)에 대한 변경이 노드의 기능을 규정하는 관계형 표현을 변형(modifying)함으로써 용이하게 이루어질 수 있다. 결합 노드(22)와 필터 노드들(21, 23)을 노드들 간에 전달되는 메시지 투플들의 스트림과 함께 상호연결된 노드들의 네트워크로 심리스하게 통합할 수 있으므로, 임의의 노드의 관계형 표현이 통일 방식으로 쉽게 변형될 수 있다. 임의의 노드들을 위해 서로 다른 형태의 프로그래밍으로 스위치할 필요(위에서 논의한 선행 기술에서의 경우와 같이)가 없다.In addition, changes to existing nodes (e.g., 22) can be readily made by modifying the relational representation that defines the node's function. Since the joining node 22 and the filter nodes 21, 23 can be seamlessly integrated into a network of interconnected nodes with a stream of message tuples passed between the nodes, the relational representation of any node is easily It can be modified. There is no need to switch to different types of programming for any nodes (as is the case in the prior art discussed above).

중개인의 기능은 데이터베이스 특정 용어들로 구현되므로, 관계형 데이터베이스 관리 시스템들을 프로그래밍하기 위해 이용 가능한 표준 비주얼 툴들을 사용하여 중개인(13)의 기능 유닛들을 변경하는 것이 매우 쉬워진다. 예를 들어, 마이크로소프트의 액세스 제품은 그러한 비주얼 툴을 제공한다. 관계형 데이터베이스 프로그래머들은 이미 이러한 툴들에 친숙해져 있다. 따라서, 데이터베이스 프로그래머들은 중개인(13)의 노드들(예를 들어, 21, 22, 23)의 구조를 셋업 하는 것이 쉽다는 것을 알 수 있을 것이다. 예를 들어, 고객 요구에 의해서 결합 노드에 변경이 이루어져야만 한다면, 이것이 새로운 프로그래밍 테크닉을 배울 필요 없이 데이터베이스 프로그래머에 의해 쉽게 수행될 수 있으며, 그에 따라 시스템 개발비용을 대폭 줄일 수 있게 된다.Since the broker's functionality is implemented in database specific terms, it is very easy to change the functional units of the broker 13 using standard visual tools available for programming relational database management systems. Microsoft's access products, for example, provide such visual tools. Relational database programmers are already familiar with these tools. Thus, database programmers will find it easy to set up the structure of the nodes of the broker 13 (eg, 21, 22, 23). For example, if a change to the joining node has to be made at the customer's request, it can be easily performed by the database programmer without having to learn new programming techniques, thereby significantly reducing system development costs.

바람직한 실시예에서 노드들의 각각은 관계형 표현들로 규정되어 있으나, 노드들의 몇몇은 다른 방식으로 구현될 수도 있으며, 그러한 경우에도 물론 본 발명의 이익은 감소되지 않는다.In the preferred embodiment each of the nodes is defined in relational representations, but some of the nodes may be implemented in other ways, and in that case the benefit of the invention is of course not reduced.

본 발명의 바람직한 실시예에서는, 부가-가치 발행/가입 애플리케이션의 관계형 메시지 중개인이 본 발명을 위해 매우 유용한 환경이기 때문에, 설명되었다. 그러나, 전송된 메시지가 그 당시에 바쁘지 않은 수신자가 누구냐에 따라 복수의 수신자들 중 임의의 것으로 전달되는, 워크플로우 스트림들을 포함하는, 다른 많은 환경들에서도 본 발명이 유용할 것이다. 워크플로우 환경에서, 어느 수신자에게 작업 요구 메시지가 할당되어야 하는가에 관한 결정을 하기 위하여 각 수신자에 관한 데이터를 결정하기 위하여 중개인은 데이터베이스(14)를 액세스할 것이다.In a preferred embodiment of the present invention, the relational message broker of a value-added publish / subscribe application has been described as it is a very useful environment for the present invention. However, the present invention will also be useful in many other environments, including workflow streams, where the transmitted message is delivered to any of a plurality of recipients depending on who is not busy at the time. In the workflow environment, the broker will access the database 14 to determine the data for each recipient in order to make a decision as to which recipient a work request message should be assigned to.

본 발명의 일 실시예는 발행자 및 가입자 애플리케이션들이 월드 와이드 웹 브라우저 애플리케이션들을 통하여 클라이언트들로서 인터넷 서버를 액세스할 수 있도록 인터넷에 연결된 서버 컴퓨터 상에 관계형 메시지 중개인 기능을 제공한다. 이 방식에서, 중개인(13)은 (다시 인터넷 서버와 접촉하기 위하여 웹 브라우저 애플리케이션을 사용함으로써) 발행 메시지가 가입자가 이미 정한 기준에 맞을 때 가입자(15)의 웹 브라우저 애플리케이션으로 인터넷을 통해 발행 메시지들을 푸쉬할 것이다.One embodiment of the present invention provides a relational message broker function on a server computer connected to the Internet such that publisher and subscriber applications can access the Internet server as clients through world wide web browser applications. In this way, the broker 13 sends the publication messages via the Internet to the subscriber's 15 web browser application when the publication message meets the criteria already established by the subscriber (by using the web browser application again to contact the Internet server). Will push.

Claims (17)

송신자 애플리케이션으로부터 메시지들을 수신하고, 수신된 메시지들을 프로세싱하여 프로세싱된 메시지들을 어느 수신자 애플리케이션으로 전달한 것인가를 결정하는 메시지 중개인 데이터 프로세싱 장치에 있어서,A message broker data processing apparatus for receiving messages from a sender application and processing the received messages to determine to which recipient application the processed messages are delivered. 송신자 애플리케이션으로부터 인입 메시지 스트림을 수신하는 수단-여기서, 각 메시지는 적어도 하나의 필드를 갖는 투플(tuple)로서 배열되어 있음-과;Means for receiving an incoming message stream from the sender application, wherein each message is arranged as a tuple having at least one field; 데이터베이스에 저장되어 있는 데이터베이스 데이터와 상기 인입 메시지 스트림을 조합(照合)하는 수단-여기서, 데이터베이스 데이터도 또한 적어도 하나의 필드를 갖는 투플들로서 배열되어 있음-과;Means for combining the incoming message stream with database data stored in a database, wherein the database data is also arranged as tuples having at least one field; 최종 메시지 스트림이 적어도 하나의 수신자 애플리케이션에 전해지도록 상기 메시지 스트림을 프로세싱하는 수단Means for processing the message stream such that a final message stream is delivered to at least one receiver application. 을 포함하는Containing 메시지 중개인 데이터 프로세싱 장치.Message broker data processing device. 제1항에 있어서,The method of claim 1, 상기 수신하는 수단, 상기 조합(照合)하는 수단, 상기 프로세싱하는 수단은 프로세싱 노드들의 네트워크를 형성하기 위하여 상호연결된 복수의 프로세싱 노드들을 사용하며, 각 노드의 프로세싱 기능은 표준 관계형 언어로 된 관계형 표현에의해 규정되는The means for receiving, means for combining, means for processing use a plurality of interconnected processing nodes to form a network of processing nodes, the processing function of each node being in relational representation in a standard relational language. Stipulated by 메시지 중개인 데이터 프로세싱 장치.Message broker data processing device.
제2항에 있어서,The method of claim 2, 메시지 투플들의 스트림은 복수의 노드들간에 전달되는A stream of message tuples is passed between a plurality of nodes 메시지 중개인 데이터 프로세싱 장치.Message broker data processing device.
제3항에 있어서,The method of claim 3, 상기 네트워크의 인접한 2개의 노드들인 노드 1 및 노드 2에 있어서, 노드 1의 기능을 규정하는 관계형 표현의 출력이 노드 2의 기능을 규정하는 관계형 표현의 입력에 의해 메시지 투플들의 스트림으로 해석되는For two adjacent nodes of the network, Node 1 and Node 2, the output of the relational expression that defines the function of Node 1 is interpreted as a stream of message tuples by the input of the relational expression that defines the function of Node 2. 메시지 중개인 데이터 프로세싱 장치.Message broker data processing device.
제1항에 있어서,The method of claim 1, 상기 수신하는 수단은 큐 관리자와 통신하는The means for receiving communicates with the queue manager. 메시지 중개인 데이터 프로세싱 장치.Message broker data processing device.
제1항에 있어서,The method of claim 1, 송신하는 애플리케이션은 발행자이고 수신하는 애플리케이션은 가입자인The sending application is the publisher and the receiving application is the subscriber 메시지 중개인 데이터 프로세싱 장치.Message broker data processing device.
제2항에 있어서,The method of claim 2, 상기 표준 관계형 언어는 구조화 질의 언어(Structured Query Language)인The standard relational language is a structured query language. 메시지 중개인 데이터 프로세싱 장치.Message broker data processing device.
제2항에 있어서,The method of claim 2, 비주얼 데이터베이스 툴(visual database tool)이 노드의 기능을 규정하는 관계형 표현을 생성하는데 사용되는Visual database tools are used to create relational representations that define the functionality of a node. 메시지 중개인 데이터 프로세싱 장치.Message broker data processing device.
제3항에 있어서,The method of claim 3, 2개의 노드들간에 존재하는 메시지 투플들의 스트림에서 각 메시지 투플은 동일한 세트의 필드들을 갖는Each message tuple in the stream of message tuples existing between two nodes has the same set of fields 메시지 중개인 데이터 프로세싱 장치.Message broker data processing device.
제3항에 있어서,The method of claim 3, 2개의 노드들간에 존재하는 메시지 투플들의 스트림에서, 상기 스트림에서의 각 메시지 투플은 반드시 동일한 세트의 필드들을 가지는 것이 아닌In a stream of message tuples existing between two nodes, each message tuple in the stream does not necessarily have the same set of fields. 메시지 중개인 데이터 프로세싱 장치.Message broker data processing device.
제10항에 있어서,The method of claim 10, 노드에 입력되는 스트림의 특별한 메시지 투플에 규정되지 않은 노드의 기능을 규정하는 관계형 표현에 사용되는 필드들은 무효 값이 할당되는Fields used in the relational representation that specify the functionality of the node that are not specified in the special message tuple of the stream input to the node are assigned invalid values. 메시지 중개인 데이터 프로세싱 장치.Message broker data processing device.
제1항에 있어서,The method of claim 1, 상기 장치는 단일 데이터 프로세싱 유닛에 포함되는The apparatus is included in a single data processing unit 메시지 중개인 데이터 프로세싱 장치.Message broker data processing device.
제1항에 있어서,The method of claim 1, 상기 장치는 복수의 상호연결된 데이터 프로세싱 유닛에 포함되는The apparatus is included in a plurality of interconnected data processing units 메시지 중개인 데이터 프로세싱 장치.Message broker data processing device.
송신자 애플리케이션으로부터 메시지들을 수신하고, 수신된 메시지들을 프로세싱하여 프로세싱된 메시지들을 어느 수신자 애플리케이션으로 전달한 것인가를 결정하는 메시지 중개인 데이터 프로세싱 방법에 있어서,A message broker data processing method for receiving messages from a sender application and processing the received messages to determine to which recipient application the processed messages are delivered. 송신자 애플리케이션으로부터 인입 메시지 스트림을 수신하는 단계-여기서, 각 메시지는 적어도 하나의 필드를 갖는 투플(tuple)로서 배열되어 있음-와;Receiving an incoming message stream from the sender application, wherein each message is arranged as a tuple having at least one field; 데이터베이스에 저장되어 있는 데이터베이스 데이터와 상기 인입 메시지 스트림을 조합(照合)하는 단계-여기서, 데이터베이스 데이터도 또한 적어도 하나의 필드를 갖는 투플들로서 배열되어 있음-와;Combining the incoming message stream with database data stored in a database, wherein the database data is also arranged as tuples having at least one field; 최종 메시지 스트림이 적어도 하나의 수신자 애플리케이션에 전해지도록 상기 메시지 스트림을 프로세싱하는 단계Processing the message stream such that a final message stream is delivered to at least one receiver application. 를 포함하는Containing 메시지 중개인 데이터 프로세싱 방법.Message broker data processing method. 데이터 프로세싱 장치 상에서 실행될 때, 송신자 애플리케이션으로부터 메시지들을 수신하고, 수신된 메시지들을 프로세싱하여 프로세싱된 메시지들을 어느 수신자 애플리케이션으로 전달한 것인가를 결정하는 메시지 중개인 데이터 프로세싱 방법을 수행하기 위한 컴퓨터 판독가능 저장 매체에 저장되어 있는 컴퓨터 프로그램 제품에 있어서, 상기 방법이,When executed on a data processing apparatus, stored in a computer readable storage medium for performing a message broker data processing method that receives messages from a sender application and processes the received messages to determine to which recipient application the processed messages are delivered. In a computer program product, the method is 송신자 애플리케이션으로부터 인입 메시지 스트림을 수신하는 단계-여기서, 각 메시지는 적어도 하나의 필드를 갖는 투플(tuple)로서 배열되어 있음-와;Receiving an incoming message stream from the sender application, wherein each message is arranged as a tuple having at least one field; 데이터베이스에 저장되어 있는 데이터베이스 데이터와 상기 인입 메시지 스트림을 조합(照合)하는 단계-여기서, 데이터베이스 데이터도 또한 적어도 하나의 필드를 갖는 투플들로서 배열되어 있음-와;Combining the incoming message stream with database data stored in a database, wherein the database data is also arranged as tuples having at least one field; 최종 메시지 스트림이 적어도 하나의 수신자 애플리케이션에 전해지도록 상기 메시지 스트림을 프로세싱하는 단계Processing the message stream such that a final message stream is delivered to at least one receiver application. 를 포함하는Containing 컴퓨터 판독가능 저장 매체에 저장된 컴퓨터 프로그램 제품.A computer program product stored on a computer readable storage medium. 제1항에 있어서,The method of claim 1, 상기 메시지 중개인 데이터 프로세싱 장치는 인터넷 서버 상에 위치하고 상기 송신하는 애플리케이션과 수신하는 애플리케이션의 적어도 하나는 월드 와이드 웹 브라우저 애플리케이션을 사용하는The message broker data processing device is located on an internet server and at least one of the transmitting application and the receiving application uses a world wide web browser application. 메시지 중개인 데이터 프로세싱 장치.Message broker data processing device.
제1항의 장치를 사용하여, 고객에게 정보 서비스를 제공하는 방법에 있어서,A method of providing an information service to a customer using the apparatus of claim 1, (a) 상기 고객이 수신하기를 원하는 메시지가 어느 것인지에 관하여 고객으로부터 기준을 수신하는 단계와;(a) receiving criteria from a customer as to which message the customer wants to receive; (b) 발행자로부터 발행 메시지들을 수신하는 단계와;(b) receiving issuing messages from the issuer; (c) 상기 고객으로부터 수신된 상기 기준과 상기 발행 메시지들을 비교하는 단계와;(c) comparing the criteria and the issued messages received from the customer; (d) 상기 고객으로부터 수신된 상기 기준에 맞는 발행 메시지들을 상기 고객에게 전달하는 단계(d) delivering to said customer issuance messages meeting said criteria received from said customer; 를 포함하는Containing 정보 서비스 제공 방법.How to Provide Information Services.
KR1019990008627A 1998-04-29 1999-03-15 message broker apparatus, method and computer program product Expired - Fee Related KR100324978B1 (en)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
GBGB9809020.2A GB9809020D0 (en) 1998-04-29 1998-04-29 Message broker apparatus method and computer program product
GB9811802A GB2336920A (en) 1998-04-29 1998-06-03 Relational message broker adds value to published information
GB9809020.2 1998-06-03
GB9811802.9 1998-06-03

Publications (2)

Publication Number Publication Date
KR19990082740A KR19990082740A (en) 1999-11-25
KR100324978B1 true KR100324978B1 (en) 2002-02-20

Family

ID=10831088

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019990008627A Expired - Fee Related KR100324978B1 (en) 1998-04-29 1999-03-15 message broker apparatus, method and computer program product

Country Status (3)

Country Link
KR (1) KR100324978B1 (en)
GB (2) GB9809020D0 (en)
TW (1) TW401554B (en)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2350758A (en) * 1999-06-04 2000-12-06 Ibm Message broker providing a publish/subscribe sevice and method of processing messages in a publish/subscribe environment
GB2354349A (en) * 1999-09-16 2001-03-21 Ibm Event notification data processing with command and command notification combined into a single event
GB9928226D0 (en) 1999-11-30 2000-01-26 Ibm Data processing with message processing nodes wrapped into a business activity
EP1296490A3 (en) * 2001-08-14 2004-04-14 Hewlett-Packard Company Message broker
US6952731B2 (en) 2001-08-14 2005-10-04 Hewlett-Packard Development Company, L.P. Remote control of a device over the internet

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0806017A4 (en) * 1994-12-13 2000-08-30 Fs Holdings Inc A system for receiving, processing, creating, storing and disseminating investment information

Also Published As

Publication number Publication date
GB9811802D0 (en) 1998-07-29
TW401554B (en) 2000-08-11
GB9809020D0 (en) 1998-06-24
KR19990082740A (en) 1999-11-25
GB2336920A (en) 1999-11-03

Similar Documents

Publication Publication Date Title
US6510429B1 (en) Message broker apparatus, method and computer program product
EP1192535B1 (en) System and method for dynamic correlation of events
US6826560B1 (en) Subscription and notification with database technology
Banavar et al. A case for message oriented middleware
US9213988B2 (en) Electronic commerce infrastructure system
US6643682B1 (en) Publish/subscribe data processing with subscription points for customized message processing
US7676601B2 (en) Method and system for processing financial data objects carried on broadcast data streams and delivering information to subscribing clients
US8386577B2 (en) Selection of communication protocol for message transfer based on quality of service requirements
US6157928A (en) Apparatus and system for an adaptive data management architecture
US20030135556A1 (en) Selection of communication strategies for message brokers or publish/subscribe communications
EP0806731A2 (en) Database network
US8700506B2 (en) Distributed commerce system
US20040098663A1 (en) Collection and analysis of document traffic in an electronic marketplace
US20030115291A1 (en) Publish subscribe system
US7103680B1 (en) Publish/subscribe data processing with publication points for customized message processing
CA2348887A1 (en) Method and apparatus for data management using an event transition network
US8196150B2 (en) Event locality using queue services
US20030225857A1 (en) Dissemination bus interface
KR100324978B1 (en) message broker apparatus, method and computer program product
JP2000222297A (en) Device and method for broker for processing issue and read data and storage medium
EP2056248A1 (en) Electronic commerce system
JP2004506272A (en) A system that processes raw financial data and generates validated product guidance information for subscribers
GB2354848A (en) Publish/subscribe data processing with subscriber requested messageflow for customised message processing
US20030120828A1 (en) System and method for exchanging information between systems
GB2354349A (en) Event notification data processing with command and command notification combined into a single event

Legal Events

Date Code Title Description
PA0109 Patent application

Patent event code: PA01091R01D

Comment text: Patent Application

Patent event date: 19990315

A201 Request for examination
PA0201 Request for examination

Patent event code: PA02012R01D

Patent event date: 19990831

Comment text: Request for Examination of Application

Patent event code: PA02011R01I

Patent event date: 19990315

Comment text: Patent Application

PG1501 Laying open of application
E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

Comment text: Notification of reason for refusal

Patent event date: 20010430

Patent event code: PE09021S01D

E701 Decision to grant or registration of patent right
PE0701 Decision of registration

Patent event code: PE07011S01D

Comment text: Decision to Grant Registration

Patent event date: 20020126

GRNT Written decision to grant
PR0701 Registration of establishment

Comment text: Registration of Establishment

Patent event date: 20020205

Patent event code: PR07011E01D

PR1002 Payment of registration fee

Payment date: 20020206

End annual number: 3

Start annual number: 1

PG1601 Publication of registration
PR1001 Payment of annual fee

Payment date: 20041228

Start annual number: 4

End annual number: 4

PR1001 Payment of annual fee

Payment date: 20060124

Start annual number: 5

End annual number: 5

PR1001 Payment of annual fee

Payment date: 20070205

Start annual number: 6

End annual number: 6

PR1001 Payment of annual fee

Payment date: 20080204

Start annual number: 7

End annual number: 7

PR1001 Payment of annual fee

Payment date: 20090129

Start annual number: 8

End annual number: 8

PR1001 Payment of annual fee

Payment date: 20091231

Start annual number: 9

End annual number: 9

PR1001 Payment of annual fee

Payment date: 20110110

Start annual number: 10

End annual number: 10

PR1001 Payment of annual fee

Payment date: 20120201

Start annual number: 11

End annual number: 11

FPAY Annual fee payment

Payment date: 20130124

Year of fee payment: 12

PR1001 Payment of annual fee

Payment date: 20130124

Start annual number: 12

End annual number: 12

FPAY Annual fee payment

Payment date: 20140124

Year of fee payment: 13

PR1001 Payment of annual fee

Payment date: 20140124

Start annual number: 13

End annual number: 13

FPAY Annual fee payment

Payment date: 20150127

Year of fee payment: 14

PR1001 Payment of annual fee

Payment date: 20150127

Start annual number: 14

End annual number: 14

LAPS Lapse due to unpaid annual fee
PC1903 Unpaid annual fee

Termination category: Default of registration fee

Termination date: 20170109