IP Library Granted Patent US 7,672,964
Granted Patent B1
US 7,672,964 · App. 10/750,507 · Granted Mar 2, 2010

Method and system for dynamically initializing a view for a streaming data base system

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,672,964
App. No.
10/750,507
Granted
Mar 2, 2010
Kind
B1
Abstract

A method for dynamically initializing a view for a streaming database system. The method includes accessing a stream of events. An initial view is materialized from the stream, wherein the initial view comprises a dynamically defined view of the stream of events from the streaming database system. The method also includes processing a plurality of recent view snapshots from the initial view. A view state derived from each of the recent view snapshots is generated. An updated view is subsequently maintained in accordance with the view state, wherein the updated view incorporates new events of the stream.

Claims (46)

1. A method for dynamically initializing a view for a streaming database system, comprising:

accessing, by a computing device, at least one stream of events in real time while said at least one stream of events is received by said computing device as output from a streaming database system, wherein said computing device is external to said streaming database system;

materializing, by said computing device, an initialized view from said at least one stream of events as said at least one stream of events is received from said streaming database system, wherein said initialized view is dynamically defined from said at least one stream of events, and wherein materializing said initialized view comprises receiving a first dynamic view definition and generating said initialized view according to said first dynamic view definition;

producing, by said computing device, a sequence of view snapshots from said initialized view, wherein each view snapshot in said sequence corresponds to an individual event within said at least one stream of events, wherein each individual event occurs after events of said at least one stream of events are used to materialize said initialized view;

storing said sequence of view snapshots;

receiving a second dynamic view definition, said second dynamic view definition being different than said first dynamic view definition; and

using said sequence of view snapshots to generate, by said computing device, a re-initialized view according to said second dynamic view definition, wherein generating said re-initialized view comprises incorporating events used to materialize said initialized view and events of said sequence of view snapshots, and wherein generating said re-initialized view comprises calculating a view state of said re-initialized view by retrieving and replaying said sequence of view snapshots.

2. The method as recited in claim 1 wherein said initialized view comprises a plurality of row data structures.

3. The method as recited in claim 1 , wherein said initialized view comprises a stateful view resulting from a stateful stream, said stateful view having a bounded number of rows.

4. The method of claim 3 , wherein each view snapshot of said stateful view comprise a state of said stateful view including events existent at said materializing of said stateful view and events accessed after said materializing of said stateful view at a particular time.

5. The method of claim 1 , wherein said initialized view comprises a stateless view resulting from a stateless stream, said stateless view having an unbounded number of rows.

6. The method of claim 5 , wherein each view snapshot of said stateless view comprises a state of said stateless view including events existent at said materializing of said stateless view, including a last event processed during said materializing of said stateless view.

7. The method of claim 1 , further comprising:

processing said sequence of view snapshots by maintaining a sequence of a plurality of preceding current view snapshots.

8. The method of claim 7 , further comprising:

applying a batch set of events to said processing of said sequence of view snapshots, wherein each event of said batch set has a corresponding view snapshot in said sequence.

9. The method of claim 1 , wherein said generating of said initialized view is configured to accomplish a recovery of a view state.

10. The method of claim 1 , wherein said generating of said initialized view is configured to accomplish a re-enabling of a view after a disabling of a view.

11. The method of claim 1 , wherein said generating of said initialized view is configured to accomplish a load balancing of a view maintenance process.

12. The method of claim 1 , wherein accessing at least one stream of events comprises:

issuing, by said computing device, a stream query to said streaming database system; and

receiving, by said computing device, each of said events of said at least one stream of events as a result of said stream query without reissuing said stream query to said streaming database system.

13. A system comprising:

a streaming database system that outputs at least one stream of events;

a computing device, external to said streaming database system, comprising a view engine configured to access said at least one stream of events in real time while said at least one stream of events is received as output from said streaming database system, to materialize an initialized view from said at least one stream of events, wherein said initialized view is dynamically defined from said at least one stream of events, said view engine further configured to receive a first dynamic view definition and generate said initialized view according to said first dynamic view definition, to produce a sequence of view snapshots from said initialized view, wherein each view snapshot in said sequence corresponds to an individual event within said at least one stream of events, wherein each individual event occurs after events of said at least one stream of events are used to materialize said initialized view, store said sequence of view snapshots, receive a second dynamic view definition, said second dynamic view definition being different than said first dynamic view definition, and use said sequence of view snapshots to generate a re-initialized view of a second view according to said second dynamic view definition, wherein said view engine is configured to incorporate said events used to materialize said initialized view and events of said view snapshots and to calculate a view state of said re-initialized view by retrieving and replaying said sequence of view snapshots in order to generate said re-initialized view,

wherein said streaming database system is configured to send said at least one stream of events to said computing device.

14. The system of claim 13 , wherein said computing device issues a stream query to said streaming database system, and wherein said streaming database system sends events of said at least one stream of events to said computing device as a result of said stream query without said computing device reissuing said stream query to said streaming database system.

15. The system of claim 13 , wherein said initialized view comprises a stateful view resulting from a stateful stream, said stateful view having a bounded number of rows.

16. The system of claim 15 , wherein each recent view snapshot of said stateful view comprises a state of said initialized view including events existent at said materializing of said initialized view and events accessed after said materializing of said initialized view at a particular time.

17. The system of claim 13 , wherein said initialized view comprises a stateless view resulting from a stateless stream, said stateless view having an unbounded number of rows.

18. The system of claim 17 , wherein each recent view snapshot of said stateless view comprises a state of said initialized view including events existent at said materializing of said initialized view, including a last event processed during said materializing of said initialized view.

19. The system of claim 13 , wherein said view engine is further configured to process said sequence of recent view snapshots by maintaining a sequence of a plurality of preceding current view snapshots.

20. The system of claim 19 , wherein said view engine is further configured for applying a batch set of events to said processing of said sequence of recent view snapshots, wherein said event of said batch set has a corresponding recent view snapshot in said sequence.

21. A computer-readable medium comprising instructions for causing a programmable processor of a computing device external to a streaming database to:

access at least one stream of events in real time while said at least one stream of events is received by said computing device as output from a streaming database system, wherein said computing device is external to said streaming database system;

materialize an initialized view from said at least one stream of events as said at least one stream of events is received from said streaming database system, wherein said initialized view is dynamically defined from said at least one stream of events, and wherein said instructions to materialize said initialized view comprise instructions to receive a first dynamic view definition and generate said initialized view according to said first dynamic view definition;

produce a sequence of view snapshots from said initialized view, wherein each view snapshot in said sequence corresponds to an individual event within said at least one stream of events, wherein each individual event occurs after events of said at least one stream of events are used to materialize said initialized view;

store said sequence of view snapshots;

receive a second dynamic view definition, said second dynamic view definition being different than said first dynamic view definition; and

use said sequence of view snapshots to generate a re-initialized view according to said second dynamic view definition, wherein said instructions to generate said re-initialized view comprise instructions to incorporate events used to materialize said initialized view and events of said sequence of view snapshots, and wherein said instructions to generate said re-initialized view comprise instructions to calculate a view state of said re-initialized view by retrieving and replaying said sequence of view snapshots.

22. The computer-readable medium of claim 21 , wherein said initialized view comprises a stateful view resulting from a stateful stream, said stateful view having a bounded number of rows.

23. The computer-readable medium of claim 22 , wherein each view snapshot of said stateful view comprises a state of said stateful view including events existent at said materializing of said stateful view and events accessed after said materializing of said stateful view at a particular time.

24. The computer-readable medium of claim 21 , wherein said view comprises a stateless view resulting from a stateless stream, said stateless view having an unbounded number of rows.

25. The computer-readable medium of claim 24 , wherein each view snapshot of said stateless view comprises a state of said stateless view including events existent at said materializing of said stateless view, including a last event processed during said materializing of said stateless view.

26. The computer-readable medium of claim 21 , further comprising instructions for causing said programmable processor of said computing device to process said sequence of view snapshots by maintaining a sequence of a plurality of preceding current view snapshots.

27. The computer-readable medium of claim 26 , further comprising instructions for causing said programmable processor of said computing device to apply a batch set of events to said processing of said sequence of view snapshots, wherein each event of said batch set has a corresponding view snapshot in said sequence.

Assignments (15)
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENT RIGHTS (REEL 062079, FRAME 0677) Recorded Mar 3, 2026
From: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
To: X CORP. (F/K/A TWITTER, INC.)
Reel/Frame 075015/0574 →
RELEASE OF SECURITY INTEREST Recorded Apr 30, 2025
From: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
To: X CORP. (F/K/A TWITTER, INC.)
Reel/Frame 071127/0240 →
RELEASE OF SECURITY INTEREST Recorded Mar 27, 2025
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: X CORP. (F/K/A TWITTER, INC.)
Reel/Frame 070670/0857 →
SECURITY INTEREST Recorded Oct 28, 2022
From: TWITTER, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 061804/0001 →
SECURITY INTEREST Recorded Oct 28, 2022
From: TWITTER, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 062079/0677 →
SECURITY INTEREST Recorded Oct 28, 2022
From: TWITTER, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 061804/0086 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 16, 2014
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: TWITTER, INC.
Reel/Frame 032075/0404 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 29, 2008
From: IBM INTERNATIONAL GROUP BV
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 021301/0428 →
CERTIFICATE OF AMALGAMATION Recorded Jul 24, 2008
From: COGNOS INCORPORATED
To: COGNOS ULC
Reel/Frame 021316/0329 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 24, 2008
From: COGNOS ULC
To: IBM INTERNATIONAL GROUP BV
Reel/Frame 021281/0850 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 18, 2007
From: CELEQUEST CORP.
To: COGNOS INCORPORATED
Reel/Frame 019314/0133 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 9, 2007
From: YAN, WEIPENG PAUL; NESAMONEY, DIAZ H; YOUNAS, FAYYAZ AHMAD; RADALJ, MAURICE MATE; JAZAYERI, NASROLLAH
To: CELEQUEST CORPORATION
Reel/Frame 018733/0915 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE NAME AND ADDRESS PREVIOUSLY RECORDED ON REEL 001487 FRAME 0448. ASSIGNOR(S) HEREBY CONFIRMS THE CELEQUEST CORPORATION 555 TWIN DOLPHIN DRIVE REDWOOD CITY, CA 94065. Recorded Jan 5, 2007
From: YAN, WEIPENG PAUL; NESAMONEY, DIAZ H; YOUNAS, FAYYAZ AHMAD; RADALJ, MAURICE MATE; JAZAYERI, NASRILLAH
To: CELEQUEST CORPORATION
Reel/Frame 018718/0498 →
CORRECTIVE COVER SHEET TO CORRECT ASSIGNOR'S NAME, PREVIOUSLY RECORDED AT REEL/FRAME 014877/0448 (ASSIGNMENT OF ASSIGNOR'S INTEREST) Recorded Sep 24, 2004
From: YAN, WEIPENG PAUL; NESAMONEY, DIAZ H.; YOUNAS, FAYYAZ AHMAD; RADALJ, MAURICE MATE; JAZAYERI, NASI
To: VIEWCELER CELEQUEST
Reel/Frame 015832/0522 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 31, 2003
From: YAN, WEIPENG PAUL; NESAMONEY, DIAZ H.; YOUNAS, FAYYAZ AHMAD; RADALJ, MATE; JAZAYERI, NASROLLAH
To: VIEWCELER CELEQUEST
Reel/Frame 014877/0448 →