How FriendFeed uses MySQL to store schema-less data – SF MySQL Meetup April 6th, 2009

When: 6:30pm Monday April 6th, 2009
Where: CBS Interactive – 235 2nd Street San Francisco, CA
RSVP: How FriendFeed uses MySQL to store schema-less data

Join the SF MySQL Meetup for our April meetup where Bret Taylor from FriendFeed talks about how they store their data in a "schema-less" system on top of MySQL. FriendFeed stores over 250 million entries and a bunch of other data, from comments and "likes" to friend lists.

As the database has grown, they have tried to iteratively deal with the scaling issues that come with rapid growth. They did the typical things, like using read slaves and memcache to increase read throughput and sharding our database to improve write throughput. However, as FriendFeed grew, scaling their existing features to accommodate more traffic turned out to be much less of an issue than adding new features.

In particular, making schema changes or adding indexes to a database with more than 10 – 20 million rows completely locks the database for hours at a time. After some deliberation, FriendFeed decided to implement a "schema-less" storage system on top of MySQL rather than use a completely new storage system. This talk attempts to describe the high-level details of the system.

More about the event after the break

Posted under Events, Internet, mysql, Technology, Tips & Tricks, Web Development

This post was written by Michael Tougeron on March 28, 2009

Tags: , , ,

Introducing the Tungsten Replicator for MySQL – SF MySQL Meetup Feb 2nd, 2009

Almost everyone I’ve ever talked to about MySQL has some complaint or another about its replication.  So when Robert Hodges, CTO of Continuent, offered to speak about the  Tungsten Replicator open source project at the February 2nd SF MySQL meetup I was all for it!  Now I know what you are thinking… “Not another sales pitch!”  But have no fear, Robert is one hell of a smart guy and is much more of a techie than a CTO (in a good way).  I remember one sales call where Robert came to CNET to talk about Continuent’s clustering software and we ended up spending more time talking databases in general than about the product.  🙂

So if you’re in the SF area on Monday Feb 2nd, 2009, stop by the CBSi building and listen in.

When: 6:30pm Monday Feb 2nd, 2009
Where: CBSi – 235 2nd Street San Francisco, CA

Description from the SF MySQL Meetup calendar:

Tungsten Replicator is a new open source project for database replication. It offers MySQL to Oracle replication, robust handling of master failures, extremely flexible topologies, and an extensible architecture that allows you to add your own replication features if you don’t find them there already. I’ll describe why MySQL needs more replication, show the product architecture, describe some of the problems it solves, and demonstrate the replicator in action. Finally, we’ll play “stump the chump” where you can present your replication problem and I’ll describe how our replicator handles it. Whether you have a tricky replication problem or are just curious about the subject, please join us. This is a very technical presentation that should be of interest to all true MySQL fans.

More information on Tungsten Replicator:

Posted under Events, mysql, Technology

This post was written by Michael Tougeron on January 24, 2009

Tags: , , , ,

Scaling MySQL powered Web Sites by Sharding and Replication – SF MySQL Meetup Nov 2008

Peter Zaitsev will be giving his excellent presentation “Scaling MySQL powered Web Sites by Sharding and Replication” to the upcoming SF MySQL 6:00pm on November 3rd @ the CBS Interactive (formerly CNET Networks) building in SOMA San Francisco (235 2nd St).

RSVP here:

Description from the 2008 Velocity conference:
When your application grows beyond capacity of a single MySQL server there are few ways to scale, with most typical being Replication and Sharding.

In this presentation you will learn how, depending on your application performance scalability and high availability goals, you can choose what proper scaling strategy will be good for you.

We also will speak about scalability limitations of replication of Replication and Sharding, implementation complexities, and aspects of operation.

Peter Zaitsev’s bio:
MySQL Performance Blog

Peter helped many companies ranging from one man startups to Fortune 500 companies with their Performance and Scaling problems on various stages starting from architecture design and down to queries and schema optimization.

Over cause of the years Peter has spoken on many International conferences focused on MySQL, Open Source, Databases or High Performance Web applications.

Before co-founding Percona Peter worked for MySQL AB as head of High Performance Group being involved in Support, Consulting, Development and working with vendors helping to optimize their software or hardware to perform well with MySQL.

Peter also was involved in number of Web Startups in the roles ranging from CTO to Consultant and has a lot of experience in MySQL and Web Applications Operations, Deployment, Quality Assurance and Development.
Please join us!

Map to CNET Networks, Inc.
When you arrive, please look for the PHP/MySQL Meetup sign pointing you to the conference room.

Look forward to seeing you there!

Posted under Events, Internet, mysql, Technology, Tips & Tricks, Web Development

This post was written by Michael Tougeron on October 23, 2008

Tags: , , , ,

GameSpot and TV are hiring

A shameless plug for CNET… We’re hiring a few Senior Software Engineers for, and Yes, that’s a Sr SE positions for each of those sites. We’re raising the bar and looking to bring on some powerful coders to expand the functionality of our sites. Here’s a brief list of the job skill requirements:

Must Have:

  • Expert PHP skills, bonus for RoR
  • 5-7 years of real world experience engineering web solutions for LAMP stacks
  • Strong relational DB knowledge (table optimization, query optimization)
  • Ability to prioritize and lead multiple simultaneous projects effectively
  • Excellent understanding of OO software engineering concepts
  • Ability to arhitect solid, scalable, extensible solutions for SE needs
  • Excited by working on high-level design and architecture
  • Comfortable mentoring junior engineers
  • Expereince with formal release processes
  • Strong verbal, written, analytical and communication skills

Bonus for:

  • Admin experience with MySQL, Apache, SVN
  • Background developing in a more structured language (C, C++, Java, etc)
  • At least 3 years experience in high-traffic/high-availability web sites
  • Strong UI experience with javaScript and AJAX using mootools or other JS Frameworks
  • Experience with following technologies: Memcached, Smarty, SOLR, Lucene, Zend Framework

If you think you have what it takes, head over to our Jobs site and apply:

If you want to discuss the job in more detail first, please don’t hesitate to send me an
at michael[

Posted under memcached, mysql, PHP, Web Development

This post was written by Michael Tougeron on May 29, 2008

Tags: , , , ,

MySQL Conf 2008 – MySQL Proxy (Day 4)

MySQL Proxy is one of the new products that MySQL released this year that has some real promise. In the MySQL Proxy, the Friendly Man in the Middle session Jan Kneschke went over the existing and planned features of the proxy.

MySQL Proxy has a c-based event driven core that has command line support, event handling and a Lua-based scripting layer. The proxy is loading into MySQL via the plugin interface. With the community edition, you are responsible for writing your own scripts. But with MySQL Enterprise, it will come with several pre-built scripts that add some enhanced functionality.

The most basic use of MySQL Proxy is to rewrite or alter your queries. If you have a costly query that is killing your db, but you’re not sure where it is coming from, you can write a Lua script to either reject the query or to alter it and make it more manageable. It stops the dba from having to wait for a developer to update code and/or deploy the fix.

Another trick you can do with MySQL Proxy is to create new SQL commands. While this is probably not going to be a great idea, you can see a few interesting examples at It is a good way to expand on functionality at the lowest level. Or to lose/forget where you put it when you switch to another db. 😉

Read More…

Posted under Events, mysql

This post was written by Michael Tougeron on April 21, 2008

Tags: , , ,