Home / Companies / DataStax / Blog / September 2015

September 2015 Summaries

2 posts from DataStax

Filter
Month: Year:
Post Summaries Back to Blog
A robust and linearly scalable inventory management system can be developed using distributed systems by avoiding shared mutable state and partitioning inventory by SKU, utilizing partitionable queues. This approach ensures that SKU access is isolated, enhancing visibility across all stores and distribution channels while also enabling lightweight transactions in Cassandra at the partition level. The system employs a Cassandra schema with two tables, inventory.counts and inventory.log, to track actual counts and historical changes, respectively, with features like default TTL and DateTieredCompactionStrategy for efficient data management. Concurrency and synchronization are managed without locks, instead using a chord pattern where single-threaded workers assigned via consistent hashing handle modifications. Two classes of workers—HTTP workers for requests and inventory service workers for database operations—communicate asynchronously through partitioned queues such as Kafka, allowing independent and linear scalability. The queue-based design ensures that workers remain stateless, which allows for easy recovery from crashes and, with transactional queues, guarantees that requests are serviced at least once, enhancing the system's reliability and efficiency.
Sep 30, 2015 1,052 words in the original blog post.
A computer can be defined as a machine that evolves its state (data) according to a set of rules (program). Programmable computers have an instruction set whereby parameterized instructions can be arbitrarily composed to yield different algorithms. General-purpose computers are called universal, and they can simulate any "one off" computer or programmable computer with a sufficiently complex instruction set. Virtual machines emerged to enable the same program to run on different operating/hardware platforms. Popular virtual machines, such as the Java Virtual Machine, are universal in that they can be used to simulate other universal machines, including themselves. Gremlin is both a virtual machine and a programming language (or query language). The Gremlin traversal machine maintains a step library whose steps can be arbitrarily composed to enact any computable graph traversal algorithm. In other words, the Gremlin traversal machine is a programmable, universal machine. Moreover, the Gremlin traversal machine can be supported by any graph system vendor such that Gremlin expresses the same "write once, run anywhere"-mantra. The Gremlin traversal language (aka Gremlin-Java8) is a human writable language that when compiled, a traversal is generated that can be executed by the Gremlin traversal machine. The separation of the virtual machine/programming language distinction allows other JVM languages to exist and enables other graph traversal languages to execute by a Gremlin traversal machine such as SPARQL, GraphQL, Cypher, and the like. The Gremlin traversal machine is universal and maintains an extensive step library of the common query motifs found in most every graph language. The Gremlin traversal machine can not only execute a traversal compiled from any graph traversal language but also execute the same traversal on a single machine or across a multi-machine compute cluster. The distributed traversal is complete when all existing traversers have halted (i.e., no more steps to execute). The result of the query is the aggregate of the locations of all halted traversers. Gremlin is designed and developed by Apache TinkerPop, an open-source project that enables graph developers to use any query language with any graph system. Gremlin can be implemented in the native language of the underlying graph system wishing to capitalize on the benefits of the Gremlin traversal machine and language.
Sep 14, 2015 2,415 words in the original blog post.