A parallel data stream processing engine executing continuous queries on a plurality of processing nodes wherein a continuous query comprises a plurality of interconnected operators, each operator of the query being selectable between stateless operator (M, F) and stateful operator (A, J), which comprises: a) means for splitting a continuous query into at least one sub-query, wherein each of said at least one sub-query consists of one stateful operator (A, J) followed by at least a stateless operator (M, F), except an initial sub-query which only contains stateless operators (M, F), b) means for associating each at least one sub-query to at least two nodes; wherein the nodes are configured to execute the sub-query; wherein an executed sub-query generates at least one tuple; c) means for labeling the generated tuples with an ordering label comprising a timestamp indicating a relative ordering among tuples and used for ordering tuples to a destination sub-query at the input merger characterized in that it further comprises d) means for sending and receiving tuples across interconnected sub-queries, a source sub-query and a destination sub-query comprising interconnected operators between them; wherein the means for sending and receiving tuples comprise: - for each node executing a source sub-query, a load balancer configured to send a plurality of generated tuples to the nodes executing a destination sub-query; - for each node executing a destination sub-query, an input merger configured to receive a plurality of generated tuples sent by each load balancer of the source sub-query; wherein the load balancer is configured to determine the node to which a tuple is sent based on at least a field comprised in the tuple, the field called a key field; and wherein for each subquery comprising a stateless operator (M, F) or a stateful operator (A, J): - an input merger at the beginning of each operator (A, M) and a load balancer at the end of each operator (A, M) is introduced, where the subquery is executed, and wherein each load balancer is connected to each input merger respectively to distribute the output tuples from the source subquery to the destination subquery, wherein each load balancer is configured to: - send tuples with a same key field to a same node executing the destination sub-query, when the operator is a stateful operator (A, J), or - send tuples to the destination sub-query in a round robin fashion, when the operator is a stateless operator (M, F). a) means for splitting a continuous query into at least one sub-query, wherein each of said at least one sub-query consists of one stateful operator (A, J) followed by at least a stateless operator (M, F), except an initial sub-query which only contains stateless operators (M, F), b) means for associating each at least one sub-query to at least two nodes; wherein the nodes are configured to execute the sub-query; wherein an executed sub-query generates at least one tuple; c) means for labeling the generated tuples with an ordering label comprising a timestamp indicating a relative ordering among tuples and used for ordering tuples to a destination sub-query at the input merger d) means for sending and receiving tuples across interconnected sub-queries, a source sub-query and a destination sub-query comprising interconnected operators between them; wherein the means for sending and receiving tuples comprise: - for each node executing a source sub-query, a load balancer configured to send a plurality of generated tuples to the nodes executing a destination sub-query; - for each node executing a destination sub-query, an input merger configured to receive a plurality of generated tuples sent by each load balancer of the source sub-query; - for each node executing a source sub-query, a load balancer configured to send a plurality of generated tuples to the nodes executing a destination sub-query; - for each node executing a destination sub-query, an input merger configured to receive a plurality of generated tuples sent by each load balancer of the source sub-query; - an input merger at the beginning of each operator (A, M) and a load balancer at the end of each operator (A, M) is introduced, where the subquery is executed, and wherein each load balancer is connected to each input merger respectively to distribute the output tuples from the source subquery to the destination subquery, wherein each load balancer is configured to: - send tuples with a same key field to a same node executing the destination sub-query, when the operator is a stateful operator (A, J), or - send tuples to the destination sub-query in a round robin fashion, when the operator is a stateless operator (M, F). - send tuples with a same key field to a same node executing the destination sub-query, when the operator is a stateful operator (A, J), or - send tuples to the destination sub-query in a round robin fashion, when the operator is a stateless operator (M, F).