Specify which Index to use during a SELECT
MySQL by default will always use the best index for a SELECT. MySQL is not perfect and at times will mess this up by using a wrong index. In such cases you can force MySQL to use a specific index or otherwise ask it to ignore a specific index.
Simple RAID Cheat Sheet
| Level | Redundancy | Disk Required | Faster Reads | Faster Writes |
|---|---|---|---|---|
| RAID 0 | No | N | Yes | Yes |
| RAID 1 | Yes | 2 | Yes | No |
| RAID 5 | Yes | N+1 | Yes | No |
| RAID 10 | Yes | N*2 | Yes | Yes |
| JBOD | No | N/A | No | No |
LXJS 2012 – Bert Belder – libuv
Node core committer Bert Belder gave a talk at LXJS. If you are interested in how Node does asynchronous I/O across platforms, then you should definitely watch this video.
Mozilla Revenue Chart
Year & Source
2003 – http://blog.lizardwrangler.com/2007/01/02/the-mozilla-foundation-achievi…
2004 – http://blog.lizardwrangler.com/2007/01/02/the-mozilla-foundation-achievi…
2005 – http://blog.lizardwrangler.com/2007/01/02/the-mozilla-foundation-achievi…
2006 – http://www.mozilla.org/foundation/documents/mf-2006-audited-financial-st…
2007 – http://www.mozilla.org/foundation/documents/mf-2007-audited-financial-st…
2008 – http://www.mozilla.org/foundation/documents/mf-2008-audited-financial-st…
2009 – http://www.mozilla.org/foundation/annualreport/2009/faq.html
2010 – http://www.mozilla.org/en-US/foundation/annualreport/2010/faq/
Row vs Column oriented databases
A database program must show its data as two-dimensional tables, of columns and rows, but store it as one-dimensional strings. For example, a database might have this table.
| EmpId | Lastname | Firstname | Salary |
|---|---|---|---|
| 1 | Smith | Joe | 40000 |
| 2 | Jones | Mary | 50000 |
| 3 | Johnson | Cathy | 44000 |
This simple table includes an employee identifier (EmpId), name fields (Lastname and Firstname) and a salary (Salary).
This table exists in the computer’s memory (RAM) and storage (hard drive). Although RAM and hard drives differ mechanically, the computer’s operating system abstracts them. Still, the database must coax its two-dimensional table into a one-dimensional series of bytes, for the operating system to write to either the RAM, or hard drive, or both.
A row-oriented database serializes all of the values in a row together, then the values in the next row, and so on.
1,Smith,Joe,40000;2,Jones,Mary,50000;3,Johnson,Cathy,44000;
A column-oriented database serializes all of the values of a column together, then the values of the next column, and so on.
1,2,3;Smith,Jones,Johnson;Joe,Mary,Cathy;40000,50000,44000;
This is a simplification. Partitioning, indexing, caching, views, OLAP cubes, and transactional systems such as write ahead logging or multiversion concurrency control all dramatically affect the physical organization. That said, online transaction processing (OLTP)-focused RDBMS systems are more row-oriented, while online analytical processing (OLAP)-focused systems are a balance of row-oriented and column-oriented.
Simple Consistent Hash for Memcache in Ruby
Consistent hashing is a scheme that provides hash table functionality in a way that the addition or removal of one slot does not significantly change the mapping of keys to slots. In contrast, in most traditional hash tables, a change in the number of array slots causes nearly all keys to be remapped. By using consistent hashing, only K/n keys need to be remapped on average, where K is the number of keys, and n is the number of slots.