Skip to content

Commit

Permalink
Update to connectors & data structures overview (#1221)
Browse files Browse the repository at this point in the history
  • Loading branch information
avtarraikmo authored Jul 31, 2024
1 parent 76fda77 commit 35b3915
Show file tree
Hide file tree
Showing 2 changed files with 83 additions and 49 deletions.
130 changes: 82 additions & 48 deletions docs/modules/data-structures/pages/distributed-data-structures.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -4,40 +4,52 @@ Hazelcast offers
distributed implementations of many common data structures. For each of the client
languages, Hazelcast mimics as closely as possible the natural interface of the
structure. For example in Java, the map follows `java.util.Map` semantics.
All of these structures are available in Java, .NET, C++, Node.js, Python, and Go.

== AP Data Structures
[cols="20%a,40%a,20%a,20%a"]
|===
|Data structure |Description|Partitioned/Non-partitioned|xref:architecture:architecture.adoc#apcp[AP/CP]
|Data structure|Description|Partitioned/Non-partitioned|xref:architecture:architecture.adoc#apcp[AP/CP]

|xref:map.adoc[Map]
|Key-value pairs that are partitioned across a cluster. Maps offer a wide range of features such as SQL queries, WAN replication, and Near Cache.
|<<partitioned,Partitioned>>
|<<ap-data,Availability and partition tolerance>>

|xref:jcache:icache.adoc[Cache]
|Hazelcast's specification-compliant JCache implementation.
|<<partitioned,Partitioned>>
|<<ap-data,Availability and partition tolerance>>

|xref:multimap.adoc[MultiMap]
|A specialized Hazelcast map. It is a distributed data
structure where you can store multiple values for a single key.
|<<partitioned,Partitioned>>
|<<ap-data,Availability and partition tolerance>>

|xref:replicated-map.adoc[Replicated Map]
|Key-value pairs that are replicated across each member in the cluster.
|<<partitioned,Non-partitioned>>
|<<ap-data,Availability and partition tolerance>>

|xref:topic.adoc[Topic]
|A distributed mechanism for publishing messages that are delivered
to multiple subscribers, also known as the publish/subscribe (pub/sub) messaging model.
|<<partitioned,Non-partitioned>>
|<<ap-data,Availability and partition tolerance>>

|xref:replicated-map.adoc[Replicated Map]
|Key-value pairs that are replicated across each member in the cluster.
|xref:reliable-topic.adoc[Reliable Topic]
|Similar to Hazelcast topic,
except reliable topics are backed up by the ringbuffer data structure.
|<<partitioned,Non-partitioned>>
|<<ap-data,Availability and partition tolerance>>

|xref:queue.adoc[Queue]
|A data structure for adding an item in one member/client and removing it from another one.
|A data structure for adding an item in one member/client and removing it from another one, with FIFO ordering.
|<<partitioned,Non-partitioned>>
|<<ap-data,Availability and partition tolerance>>

|xref:jcache:icache.adoc[Cache]
|Hazelcast's specification-compliant JCache implementation.
|<<partitioned,Partitioned>>
|<<ap-data,Availability and partition tolerance>>

|xref:ringbuffer.adoc[Ringbuffer]
|For building reliable eventing systems.
|xref:priority-queue.adoc[Priority Queue]
|A data structure for adding an item in one member/client and removing it from another one, with configurable ordering.
|<<partitioned,Non-partitioned>>
|<<ap-data,Availability and partition tolerance>>

Expand All @@ -53,78 +65,100 @@ duplicate elements and preserves their order.
|<<partitioned,Non-partitioned>>
|<<ap-data,Availability and partition tolerance>>

|xref:multimap.adoc[MultiMap]
|A specialized Hazelcast map. It is a distributed data
structure where you can store multiple values for a single key.
|<<partitioned,Partitioned>>
|xref:ringbuffer.adoc[Ringbuffer]
|For building reliable eventing systems.
|<<partitioned,Non-partitioned>>
|<<ap-data,Availability and partition tolerance>>

|xref:reliable-topic.adoc[Reliable Topic]
|Similar to Hazelcast topic,
except reliable topics are backed up by the ringbuffer data structure.
|xref:flake-id-generator.adoc[Flake ID Generator]
|A data structure for generating cluster-wide unique identifiers.
|<<partitioned,Non-partitioned>>
|<<ap-data,Availability and partition tolerance>>

|xref:cardinality-estimator-service.adoc[Cardinality Estimator]
|A data structure that implements
Flajolet's HyperLogLog algorithm.
|xref:pn-counter.adoc[PN Counter]
|A data structure where each Hazelcast instance
can increment and decrement the counter value and these updates are propagated to all replicas.
|<<partitioned,Non-partitioned>>
|<<ap-data,Availability and partition tolerance>>
|===

|xref:fencedlock.adoc[Fenced Lock]
|A lock that provides exclusive access to a shared resource; only
one thread at a time can acquire the lock and all access to the shared resource requires
that the lock be acquired first.
== CP Data Structures
[cols="20%a,40%a,20%a,20%a"]
|===
|Data structure|Description|Partitioned/Non-partitioned|xref:architecture:architecture.adoc#apcp[AP/CP]

|xref:cpmap.adoc[CPMap] +
[.enterprise]*Enterprise*
|A data structure for storing key-value pairs with support for atomic read, write and conditional
write operations within a distributed environment.
|<<partitioned,Non-partitioned>>
|<<cp-data,Consistency and partition tolerance>>

|xref:isemaphore.adoc[Semaphore]
|A data structure that creates permits that control the thread counts
when performing concurrent activities.
|xref:fencedlock.adoc[Fenced Lock] +
[.enterprise]*Enterprise*
|A lock that provides exclusive access to a shared resource; only
one thread at a time can acquire the lock and all access to the shared resource requires
that the lock be acquired first.
|<<partitioned,Non-partitioned>>
|<<cp-data,Consistency and partition tolerance>>

|xref:iatomiclong.adoc[Atomic Long]
|xref:iatomiclong.adoc[Atomic Long] +
[.enterprise]*Enterprise*
|A data structure for dealing with `long` values that can be updated
atomically in a distributed environment.
|<<partitioned,Non-partitioned>>
|<<cp-data,Consistency and partition tolerance>>

|xref:iatomicreference.adoc[Atomic Reference]
|xref:iatomicreference.adoc[Atomic Reference] +
[.enterprise]*Enterprise*
|A data structure for dealing with a reference
in a distributed environment.
|<<partitioned,Non-partitioned>>
|<<cp-data,Consistency and partition tolerance>>

|xref:icountdownlatch.adoc[Countdown Latch]
|xref:icountdownlatch.adoc[Countdown Latch] +
[.enterprise]*Enterprise*
|A distributed gatekeeper for
concurrent activities; it enables the threads to wait for other threads to complete
their operations.
|<<partitioned,Non-partitioned>>
|<<cp-data,Consistency and partition tolerance>>

|xref:cpmap.adoc[CPMap]
|A data structure for storing key-value pairs with support for atomic read, write and conditional
write operations within a distributed environment.
|xref:isemaphore.adoc[Semaphore] +
[.enterprise]*Enterprise*
|A data structure that creates permits that control the thread counts
when performing concurrent activities.
|<<partitioned,Non-partitioned>>
|<<cp-data,Consistency and partition tolerance>>
|===

|xref:flake-id-generator.adoc[Flake ID Generator]
|A data structure for generating cluster-wide unique identifiers.
|<<partitioned,Non-partitioned>>
== Streaming Data Structures
[cols="20%a,40%a,20%a,20%a"]
|===
|Data structure|Description|Partitioned/Non-partitioned|xref:architecture:architecture.adoc#apcp[AP/CP]

|xref:event-journal.adoc[Event Journal]
|A data structure that stores the history of mutation actions on map or cache data structures.
|<<partitioned,Partitioned>>
|<<ap-data,Availability and partition tolerance>>
|===

|xref:pn-counter.adoc[PN Counter]
|A data structure where each Hazelcast instance
can increment and decrement the counter value and these updates are propagated to all replicas.
== AI/ML Data Structures
[cols="20%a,40%a,20%a,20%a"]
|===
|Data structure|Description|Partitioned/Non-partitioned|xref:architecture:architecture.adoc#apcp[AP/CP]

|xref:cardinality-estimator-service.adoc[Cardinality Estimator]
|A data structure that implements
Flajolet's HyperLogLog algorithm.
|<<partitioned,Non-partitioned>>
|<<ap-data,Availability and partition tolerance>>

|xref:event-journal.adoc[Event Journal]
|A data structure that stores the history of mutation actions on map or cache data structures.
|xref:vector-collections.adoc[Vector Collections] +
[.enterprise]*Enterprise*
|A data structure for information about the vectors and associated metadata (user values).
|<<partitioned,Partitioned>>
|<<ap-data,Availability and partition tolerance>>

|===

[[partitioned]]
Expand Down Expand Up @@ -232,11 +266,11 @@ If you want to use an object you loaded in other places, you can safely reload i
reference without creating a new Hazelcast instance.

[[ap-data]]
== AP Data Structures
== Availability and Partition Tolerance

AP data structures prefer availability over consistency.

When a partition occurs, all members remain available but some might return an older version of data than others. When the partition is resolved, the members usually resynchronize to repair any inconsistencies:
When a partition occurs, all members remain available but some might return an older version of data than others. When the partition is resolved, the members resynchronize to repair any inconsistencies:

[[common-features-of-all-hazelcast-data-structures]]

Expand All @@ -262,9 +296,9 @@ NOTE: The `getDistributedObjects()` method returns internal API objects
with prefixes, including `\__sql` and `__jet`, such as `__sql.catalog`. You can ignore these objects.

[[cp-data]]
== CP Data Structures
== Consistency and Partition Tolerance

A CP data structure delivers consistency and partition tolerance at the expense of availability. When a partition occurs between any two CP members, the non-consistent CP member must be shut down until the partition is resolved.
A CP data structure delivers consistency and partition tolerance at the expense of availability. When a partition occurs between any two CP members, the non-consistent CP member must halt until the partition is resolved.

To learn about CP members and how Hazelcast delivers consistency and partition tolerance, see xref:cp-subsystem:cp-subsystem.adoc[CP Subsystem].

Expand Down
2 changes: 1 addition & 1 deletion docs/modules/integrate/pages/socket-connector.adoc
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
= Socket Connector
= Socket Connectors

The socket sources and sinks open a TCP socket to the supplied address
and either read from or write to the socket. The sockets are text-based
Expand Down

0 comments on commit 35b3915

Please sign in to comment.