Latest Publications

Safe Investing with Banks?

This morning, I found a web site highlighted by Refdesk, my favorite reference web site. The link was:

FDIC: Failed Bank List

The FDIC is often appointed as receiver for failed banks. This page contains useful information for the customers and vendors of these banks. This includes information on the acquiring bank (if applicable), how your accounts and loans are affected, and how vendors can file claims against the receivership. This list includes banks which have failed since October 1, 2000.

The data had a link to download the data in CSV format, so I decided to quickly plot it and take a look.

Bank Failures betwween 2000 and 2011

Bank Failures betwween 2000 and 2011

The interesting part of the data happens between 2006 and 2011. Because we are only part way through January 2011 at the time of this post, I excluded January’s data from the chart. Already two banks have failed in 2011.

Bank Failures between 2006 and 2011

Bank Failures between 2006 and 2011

As you can clearly see, we had a lot of volatility between Mid 2009 and today. The trend is clearly visible back through 2008 as well. Almost all of these bank closures resulted in an acquisition of the accounts by another bank. Of the 351 failures shown above, only 24 resulted in “No Acquirer”. Those were:

+--------------------------------+------------------+-------+------+
| bank_name                      | city             | state | year |
+--------------------------------+------------------+-------+------+
| NextBank, NA                   | Phoenix          | AZ    | 2002 |
| New Century Bank               | Shelby Township  | MI    | 2002 |
| AmTrade International Bank     | Atlanta          | GA    | 2002 |
| Bank of Alamo                  | Alamo            | TN    | 2002 |
| Dollar Savings Bank            | Newark           | NJ    | 2004 |
| MagnetBank                     | Salt Lake City   | UT    | 2009 |
| Omni National Bank             | Atlanta          | GA    | 2009 |
| FirstCity Bank                 | Stockbridge      | GA    | 2009 |
| First Bank of Beverly Hills    | Calabasas        | CA    | 2009 |
| New Frontier Bank              | Greeley          | CO    | 2009 |
| Silverton Bank, NA             | Atlanta          | GA    | 2009 |
| Community Bank of West Georgia | Villa Rica       | GA    | 2009 |
| Community Bank of Nevada       | Las Vegas        | NV    | 2009 |
| Platinum Community Bank        | Rolling Meadows  | IL    | 2009 |
| Citizens State Bank            | New Baltimore    | MI    | 2009 |
| RockBridge Commercial Bank     | Atlanta          | GA    | 2009 |
| Barnes Banking Company         | Kaysville        | UT    | 2010 |
| Advanta Bank Corp.             | Draper           | UT    | 2010 |
| Centennial Bank                | Ogden            | UT    | 2010 |
| Waterfield Bank                | Germantown       | MD    | 2010 |
| Lakeside Community Bank        | Sterling Heights | MI    | 2010 |
| Arcola Homestead Savings Bank  | Arcola           | IL    | 2010 |
| Ideal Federal Savings Bank     | Baltimore        | MD    | 2010 |
| First Arizona Savings, A FSB   | Scottsdale       | AZ    | 2010 |
+--------------------------------+------------------+-------+------+

According to a Wikipedia page about US Banking, this is from a total population of 8430 FDIC insured banks. The total failure rate is 4.13%, and the total that had ho acquiring institution was 0.3%. So, it’s not quite as shocking as it seems at first glance.

Now, I wonder to myself in today’s economic climate who’s banking with the likes of First Arizona Savings in Scottsdale, AZ. I suppose it does not matter too much I suppose, since your deposits are insured by the FDIC up to $250,000 and the FDIC will repo the bank if it’s at serious risk. So if you happen to have a huge bank balance (>$250K), consider finding some sensible investment strategy for that money. The risk of leaving it in a little community bank is pretty frightening.

Drizzle Lines of Code vs. MySQL

In my recent post about Drizzle I suggested that because Drizzle has fewer lines of code (less than half compared to MySQL) that is has a lower intrinsic risk of software defects. Of course it has bugs of its own, but because Drizzle is focused squarely on OLTP use cases, it can be substantially smaller in terms of lines of code. In fact, when I used Ohloh to compare the source code line count of MySQL and Drizzle the picture was very clear:

Part of the reason that the code count is smaller is because the non-relevant parts have simply been removed, but there was also a lot of effort put into modernizing the code base, and using C++. Using Boost and other foundational software projects as building blocks, the need for internal implementations for basic things is greatly reduced. For example, the MySQL code base has a REGEX implementation in it. This was removed in Drizzle, and replaced by PCRE, which is expected to change again soon to use Boost. By using libraries that are leveraged by numerous projects, the probability of a lower bug count is an additional benefit. Simply put, with more smart people looking at and using the software, and improving its weaknesses, the more likely it is to be high quality.

Drizzle is now BETA

Today Drizzle enters BETA. Drizzle is an evolution of MySQL that’s been simplified, streamlined, and modernized. This long awaited database started from an idea in 2005 to fork MySQL, keep the good parts, and rip out or replace all the stuff that’s not good for web applications. This idea has been endorsed by large corporate sponsors, including Sun Microsystems in the early days, and now Rackspace. Most of the code is contributed by the developer community, which is made up of of a very talented group of open source developers with core committers from four different companies. More about the Drizzle project:

Charter

  • A database optimized for Cloud infrastructure and Web applications
  • Design for massive concurrency on modern multi-cpu architecture
  • Optimize memory for increased performance and parallelism
  • Open source, open community, open design

Scope

  • Re-designed modular architecture providing plugins with defined APIs
  • Simple design for ease of use and administration
  • Reliable, ACID transactional

There are many exciting changes, such as optimizing everything for 64-bit CPU’s and Multi-Core. You can’t hardly even buy 32-bit and Single Core servers nowadays if you want them. It makes no sense to have software that’s optimized for these antiquated hardware designs. No effort is spent optimizing software to work with rotational hard drives because SSD drives are the way of the future. All the language collations have simply been replaced with UTF-8 only, because the web uses UTF-8. Plus, this is tested with 41 different language translations. Drizzle has a new scheduler. The legacy MySQL scheduler was designed to work for a thread-per-session setup. In Drizzle, sessions are handled independently from the threads. The new scheduler allows this to work.

Drizzle uses InnoDB as its default storage engine, which is great for OLTP. It also supports the PBXT storage engine. There are available plugins for the InnoDB Embedded Engine and HailDB which will soon be the new default. DDL Operations (like ALTER TABLE) can actually roll back in the event that something goes wrong in the process, rather than leaving you with incomplete or corrupt data.

The code base in Drizzle has been fully modernized, and brought up to today’s standards of C++ with extensive use of the C++ STL to replace MySQL’s usage of obscure custom data type implementations that offered no real benefit compared to what the STL has today. Another example of improvements in this area is the replacement of the legacy REGEX implementation with a more standard library. All of these changes reduce the amount of Drizzle source code dramatically compared to MySQL. Less code and simpler code means less bugs, plain and simple. Drizzle is well on its way to being an ideal fit for web applications that need a reliable, and high performance transactional database.

Features in Drizzle7 Beta

  • New micro kernel
  • Migration Tool
  • Instance Catalog Support
  • Universal Replication
  • User query analysis
  • Mutli-core Support

What “Beta” means

  • Your data is safe. Transactional engine by default and stable for over 2 years.
  • Upgrade the system in-place without exporting/importing data.
  • Replication is still being tested.

In Microsoft terms, it means that this project would have launched about a year ago. In Google terms, it probably would have launched six months ago. Simply put, if you trust your data to a MySQL system today running InnoDB, you should feel comfortable trying Drizzle. There have been some changes to the InnoDB setup, such as the elimination of the FRM files from disk which eliminate possible inconsistency between the state on disk and the state in InnoDB. I am in the process of moving a few of my produciton applications to use the Drizzle Beta. If you’re an accomplished system administrator and DBA, you should seriously consider putting at least one of your production applications on Drizzle now, and see how it works for you.

What’s Next?

  • Beta announced today 2010-09-29.
  • GA February 2011
  • GA May 2011 for Multi-Tenancy features that allow an arbitrary number of logical databases (Schemas, Tables, etc.) to exist concurrently with full data isolation between them. This allows for individual security and resource controls (Threads, Memory, IO), and individual database backups, rather than system level backups. This feature will be called “Catalogs”.

Download Drizzle

Time to get started with the beta. Download the beta today!