Until now PBXT has been ACId (with a lower-case d). This is soon
to change as I have had some weeks to work on a fully durable
version of the transactional engine (http://www.primebase.com/xt).
My first concern in making PBXT fully durable was to what extent
I would have to abandon the original "write-once" design. While
there are a number of ways to implement durability, the only
method used by databases (as far as I know) is the write-ahead
log.
The obvious advantage of this method is that all changes can be
flushed at once. However, this requires that all data be written
twice: once to the log and after that, to the database
itself.
My solution to this problem is a compromise, but I think it is a
good one. In a nutshell: short records are written twice, and
long records are written once. When it comes to durability, this
compromise, I …
So recently I found myself making a critical assumption that was
incorrect and thought I would share in hopes that other people
don't make the same mistake I did. I had helped a customer (who
shall remain nameless) setup multi-master replication as a means
for fail-over. Well, their network configuration changed such
that one of the servers could not connect to the other. It was an
easy enough fix. All I needed to do was to stop the slave, run
CHANGE MASTER TO MASTER_HOST='192.168.1.123';,
and start it back up right?
Wrong! Though the damage had already been done, I consulted the
MySQL documentation which mentions that if you
change the host of the master in this way, it assumes that the
binary log file and position are no longer valid. Instead of
throwing an error, it sets the master log file to '' and the
position to 4. I'm …
So recently I found myself making a critical assumption that was
incorrect and thought I would share in hopes that other people
don't make the same mistake I did. I had helped a customer (who
shall remain nameless) setup multi-master replication as a means
for fail-over. Well, their network configuration changed such
that one of the servers could not connect to the other. It was an
easy enough fix. All I needed to do was to stop the slave, run
CHANGE MASTER TO MASTER_HOST='192.168.1.123';,
and start it back up right?
Wrong! Though the damage had already been done, I consulted the
MySQL documentation which mentions that if you
change the host of the master in this way, it assumes that the
binary log file and position are no longer valid. Instead of
throwing an error, it sets the master log file to '' and the
position to 4. I'm …
As we head into the new year and to the next phase of development
of the opentaps open source ERP and CRM system, there are several
enhancements to the framework behind opentaps which we will be
making. As you can see from this list, some of these enhancements
will help make opentaps easier to use and to deploy, while others
should open up new areas of possibility for our users:
New Forms and Document Management Tools
We plan on replacing xsl:fo with Jasper reports and iReport
during the next year so that our users could easily customize all
the forms and documents that their company needs, including
orders, invoices, and receipts. We also hope to introduce a way
for users to manage all these documents so that they no longer
have to edit XML files.
Integrating Business Intelligence
We hope to integrate the new business intelligence tools in
opentaps more deeply into the applications, rather …
I stumbled across this article today, which goes a long way toward explaining Oracle's affection for Linux. I fault Oracle for the way it went about embracing Linux, but I don't fault its financial acumen:
Last quarter, [Oracle] pointed out that its database market share actually tends to ...
Well, it’s that time of the year once more. The time when someone
starts planning for the Users Conference, having received an
acceptance notice of a session proposal. This year it came
earlier than usual, because the CfP was started one month
earlier, and thus we have a list of tutorials ready before
Christmas.
So, let me do some advertising.
I am going to co-present a full day tutorial with Jan Kneschke.
MySQL Proxy, the complete tutorial which will
cover all about MySQL Proxy, and it will guide users to the
creation of Lua scripts. When I proposed it, Jay asked me and Jan
if we have enough material to cover 6 hours. After having been in
three presentations on this subject, I’d rather ask myself if I
can manage to cover all we know (and all that Jan’s volcanic
production is …
The “sla” in mysqlsla stands for “statement log analyzer”. This does a much better job than mysqldumpslow of analyzing your slow query log. In fact, you can sort by many different parameters — by sheer number of times the query shows up in the slow query log, by the total or average query [...]
Ever since I submitted the "External Language Stored Procedures" project which Eric and myself have been working on to be listed on FreshMeat, it has gained a small number of interested users and we have just started to get some feedback. Yay! Always nice to know when people are using your code. Okay, so one of the emails contained a feature request: Support for PHP stored procedures. I think I
The second release, version 0.2 of Memcached functions for MySQL
has been released. You can download them at:
http://download.tangent.org/memcached_functions_mysql-0.2.tar.gz
Developed by Brian Aker and Patrick Galbraith, These are a number
of MySQL user defined functions based on libmemcached (http://tangent.org/552/libmemcached.html)
mirroring libmemcached client functions.
This latest release introduces two new functions,
memc_servers_behavior_set and memc_list_behaviors. Additionally,
this version also has some enhancements and better error
handling.
Previously Included are:
memc_servers_set() - sets list of memcached servers to use
memc_set(hash, value) - sets a value keyed by hash in …
My latest quiz was quite popular, and some interesting
ideas were submitted.
There was an interesting development. A colleague called and
asked me for advice on how to insert 4 billion rows in a table
with a simple structure.
create table t1 (
id tinyint not null
);
Very simple. No primary key, no indexes. It is needed to perform
some specific tests.
Actually, not 4 billion, but 2^32 records are needed, i.e.
4,294,967,296.
The classical method used in these cases is doubling the table
contents:
insert into t1 values (1),(1),(1),(1),(1),(1),(1),(1);
insert into t1 select * from t1;
insert into t1 select * from t1; # and so on
My solution was similar to the one from my quiz.
CREATE VIEW `v4` …[Read more]