Archive for the ‘MySQL’ Category

James’ NoSQL Feature Matrix Link

Tuesday, December 22nd, 2009

A wikipedia editor (SamJohnston) has reverted the useful NoSQL Feature Comparison Matrix that I added at ApacheCon Oakland.

Here is the last NoSQL article version that has the detailed feature matrix.

Thanks to several contributors for improving it before it was suppressed.

I would be in favor of moving it to a wiki outside of wikipedia for long-term maintenance.

One nice improvement would be sort-by-column.

Jimmy Wales’ goal for wikipedia “to be the sum of all human knowledge” is not possible with a rigid NPOV and without primary sources. Instead, wikipedia will remain “the entertaining cartoon of human knowledge.”

I’ll have to think twice before contributing my time, content or money to wikipedia in the future.

rackspacecloud.com: NoSQL Ecosystem

ApacheCon 2009 Oakland

Friday, November 6th, 2009

I went to ApacheCon 2009 in Oakland. Why Oakland? The ASF was founded here 10 years ago.

Executive Summary

Most of the attendees that I talked to were primarily interested in search technologies, or were Apache project comitters. The search users were already using either Lucene and Solr, or were using commercial software and evaluating Lucene and Solr.

Also a lot of interest in Hadoop, Zookeeper and NoSQL projects.

I added a wikipedia NoSQL project features table after the NoSQL BoF.

The conference was very well-organized, with tutorials, BoFs, a BarCamp, and sessions. Meetup.com was used to generate the highest BoF turnout that I’ve ever seen – close to 100 at the Lucene and Hadoop BoFs. (O’Reilly Conferences can learn from that.)

The Oakland Convention Center was a good venue for this conference, though the attached Oakland Marriott hotel is $$$$ and fond of surcharges, like $33/day for parking, $5 draught beer and $3.75 for a bottle of water in-room.

The keynotes and one track per day were recorded and are available for $99 at Linux Pro Magazine Streaming.

StoneCircle Productions was the conference organizer.

Conference Notes

Monday

Although I live in San Jose, Oakland is far enough away that I’ve never been there. Oakland has a compact downtown full of historical-era buildings, and Alameda is also nice, but things get less pretty at night.

I went to the Lucene tutorial on Monday.

Lunch Conversations

- awesome views of Bay Area past Golden Gate bridge from 21st floor
- FAST pretty good indexing and search solution, but bought by Microsoft recently (going to continue linux support or not?)
- FAST has FQL (users pronounce it fecal) query language :)
- 150 FAST servers replaced by 40 lucene servers by 1 company
- FAST4 to FAST5 upgrade tough, similar to port to say lucene, forced upgrades for support
- linguistics is 60% of value of Fast according to Monster, 13 languages supported
- “bad stems” can be a nightmare
- SOLR gives you 90% of what you would need to program in java, built on top of Lucene
- Open Source search is not really about price, but about control and flexibility

Monday Afternoon – Lucene Tutorial

- user-assigned document id not mandatory, but great idea for many reasons, including after an index-rebuild
- lucene-assigned id only valid for that snapshot (life of score doc)
- parameter to keep or delete old index directory
- StringBuilder is more efficient than strcat
- populating title column is a good idea
- results boosting handy for ecommerce, specials, etc.
- LUKE – handy tool for index statistics, etc.
- Searcher class, snapshot in time, won’t see new merges
- contrib/ has more analyzers
- snowball stemmers
- use 1 tokenizer and 0 or more token filters
- precision-recall curve ??
- n-grams and shingles (”the president”, “United states”)
- pre-2.9 lucene, numbers and dates really strings
- 2.9 NumericField builds tri structure, help optimize range queries
- SOLR analysis tool apache-solr
- relevance feedback with MoreLikeThis

Monday BoFs

Couchdb

- “ground computing”
- “offline by default”
- now an ubuntu service
- mozilla raindrop to combine chat client msgs
- lockless
- append-only btree
- rsyncable since append-only, also replication
- checksums everywhere
- windows not first class yet, mozilla improving it

@mozilla

- browsercouch
- don’t like sql
- brasstacks test tool storage
- store now, index later
- replicate to handle large indexing load
- testbot ci

Marklogic

- commercial
- xml-centric
- great for articles, books
- transactional
- search-centric
- structure-aware
- schema-free
- xquery-driven
- extremely fast, largest 200 TB xml, 166 on hosts
- clustered
- database server
- 180 clients, 150 employees
- markmail.org demo contains 42 million email messages, very impressive performance with 5 views in almost realtime. Search is distributed across 160 nodes.

JCR in 15 minutes

- Bertrand Del
- JCR is JackRabbit,
a fully conforming implementation of the Content Repository for Java Technology API (JCR). A content repository is a hierarchical content store with support for structured and unstructured content, full text search, versioning, transactions, observation, and more.
- the ultimate content store
- content repo, union of database and filesystem, best of both worlds
- full-text search combined with structured search

Solr Flair

- information forage
- “resume-driven design”

Lucene Numerics

- available in 1.4
- tune by modifying precisionStep

HBASE

One bewildered attendee wished for a NoSQL product matrix, so I added that to the wikipedia NoSQL page.

Wednesday Sessions

Becoming a Pig Developer, Alan Gates

- Apache Pig is a sub-project of Apache Hadoop.
- this talk was really how to use PIG as an end-user, not to become a Pig project developer

Apache Hadoop in the Cloud, Tom White

- general comments on using EC2 with Hadoop mostly

Practical HBase, Michael Stack

- Apache HBase is the Apache Hadoop database, similar to BigTable.
- HBASE usage

mod_jk / mod_proxy and others, Jean-Frederic Clere and 2 others

- mod_jk, mod_proxy, mod_serf and mod_cluster original topics
- mostly focused on mod_jk, mod_proxy and isapi_redirect
- good talk by 3 long-term project contributors
- jk is kind of Java-centric, with support for Apache JServ Protocol (AJP) only available in Java back-end servers for now, like Tomcat
- isapi_redirect is primary way to do redirects on Windows IIS
- survey of audience showed several mod_proxy users, maybe one intentional mod_jk user

Thursday Sessions

“Apache Lucene and Apache Solr Performance Tuning with Mark Miller” was packed, so moving along to a different room …

Scalable Internet Architectures, Theo Schlossnagle

- amazing and thought-provoking talk, also one of the most popular
- think about performance from network packet level to application level
- carp, vrrp, whackamole
- alterdns, neustar
- dynact
- anycast (shared IP), geoip (but need actually accurate database)
- activemq, rabbitmq instead of Spread
- “memcached is the worst thing that ever happened to our industry – it solves a problem, just not the original problem”

- many apps today are so poorly designed that network issues never become scalability concerns – ie. RoR applications :)
- max out at 500 requests per second across 40 boxes – RoR
- firebug and yslow have been fantastic at making front-end engineers aware of networking performance
- 10 gb nics suck
- instead of one big 20 Gbps loadbalancer, use anycast from core router to 5x 4 gpbs cheaper load balancers
- spiky load or DDoS – announce a /32 to separate load balancer, use symmetric return path

- jms, aqmp, spread

durable message queues

- activemq (java)
- openamq (c) – hard to use
- rabbitmq (erlang) – nice except in durable mode because erlang disk io blows

- most common protocol Stomp is awful and slow (hard to read 100k messages per second) and not binary, but lots of clients exist.

- activemq and stomp is a good start.
- rabbitmq and native connectors are better, but no perl client.

- PCI compliance requires a stateful firewall. Hard to do 1.5 million packets per second traffic for most medium-sized data centers, need to use a CDN to distribute static requests and distribute the packets somewhere else
- leaving trailing / off causes 302, doubles traffic
- Slides
- read/write ratio is 1 … likely IM or email?
- went over some networking details with Paul L. afterwards

Recent Developments in SSL and Browsers, Rick Andrews, Thawte

- 1.6 billion OCSP requests per day, need good infrastructure to support that
- intermediate CA allows root CA to be offline – chained hierarchy – SSLCertificateChainFile,
needs intermediate certificates before cross-certificates, some clients need in proper order
- EV hierarchy more complex. wanted new EV root, but older browsers don’t know about it.
- browser ubiquity problem with any new feature, hash or crypto algorithm
- logotypes – trademark and copyright issues with using other companies’ logos in a product
- Verisign does not have apache httpd committers, but should
- 1 attendee wanted to sign JavaScript files, but what does it mean if most sites link to 10 advertising and tracking scripts? what do you tell the user if 1 JS is not signed?

Subversion Meetup

Organizers didn’t show up, so spent 10 minutes talking to a handful of end-users about subversion gripes and moved along to …

Hadoop Meetup

Zookeeper

- zk is persistent to disk
- can run on one node, but 3 is minimum non-toy
- zk is popular in academia now for some reason
- avoid split-brain partitioning between 2 data centers – bad
- very recent merge to fix -368, not ready for production yet
- people using it for a message queue, perhaps more reliable than many other Open Source ones
- need 1 zk node for testing, but 3 zk nodes for non-trivial implementation

Scribe

- github
- 4x to 5x compression with lzo. similar disk bw improvement

A local owner of a gelato store handed out 6 free samples from a portable gelato freezer. :)

Friday Sessions

Building Intelligent Search Applications with the Lucene Ecosystem, Ted Dunnin

- some matrix math
- using his matrix math optimization, a perl program on 1 server was faster than Mahout running on a $250k cluster :)
- tdunning.blogspot.com

- the original LLR in NLP paper
“Accurate Methods for the Statistics of Surprise and Coincidence” check on citeseer
- Mahout project
tdunning [at] apache.org

Realtime Search, Jason Rutherglen

- many technical issues prevent Lucene from being able to do realtime search
- lots of patches done, lots to do
- audience member thanked author for great work so far

Closing Plenary: Brian Behlendorf on Open Source and Charity

Talked to Alex Karasulu a little after the final presentation. He’s a committer on the Apache Directory project. He suggested adding dbm to the NoSQL product matrix. Wants a MacBook Air with 8 GB RAM to run his Java apps. :)

Conference Schedule Grid

Zend PHP Conference 2009

Thursday, October 22nd, 2009

The Zend PHP Conference was downtown at the San Jose Convention Center, so I went to that this week.

It was a well-organized, fun-sized conference – just big enough to use half the convention center, which made it easy to get around without a lot of walking between session rooms.

There was also an official, parallel unconference in 2 rooms priced at $199 for non-conference attendees.

The talks were high-quality, the food was great, and wifi worked everywhere. What more could one ask for? Well, a few more power strips next time, perhaps.

I was impressed with the number of attendees from Europe, Australia – and Utah!

I went to Matthew Weier O’Phinney’s tutorials on Monday. He’s the Project Manger for the Zend Framework, including design and supervision of the framework programmers. He’s an excellent speaker and really knows his stuff. Both his Intro to Zend Framework, and Ajax with Zend Framework tutorials were excellent.

My favorite talk of the conference was Eric Farrar’s talk on Mobile Data Synchronization. His slides went through many of the pitfalls of data synchronization, then actually provided a solution: use Sybase’s mobilLink, which is free to use with MySQL and SQLAnywhere. He said a team of 24 has been working for 10 years on that, and it is deployed in millions of devices. He works on the ultraliteweb project.

A Digg sysadmin did an interesting operations talk on the evolution of the Digg data center over the past few years. They’re up to 800 servers in 2 Equinix locations now, and use pre-cabled racks of servers from Penguin Computing. Software-wise, they like Cassandra key-value pair, clusto and puppet. They tried some commercial software in 2007, and didn’t enjoy the experience.

I had some great lunch break talks with other folks. One guy from Ohio was getting interesting SEO results by serving raw XML to clients, and having client-side JavaScript provide styling for human users.

I talked to a couple folks about their experiences using MySQL NDB Cluster in production. They both said it’s flaky, with one having already abandoned it for regular MySQL database with Innodb. He was also using RightScale and Amazon for document processing, and was happy with that combo.

There were about 20 exhibitors in 2 aisles, so easy to talk to all of them.

I got personal demos of RightScale’s cloud admin app, Zend Studio IDE, and BCDSoftware’s WebSmart PHP code generator.

WebSmart PHP is a $4600 code generator for ex-RPG and COBOL programmers. It provides a basic IDE, but the interesting part is that whatever you might want to do is either documented in hundreds of online technote examples, or available by contacting their unlimited support department.

Some of the unconference talks I went to included improving cookie security by embedding the SSL session id, and part of the continuous integration session (they talked about Hudson and CruiseControl, but not BuildBot).

The unconference talk on PHP and queues was quite good, with an overview of Amazon Simple Queues (good), Gearman (no persistence), beanstalkd (rave), and custom PHP and C queues (don’t roll your own unless you want long-term job security.)

The closing keynote was what I was mainly at the conference for … the PHP Frameworks Shoot-out with the framework project leaders.

Here’s my notes from my perspective as a listener. Please email me with any corrections.

Agavi
- David
- borrow from Symfony PHPunit code
- would use Symfony as alternate
- CI ORM is a pointless reimplementation, Rails programmers are morons shaped by pragmatism of Rails model
- hates complexity of validation code, context from Majove too many interdependencies
- 5.3 nice to have universal exception handling fw
- believes 5.3 is a major new release not comparable to 5.1 or 5.2 that frameworks need to support
- bigger the team and complexity, better agavi is because more structure

CakePHP
- Nate Abele
- hates long class names
- hates ACL system needs to be redocumented or cleaned up
- PHP 4 at this point, next release on 5.3

CodeIgniter
- Ed Finkel
- Symfony generates too many files, brain hurts; input filtering in ZF overcomplicated
- hates complex routing, unlike Limonade
- CI is not recommended for complex systems

Symfony
- Fabien Potencier
- French
- full stack
- secure by default
- would use Django and ZF
- hates 1.1 form framework complexity that users painpoint
- 5.3 is nice, but no plans to port to 5.3 because of large users update cycle time

Zend Framework
- Matthew Weier O’Phinney
- ZF routing from Rails, lots of stealing
- would use CodeIgniter
- hates heavy-weight dispatch cycle in ZF, to be rewritten in 2.0
- 5.3 ZF already testing with it, backwards compatible to 5.2.

The sessions that had an audio recording will be released as podcasts, one per week, and hosted on devzone.zend.com.

Thanks to Zend for organizing a great conference.

MySQL Unique Index Notes

Friday, September 11th, 2009

Generally speaking, indexes are not supposed to affect the results of SQL queries, aside from runtime performance.

But that’s not true for unique indexes, which are actually constraints, and can affect inserts and updates in a number of ways … and more.

With MySQL tables in particular (verify for the version and storage engine that you are using):

  1. unique indexes allow only one record with the same unique non-null indexed values
  2. unique indexes on partial columns (like varchar email(40)) allow only one record with the same value up to the length of the partial column, ignoring characters after that for the purpose of indexing.
  3. unique indexes allow null values to be duplicated, except in BDB tables. This can have security issues if you are relying on a unique index to enforce username uniqueness, for example.

I generally avoid nullable columns with MySQL and instead use default ” or default 0, #3 being one of many surprises with null.

MySQL manual: CREATE TABLE syntax
MySQL manual: ALTER TABLE syntax
Bug #8173: unique index allows duplicates with null values
Bug #25407: MySQL prefers UNIQUE index for IS NULL conditions over more selective conditions

OSCON 2009 – San Jose

Friday, July 24th, 2009

For the first time in a decade, the O’Reilly Perl and Open Source Conference (OSCON) was held San Jose again for 2009.

(I have heard that the City of San Jose Business Development office is very, very accommodating towards conferences these days.)

There was great attendance, and plenty to see with about 15 simultaneous tracks, lots of BoFs, and an active exhibits area.

One of the changes this year was more OS talks, including some for linux and FreeBSD. This is a welcome change, though many kernel hackers won’t travel to the USA, for various legal issues.

My favorites were:

  • talk – YAML by Ingy. YAML is a serialization standard for all programming languages and is a superset of JSON, in that YAML supports types and references. The Perl module is YAML.pm. Although it is a “serialization standard”, best results are obtained when both sides of the exchange are controlled by the programmer (ie. different word sizes or floating point standards will likely cause issues.)
  • Perl lightning talk – Esthetic Randomness by Joseph Brenner. Joseph likes to post-process random output before display to get a more desirable appearance. He’s kind of goth-looking, so the overall subject and delivery made it an interesting 5 minutes.
  • BoF – MySQL social with Monty, Percona (now 25 employees!) and Mark C.
  • exhibit – Haiku OS (the Open Source BeOS clone) demo. 2 developers, now at Google, reimplemented BFS from the textbook. Haiku can run with 64 MB RAM. Posix compatible, so the gcc toolchain works. The ARM port is a GSoC project. The video support comes from from ffmpeg, xiph, etc.

Regarding the MySQL BoFs, I think they can be summarized like this: the community is not going to wait for MySQL AB/Sun/Oracle to dick around any further.

Monty Program AB, Percona and Drizzle are going to have forks regardless of what Oracle does. Either the official MySQL documentation will be freed, or rewritten by Monty Program AB and Drizzle.

Typo3 CMS also had a community booth. They are the #1 European CMS with support for 38 languages.

I didn’t see much use for the “OSCamp” attendee-organized tracks personally. Whereas at the MySQL Conference the Percona Performance Conference was necessary to fix the broken speaker selection process that was weighed towards MySQL/Sun staff instead of productive community contributors, that wasn’t an issue this time around.

The talk on Perl and Unicode was pedantic (focusing on UTF-8 bit patterns, presumably for those needing to detect and fix corruption) but comprehensive, as Tom Christiansen was in attendance to provide up-to-the-minute comments and tips. perluniintro is very helpful.

The PHP Best Practices talk was informative, as the 2 presenters have worked as PHP programming consultants and seen how projects go wrong. They tend to use whatever PHP framework the client is using, and have nothing glowing to say about any particular one.

I’d say that the world of PHP frameworks (dozens) is even more fragmented than Perl (Catalyst, Mason, embperl, CGI::Application are the major ones), which is indeed astonishing. And ironic – since PHP is itself a templating language.

Stonehenge Consulting threw another of their famous drunkfests at a local bar for those wearing their neon yellow t-shirts. If you want to get hammered for free, this is always the spot. :)

I talked to Randy Ray a little about what can be done with svlug.pm considering that the South Bay is suburban and thus less centralized than a dense city. Stay tuned.

Other Perl lightning talks included:

  • Larry Wall’s son talking about black holes
  • Scott Smith talking about Getopt::Complete, which can do svn command-line style nested args
  • connie willis bellwether talked about Flocks and the hive mind as defined by 3 rules.
  • Don’t Blame Perl – It’s the programmer’s problem if they don’t use modules, scoping, comments, brevity, objects.
  • Cool Perl6 – hyperoperators (work on arrays) with a card game sample using extended-ASCII symbols.
  • svn is not totally useless – it pointed the world towards git.

The closing talk on linux economics seemed to be an eye-opener for the audience. Most cell carriers and OEMs are at a severe disadvantage to Apple in the apps market, so they may need linux (or Haiku) to mount any kind of response that makes financial sense.

In the conference wrap-up segment, Allison Randal and an O’Reilly rep fielded questions from the audience and answered in “Twitter mode” – single sentences less than 140 characters in length.

OSCON 2009 Speaker Presentation Files
youtube.com: oscon 2009 video clips
wikipedia: Monty Program AB
mtocker: Understanding the MySQL forks

PHP Light-weight Web Application Requirements

Monday, July 6th, 2009

A lot of web designers are using complete CMS systems like Drupal and Joomla as foundations for custom PHP/MySQL web apps that are not really CMS apps.

The main disadvantage with doing that is that they are relatively large codebases, and each site developed that way ends up using (and hosting) a different version of the CMS.

It would be nice to have a light-weight alternative that is more app framework-oriented.

Some of the items I would expect in any modern PHP webapp:

  • PHP 5.2+ support
  • Free and Open Source
  • horizontally scalable, same as raw PHP
  • filters extension support
  • ORM and non-ORM database queries
  • memcached support
  • Work in all browsers
  • authenticated sessions with salted, multiple-round MD5 and SHA-1 hashing of password
  • Relative links for installation multiple times on same server, or on different servers (dev/stage/prod)
  • Reasonably secure sessions – hard to steal a login cookie, no private data in cookie
  • App should degrade but still mostly work without JavaScript
  • 100% input filtering and validation
  • No XSS or XSRF problems
  • No SQL injection problems
  • AJAX support (MooTools provides light-weight AJAX support – MIT licensed) or maybe jquery (MIT or GPL)
  • Reporting with scalable/resizable/emailable graphs like OpenFlash ( with OFCGWT – LGPL licensed)
  • I18n support (locales, UTF-8, admin emails.)
  • No database-specific APIs like mysql_*()
  • Amazon EC2, S3 and EBS support (like Zend_Service_Amazon_Ec2)
  • Search widget built-in for SOLR or Sphinx
  • Help widget built-in
  • App is always aware of locale and does the right thing
  • Not XHTML
  • End-user can do language translation, similar to Facebook.com
  • Content is easily shareable
  • TinyURLs available for content links
  • Replication-aware and resistant.
  • Retargetable output display formats.

For business webapps:

  • Subaccounts
  • Payment processing

For the Japanese market:

  • Login/logout session history for auditing
  • Separate CSS for Japanese locale (mostly to reduce font size)
  • Maru (circle) instead of checkmark.
  • Somebody Japanese to test it.

Please leave a comment if you have any thoughts.

Some popular existing PHP frameworks:

CakePHP + Zend Framework Impressions
Drake: CakePHP Drupal Module

PHP PEAR
Feb. 2008: Notes on Choosing a PHP Framework: A Comparison of CakePHP and the Zend Framework
2006: Rasmus Lerdorf – The no-framework PHP MVC framework
ringsworld.com: PHP input-filter

MySQL Conference 2009

Thursday, April 23rd, 2009

The MySQL Conference was, as usual for the past few years, at the Santa Clara Convention Center (home of the $14 bistro burger.)

And once again, MySQL got bought by another company. Last year Sun, this year Oracle.

I found out about the Oracle buy while eating lunch with a DBA from Utah who was there to write the MySQL certification test and investigate MySQL as a cheaper replacement for … Oracle. :)

This year there were actually 3 simultaneous conferences – O’Reilly MySQL Conference and Expo, MySQL Camp (free) and the Percona Performance Conference (free) – 10 simultaneous tracks from 8:30 am to about 9 pm. Julian Cash was also doing creative photography next to MySQL Camp.

Storage-class Memory (NOR Flash)

Last year’s Expo theme seemed to be “3rd party commercial storage engines” (Kickfire, Tokutek, etc.) This year’s theme probably was “enterprise storage-class memory” – and likely the most exciting thing there.

Storage-class memory is NOR flash memory that is mapped to memory space using a Hypertransport controller, unlike SSD which is NAND memory mapped to IO space.

Virident and Schooner demoed Sun and Intel quad-cpu MySQL and Memcached appliances with 2 processor slots attached to 512 MB of NOR flash. When NOR flash density is improved, that will become 1 TB.

Virident, with an office in Milpitas, said that Innodb operations are 70x faster than hard drives because of Hypertransport, optimization of Innodb for byte accesses instead of blocks, and removal of usermode-kernelmode transitions. (MyISAM not optimized yet.) The Virident appliance prices range from around $15K to $45K per appliance. Demo machines and other testing arrangements are available according to the sales rep.

Schooner has a relationship with IBM support to provide on-site service.

mysqld

Regarding the MySQL software, I saw more progress and excitement from 3rd parties than MySQL AB.

The Google V3 patch and Percona patches plus XFS and tcmallloc on linux appear to finally provide good overall performance and adequate multi-core performance to 16 cores for Innodb. Mark Callaghan from Google talked about these at his Cloud talk, then did his usual shout-out to Heikki and Ken Jacobs of Oracle to pick up the ball and run with it.

MySQL Workbench Client Program

MySQL Workbench comes in two versions, no charge and SE. Both versions can print professional-looking schema diagrams from create table statements, and SE can make a remote connection.

(I asked the developers to add a legend of symbols used.)

SE also has a roles feature that a DBA can use like macros to populate the usual user, db and host tables.

Replication and Storage BOF

I attended the Replication and Backup BOF, hosted by Mats Kindahl and Charles Bell from Mysql. It was a strange experience … the MySQL employees had a rosy view of their world (belief in replication working perfectly “guaranteed” and mysqldump being fast and safe, and unaware of potential problems of “FLUSH TABLES WITH READ LOCK” and Innodb), and myself and other experienced users had a very different viewpoint (replication requiring periodic checksumming and snapshots being the slowest acceptable backup method.)

But then again, Innodb sells Innobackup, so no urgency to quiesce it for snapshots, I guess.

Open Storage BOF

Raymond Austin, Sun Workgroup Storage, organized this BOF to request wishlists from MySQL DBAs. It took a while to convey that most DBAs don’t normally run MySQL on NFS. Most of the discussion revolved around: desire for ZFS to provide backward compatibility forever, storage hardware should have checksums everywhere, double parity (RAID6), and reasonable drive controller UER error propagation and control (ie. don’t trash the array upon 1 error in the middle of a rebuild.)

Drizzle BOF

Drizzle is a project to prune MySQL to an essential core for users who want performance more than features, while building a development community that MySQL AB did not encourage hard enough.

Brian Aker did the initial setup of Drizzle.

Jay Pipes talked about anybody was welcome to contribute, whether working on the website, writing client programs, or C/C++ on the server. Just don’t add locks, and ensure the server is modular and scales connection-wise.

In the expo area I talked to Matt Gentry from iDashboards.com. They’re a Detroit company that creates BI dashboards for clients. Funnily enough, his clients most often request speedometer displays, often 4 across, which consume the most display area without providing any more information.

blip.tv: Keynote Videos
filefrag
sf.net: oprofile
performancewiki.com: oprofile
ibm developerworks: Smashing performance with OProfile
Alex’s Notes from Percona performance Conference

User Group: BayPIGgies (Python)

Thursday, March 26th, 2009

A handful of speakers gave very interesting presentations at BayPIGgies (Silicon Valley-San Francisco Bay Area Python Interest Group).

It was like a set of lightning talks – only longer.

There was a quick talk on Big O notation, and how to characterize python arrays and sets. I am suspicious of performance talks without benchmarks, though.

Sandrine Ribeau gave a talk on pylint, which is a lint/coding standards checker for python source code.

Although PyChecker still does a better job of general python lint checking, pylint can be used to check for things like function naming conventions, etc. using a site-specific checker module.

pylint can be configured to ignore specified warnings or errors, and also overridden from the command line.

Somebody gave a talk on doing log and log-like processing using Unix pipes, similar to how Yahoo does it. Generally they are faster and have more predictable resource requirements than MySQL, for example.

One interesting technique is to use the sort -T option to assign temporary files to different drives than your input data or output file.

Drew Perttula gave a talk and demo about kcachegrind, as well as supporting tools for measuring performance of python code, including a module call graph display tool that creates png graphs using the dot program.

It was an impressive demo, and though kcachegrind was not written with python in mind, the display still made sense.

Simeon Franklin talked about his environment setup to improve web development and release workflow using virtualenv (managing python development environments), pip (an easy_install replacement that works with virtualenv environments), and fabric (a python tool for scripting server deployment tasks).

It was very slick.

In a nutshell, the practical problem that web developers face nowadays is how to create sandboxes for multiple versions of python and web CMS systems, then periodically install them on remote servers.

Sandboxes are needed because by default, python modules are installed silently and globally. By installing instead to a sandbox, you can isolate which modules got installed, and where.

fabric, the remote installation tool, is kind of like a cross between make and Expect, except written in python and focused on installation.

fabric has 15 statements to allow running local and remote commands, authentication and copying of files. So you can build a local distro, login to a remote server, upload the distro, and run installation commands, all automatically.

Commonly fabric is used to install static and program files, do database schema updates, and restart web servers.

Thanks to Symantec for hosting the event tonite.

While passing Moffett Airfield I happened to see a big, white zeppelin owned by Airship Ventures.

cnet.com: A 21st-century zeppelin flies to San Francisco
avweb.com: Zeppelin Startup Struggles As Economy Sinks