New-age Transactional Systems - Not Your Grandpa's OLTP
John Hugg discusses high volume transaction processing applications with high and low frequency profiles, and how VoltDB can be used for that purpose.
The content has been bookmarked!
There was an error bookmarking this content! Please retry.
Posted by Werner Schuster on Feb 28, 2008
system("ruby", file_to_run)
to launch a new Ruby process. However: if, for instance, this code runs in JRuby, it can fail in many ways, e.g. if the only Ruby on the system is JRuby, which would have to be launched with "jruby". Other issues are the performance overhead: launching one or more JRuby's with the 'jruby" command would launch multiple JVMs. This is unnecessary since multiple JRuby instances can share the same JVM. However: to use that, JRuby specific code is needed to instantiate the new instance, which can vary across hosting frameworks such as BSF or the the one included in Java 6. vm = Rubinius::VM.spawn "blah", "-e", "puts 'hello\n'"it's possible to launch a new VM. This solution does make use of multiple cores because every VM runs on it's own native thread. This means, all the VMs live in the same OS address space and run in parallel. The VMs, however, can't share any references or - actually - anything; the only communication is via a Rubinius-specific message passing API.
A group led by Professor Ikuo Takeuchi at the Graduate School of Information Science and Technology, the University of Tokyo will collaborate with Sun's Tim Bray (Director of Web Technologies) and the members of the JRuby team to implement a multiple virtual machine (MVM) environment on both Ruby and JRuby. The MVM environment is expected to make Ruby programs run more efficiently than was previously possible. The results of the research are scheduled to be open sourced via the broader community of Ruby developers, which could inspire further innovations.In short, the expected outcome is a common API that will allow to launch and use multiple Ruby VMs. With a common API, every Ruby implementation can have backends that ensure to offer the most efficient implementation. Eg. on Rubinius and JRuby, the VMs can share the same address space; for a legacy older Ruby version, multiple processes could be launched.
Previously, running more than one application simultaneously on Ruby required multiple interpreters, leading to excessive memory consumption. The proposed MVM environment could generate multiple VM instances on a single interpreter, allowing applications to run more efficiently. The collaborative research aims to clarify such technical issues as the definition of common interfaces for using MVM, parallelization of VM instances and memory sharing, and then to implement technologies that can be used on Ruby and JRuby. While Ruby has already been widely in use in commercial and other environments, the research on MVM will further enhance the performance and utility of Ruby.
Improve Java Garbage Collection, Runtime Execution, and JVM visibility with Zing
Monitor your Production Java App - includes JMX! Low Overhead - Free download
18 agile and lean practices for effective software development governance
Why NoSQL? A primer on Managing the Transition from RDBMS to NoSQL
John Hugg discusses high volume transaction processing applications with high and low frequency profiles, and how VoltDB can be used for that purpose.
Kevlin Henney examines code samples to see what can be learned from them starting from the premise that one won’t write great code unless he knows how to read it.
Jason Ayers share the observations he made watching a team of developers collaborating in real time on the same code base, pushing XP, pair programming and continuous integration to their extremes.
Michael Snoyman presents Yesod, a web framework written in Haskell and containing a web server, templating, ORM, libraries (templating, gravatar, etc.).
Richard Kreuter and Kyle Banker on how to avoid classical RDBMS transactional systems by using compensation mechanisms, transactional messaging or transactional procedures.
Attila Szegedi talks about performance tuning Java and Scala programs at Twitter: how to approach GC problems, the importance of asynchronous I/O, when to use MySQL/Cassandra/Redis, and much more.
One category of risk that project teams need to ensure they address is business value failure – delivering a product that fails to provide value for the business investor.
InfoQ spoke to the authors of Software Systems Architecture on a couple of new topics, the System Context viewpoint and Agile, which have been added to the second edition.
No comments
Watch Thread Reply