In this blog post, we’ll talk about how Jobma improved search for their users by switching from MySQL fulltext search to Sphinx. Enjoy! What is Jobma? Jobma is a new job portal based solely on Video Resumes, which permits job seekers to quickly and directly reach potential employers. The hiring process is easier with the help [...]
I've been letting the blog rest recently, and not so recently as
well. The problem is not a lack of subjects, but a lack of
time to do them any justice. However it is quite sad to see
that my last entry was in September 2012, so it is time to post
Of late I have been pondering what I have to say about :
- Distributed MVCC and write-scaling
- Different approaches to eventual consistency with replicated RDBMS
- Various MySQL Cluster related topics
- Various general rambling and unstructured topics
However, these will take some time to percolate and
In the meantime here are some things I have found interesting recently :
You Some Erlang for Great Good
I actually rediscovered this online book after watching some …
Lets start by considering a scenario where records are being inserted in a single auto-increment table via different nodes of a multi-master cluster. One issue that might arise is ‘collision’ of generated auto-increment values on different nodes, which is precisely the subject of this article.
As the cluster is multi-master, it allows writes on all master nodes. As a result of which a table might get same auto-incremented values on different nodes on INSERTs. This issue is discovered only after the writeset is replicated and that’s a problem!
Galera cluster suffers with the similar problem.
Lets try to emulate this on a 2-node Galera cluster :
1) On node #1: MariaDB [test]> CREATE TABLE t1(c1 INT AUTO_INCREMENT PRIMARY KEY, c2 INT)ENGINE=InnoDB; Query OK, 0 rows affected (0.07 sec) MariaDB [test]> START TRANSACTION; Query OK, 0 rows affected (0.00 sec) MariaDB [test]> INSERT INTO t1(c2) VALUES (1); …[Read more]
In this blog post (which was inspired by Adrian Nuta’s recent talk about Sphinx at FOSDEM), we go through some more of the differences between MySQL fulltext search and Sphinx. People frequently ask us questions along these lines, so we decided another blog post on the subject would be worthwhile. Check it out! Introduction This [...]
I’ve continued building on my MariaDB GIS and node.js example application that I wrote about two weeks back, https://blog.mariadb.org/node-js-mariadb-and-gis/. The application shows how to load GPX information into MariaDB, using some MariaDB GIS functionality, and making use of the node.js platform together with MariaDB’s non-blocking client.
With the GPX data converted into GIS points in the MariaDB database, I wanted to further expand a little on both the GIS aspect and also look at how some additional data could be shown in the application by using jQuery’s Ajax calls to update a piece of the web based application UI.
To start with, an interesting thing to do when you have a bunch of GIS points in a …[Read more]
We rejoin our story with a lawsuit. While MySQL suing Progress NuSphere is not perhaps the first GPL lawsuit that comes to mind, it was the first time that the GPL was tested in court. Basically, the GEMINI storage engine was a proprietary storage engine bundled with a copy of MySQL. Guess what? The GPL was found to be valid and GEMINI was eventually GPLed, and it didn’t really go anywhere after that. Why? Probably some business reasons and also, InnoDB was actually rather good and there wasn’t a lawsuit to enforce the GPL there, making business relationships remarkably easier.
In 2003 there was a second round of VC funding. The development team increased …[Read more]
Way back in May in the year 2000, a feature was added to MySQL that would keep many people employed for many years – replication. In 3.23.15 you could replicate from one MySQL instance to another. This is commonly cited as the results of two weeks of work by one developer. The idea is simple: create a log of all the SQL queries that modify the database and then replay them on a slave. Remember, this is before there was concurrency and everything was ISAM or MyISAM, so this worked (for certain definitions of worked).
Configuring the character set for MySQL is confusing. It is so confusing that there are roughly 25 different places to configure a character set. Don’t believe me? Add them up. The real number may be closer to 30. I realize a lot of this is due to the age of MySQL and the extent of it’s character set support. MySQL does support character set configuration in many different places which is usually a good thing.
I often complain about defaults that make no sense like lock_wait_timeout=1 year. In this case there is a default that makes absolutely no sense to me. The manual says that select into outfile is the complement of load data infile. It isn’t completely true. They differ in one key aspect, the default character set!. By default select into outfile now does the right thing by using binary character set and dumping the raw bytes to the file. Load data infile defaults to the value of the character_set_database variable which defaults …[Read more]
The availability of the node.js binding for MariaDB’s non-blocking client library together with the GIS capabilities of MariaDB inspired me to make an example of using node.js and MariaDB to import so-called GPX tracks to a MariaDB database and then show them on a map. GPX tracks are what are stored by many GPS devices including running watches and smartphones.
My project makes use of MariaDB’s non-blocking client library together with the node.js platform and on top of that uses the GIS functionality found in MariaDB 5.5 and 10.0.
To start with let’s go through the software and components I’m using: