�Ȃ�Twitter�͒�x���̂܂܃X�P�[���ł����̂�

�b��120���‚Ԃ₫�������ATwitter�V�X�e���́g���h

2010/04/19

photo01.jpg Twitter�̃V�X�e���E�A�[�L�e�N�g�ANick Kallen��

�@���[�U�[���m�̂‚Ȃ�������Ɏ��n���140�����̃��b�Z�[�W��20�‚قǕ\������\�\�BTwitter�̃T�[�r�X�́A�����ɂ��Ă��܂��Ǝ��ɃV���v�������A�w��ɂ͔��ɑ傫�ȋZ�p�I�`�������W����������Ă���B�‚Ԃ₫��������10������˔j�ATwitter�𗬂�郁�b�Z�[�W���͕b��120���ɂ��B���A���[�U�[���m�̂‚Ȃ����\���\�[�V�����E�O���t�ł��烁�����ɍڂ�ʂ𒴂��Ă���B�r�����Ȃ��X�P�[���̃f�[�^���‚Ȃ��ł���ɂ��ւ�炸�A0.1�b�ȉ���Web�y�[�W�̕\�������������Ȃ���΂Ȃ�Ȃ��B���̂��߂Ɋe�f�[�^�X�g���[�W��1�`5ms���x�ʼn������Ȃ���΂Ȃ�Ȃ��B

�@Twitter�̃��X�g�@�\�̎����Ńv���W�F�N�g���[�_�[�𖱂߂����Ƃ�����Nick Kallen�����������A2010�N4��19������2���Ԃ̗\��ŊJ�Ò��́uQCon Tokyo 2010�v�Ŋ�u�����s�����B�uData Architecture at Twitter Scale�v�Ƒ肵���u���ł́ATwitter���ŏ��Ɏ��������f�p�ȃV�X�e������A�ǂ̂悤�ȉۑ�ɒ��ʂ��A������ǂ�����ĉ������Ă��������T�������B���[�J���e�B�i�Ǐ����j���l�������f�[�^�̃p�[�e�B�V���j���O�헪�̏d�v����A���ꂪ�A�N�Z�X�p�^�[���ɋ����ˑ��������̂ł��邱�ƁA���邢�͏d�����v�Z��������������N�G���ł͎��O�ɏ������s���Ă������ƂȂǁA�����[���Z�p�I���@�ɖ������u���������B

twitter01.jpg Twitter���z�M���郁�b�Z�[�W�͕b��120���ɂ��B����Ƃ���

�P���ȃp�[�e�B�V���j���O�ł͉������Ȃ�

�@�T�[�r�X�̍\�����V���v����Twitter�́A�T�[�r�X�J�n�����ɂ͎������V���v���������悤���B�e�‚Ԃ₫��ID���v���C�}���L�[�Ƃ��āA���[�U�[ID��e�L�X�g�A�����Ȃǂ�1�‚̃e�[�u���ɕۑ��B������}�X�^�[�E�X���[�u�\���Ƃ��邱�ƂŁAread�̐��\���グ��Ƃ����X�g���[�g�ȃX�P�[�����O���s���Ă����Ƃ����B

twitter02.png ���Ƃ��Ƃ�Twitter��DB�X�L�[�}

�@memcached�ɂ�鍂�������s�������̂́A�ŏ��ɒ��ʂ����ۑ�͈ӊO�ɂ��f�B�X�N�e�ʂ̏���������Ƃ����B�‚Ԃ₫�̐���30���ɋ߂Â��A800GB�Ƃ����f�B�X�N�e�ʂ̏����9���ɂ܂Ŕ���������������Ƃ����B�u800GB�𒴂���T�C�Y�̃f�B�X�N�E�A���C�𓱓����邱�Ƃ͔������������v�iKallen���j�Ƃ���������́AWeb�n��Ƃ炵�����z�ŁA����ɑΏ����邽�߂ɁA�p�[�e�B�V���j���O���s�����Ƃ����B

�@�p�[�e�B�V���j���O�Ƃ́A�Ⴆ�΃��[�U�[ID�������A��ɕ�����2�‚�DB�ɕ����ĕۑ�����e�N�j�b�N�B����̃��[�U�[�̂‚Ԃ₫��\������ꍇ�AID������������Ŗ₢���킹���ׂ�DB����ӂɌ��܂邽�߁A��������΂���قǃ��X�|���X���オ��A1��1�‚�DB�̃T�C�Y���}������B

�@�����A���[�U�[ID�Ɋ�Â��p�[�e�B�V���j���O�ł́A�����ID�����‚‚Ԃ₫�����‚��邱�Ƃ��ł��Ȃ��Ȃ�B����ID�̂‚Ԃ₫��N����������������Ȃ����炾�B���̂��߁A���������p�[�e�B�V���j���O����������DB�����ׂČ������Ȃ��Ă͂����Ȃ��Ȃ�B

twitter03.png �p�[�e�B�V���j���O��1�‚̕��@�B�‚Ԃ₫��ID�����ɕ����邱�Ƃ��l�����邪�A���̕������@�ł̓��[�U�[ID�ɑΉ�����‚Ԃ₫�̌����ɂ͑S�p�[�e�B�V�����ɑ΂���A�N�Z�X���������Ă��܂�

�@�‚Ԃ₫��ID�Ńp�[�e�B�V���j���O���Ă��A�t�̖�肪�N����B�����ID�����‚‚Ԃ₫���ǂ̃p�[�e�B�V�����ɂ��邩�͕����邪�A���郆�[�U�[ID�ɕR�t�����‚Ԃ₫��ID�́A���ǂ��ׂẴp�[�e�B�V�������������Ȃ��ƕ�����Ȃ����炾�B

���n��Ƀp�[�e�B�V���j���O

�@�‚Ԃ₫�̗ʂ��������邽�߁A�P��̃e�[�u���ɕۑ�����͔̂񌻎��I�B���Ƃ����āA���[�U�[ID��‚Ԃ₫ID�Ɋ�Â��ĉ��炩�̌`�ŕ�������Ƃ����̂��A���܂肤�܂������Ȃ��B

�@�����Ō��݂�Twitter�ł́A���n��̃p�[�e�B�V���j���O���s���Ă���Ƃ����B1���̂‚Ԃ₫�A2���̂‚Ԃ₫�A3���̂‚Ԃ₫�A�����i4���j�̂‚Ԃ₫�A�Ƃ����悤�Ɏ��Ԏ��ɉ����ăf�[�^�𕪊����Ă���̂��Ƃ����B

twitter04.png ���݂�Twitter�̃f�[�^�̃p�[�e�B�V���j���O���@�B���n��ɕ������Ă���Ƃ���

�@���̕����헪�́u�����͂ƂĂ��܂��������̂悤�Ɏv�����v�iKallen���j�Ƃ����Bn�‚̃p�[�e�B�V�����ɕ���������A���̃A�N�Z�X���Ԃ̕��ς�O�in�j�ƂȂ邩�炾�B�Ƃ��낪Twitter�Ƃ����T�[�r�X�ɂ́AKallen�����u���ԓI�Ǐ����v�itemporal locality�j�ƌĂԓƓ��̃A�N�Z�X�p�^�[��������B�u���ۂɂ͂قƂ�ǂ̃N�G���́A���V�������ւ̃o�C�A�X���������Ă���v�i���j���炾�B�قƂ�ǂ̐l�̃��N�G�X�g�͍ŐV�̃p�[�e�B�V�����ɑ΂���N�G���Ŋ�������B���ׂẴ��[�U�[���A�N�e�B�u�Ȃ킯�ł͂Ȃ����߁A�u���郆�[�U�[�̒��߂̂‚Ԃ₫20���v�́A�����̃p�[�e�B�V�����ɂ����̂ڂ��Ă������ƂɂȂ邪�A����ł����̐헪�ɂ��A�N�Z�X���Ԃ̕��ς͎�����O�i1�j�ƂȂ��Ă���̂��Ƃ����B

�@�����Facebook�ŊJ�����ꂽ�I�[�v���\�[�X��Cassandra���g���A�‚Ԃ₫��ID�ƃ��[�U�[ID�̂��ꂼ����v���C�}���L�[�Ƃ����e�[�u�����g���v�悾�Ƃ����B

���[���z���Ɏ����񓯊��̎d�g�݁ufan out�v

�@Twitter�Ŏ��ɑ傫�Ȗ��ƂȂ�̂̓^�C�����C�����B

�@�^�C�����C���ɂ̓t�H���[���Ă���l�̂‚Ԃ₫������Ă��邪�A����͂‚܂�ȉ��̂悤��SQL���ɑ�������B

twitter05.png �T�[�r�X�J�n�����̑f�p�ȃN�G���B���Ŏ�������������������ɍڂ�Ȃ��Ȃ�A���ɒx���Ȃ����Ƃ���

�@��̂悤�ȃX�g���[�g�Ȏ����ł́A�t�H�����[���������Ă�����Ɠr�[�ɃX�P�[�����Ȃ��Ȃ�B�������ɍڂ�؂炸�Ƀf�B�X�N�A�N�Z�X���������A���X�|���X�������邽�߂��B�f�B�X�N�A�N�Z�X�̃y�i���e�B�͑傫���A1�b�ȉ��ŏI���͂��̃y�[�W�̕`�悪���b������Ƃ������ƂɂȂ�B

�@�����Twitter�̋Z�p��̉ۑ��傫�����Ă���̂́A���X�g��u���b�N�֌W�A���邢�́u@someone�v�Ƃ������v���C�ɂ���ă��b�Z�[�W�̔z�M�悪�ς��Ƃ������Ƃ��B����͔��ɑ傫�Ȍv�Z�����ł������A�uHadoop���g����50�������ď�������^�C�v�̖��ł͂Ȃ��v�iKallen���j�B�����܂ł���ms�Ƃ�����x���ōs��Ȃ��Ă͂����Ȃ��B

�@�����������ւ̑Ώ����@�Ƃ��āAKallen����2�‚̃A�v���[�`���Љ���B

�@1�‚́ufan out�v�ƌĂԃ��[���z���Ɏ����A�[�L�e�N�`�����g�����Ɓifan out�͊����ŏ����Ɓg��o�h���B���ň�C�ɂ܂��U�炷�悤�ȃC���[�W�j�B�e���[�U�[�̃^�C�����C�������[���̎�M���̂悤�Ɍ����ĂāA�����Ƀ��b�Z�[�W��z�M����B�‚Ԃ₫�͂�������memcached�ɕۑ�����A���ꂪ�e��M���i�^�C�����C���j�ɑ����邪�A���̔z�������͔񓯊��̃I�t���C���������Ƃ����B�����A�I�t���C���Ƃ����Ă���ԃo�b�`�̂悤�Ȕ����P�ʂƂ������̂ł͂Ȃ��A�b�P�ʂ̒x��������Ƃ������̂ł���Ƃ����B

twitter06.png ����Twitter�ł̓��[���z���Ɏ����d�g�݂Ńt�H�����[�ɂ‚Ԃ₫��z�����Ă���Ƃ���

�@����1�‚̍H�v�́A�t�H���[�Ɣ�t�H���[�̊֌W�����ꂼ��ʂɃf�[�^�Ɏ��‚��ƁB�_���I�ɂ͕Е����̃O���t���������Ă����Ώ\�������A�����āu�N���t�H���[���Ă��邩�v�u�N�Ƀt�H���[����Ă��邩�v�ɕ����ăf�[�^�����Ă����B�f�[�^�̐������ɋC��t����K�v�͂�����̂́A�������Ă����΃N�G���͓���p�[�e�B�V�����ւ̃A�N�Z�X�Ŋ������邽�߁A�������ɏ��؂�Ȃ��Ƃ���������������̂��Ƃ����B

�@���������d�g�݂ɂ��A�������ݑ��̃f�b�h���b�N�i���ׂĂ̂‚Ԃ₫�͋���ȒP��̃f�[�^�Z�b�g�ɕ��荞�܂��j���������‚ƒ\�[�V�����E�O���t���������ɏ��؂�Ȃ��Ƃ����ۑ�����z���āA���A���^�C�����̍����T�[�r�X�������ł��Ă���B

�@2008�N���_��Twitter��Ő��܂��‚Ԃ₫�̐��͕b��30���������A2010�N4�����݂͖�700�ɂ܂Ŗc��オ���Ă���B�X�|�[�c�C�x���g��I�X�J�[�̔��\���ȂǁA�s�[�N���ɂ͕b��2000�ɒB����Ƃ����B������1�‚̂‚Ԃ₫�͕���600�‚�fan out����邽�߁A�b��120���̃��b�Z�[�W�z������������\�͂����߂���Ƃ����v�Z���B

twitter07.png 2008�N���_�ƌ��݂Ƃł�Twitter�̓��v���B�b����30�������‚Ԃ₫�������x��700�ɂ܂ŏオ��A���̌��ʍő�ŕb��120�����x�̃��b�Z�[�W��z�����Ă���Ƃ���

�@Twitter�͌��݂��܂����܂��܂ȋZ�p�I�ۑ������Ă���B�Ⴆ�Ό����C���f�b�N�X�ɂ‚��Ă����n��̃p�[�e�B�V���j���O���s���Ă��邽�߁A���������p�x���Ⴂ�P��Ȃǂł͍ŐV�p�[�e�B�V�����ɃC���f�b�N�X���Ȃ����߉����q�b�g���Ȃ��Ƃ������Ƃ��N����B���̂��߁A����MySQL�x�[�X�ōs���Ă��錟���C���f�b�N�X�����n��̃p�[�e�B�V���j���O�����łȂ��A�h�L�������g�P�ʂɃp�[�e�B�V���j���O����Ă�AMySQL�̑���ɑS�������G���W���́uLucene�v���g���Ƃ����Ă��������Ă���Ƃ����B

�����͎����ł���΂̂Ȃ����E

�@�]�k�����ANick Kallen����2008�N9����Twitter�ɉ�����ȑO����ARuby on Rails�R�~���j�e�B�ł͍L���m��ꂽ�n�b�J�[�������BRails��ORM�w�ł���ActiveRecord�ŁA��蒊�ۓx�̍����N�G�����\���ł���uNamed_scope�v�����������̂�Kallen�����BNamed_scope���g���΁A�Ⴆ�΁u���J�t���O�������Ă���u���O�G���g���v�Ƃ��������ɖ��O��t���Ă������ƂŁA�ϏW���̉��Z��[�I�ɕ\���ł���悤�ɂȂ�i�Q�l�j�B����Named_scope�̔��z������������i�߂Ċ֌W�㐔�Ɋ�Â���Kallen�������������̂�Ruby�����ėp�f�[�^�N�G�����C�u�����uArel�v�ŁA����́A�܂��Ȃ������ł������[�X����鎟��Ruby on Rails�̃��W���[�o�[�W�����A�b�v�ARuby on Rails 3�ɂ��܂܂��BArel��C#�Ȃǂɂ���LINQ�Ɏ��āA���������\�b�h�`�F�[���Ƃ��ÂȂ��Ă������Ƃ��ł���B

�@Arel�Ƃ����N�G���̒��ۉ����s���������s����Kallen�������ATwitter�̂悤�Ȏ��T�[�r�X�ŏd�v�Ȃ̂́A�ނ���A�p�[�e�B�V���j���O�⃍�[�J���e�B�̗��p�̕��@�_�ɂ͂���Ƃ����P��̃A�v���[�`�����݂��Ȃ��Ƃ����F�������‚��Ƃ��Ǝw�E����B�u���ׂẴG���W�j�A�����O��̉�����Ƃ����̂́A�ꎞ�I�Ȃ��̂��v�iKallen���j�B

�@Twitter�K�͂̃X�P�[���r���e�B�̖��������G���W�j�A�͑����͂Ȃ���������Ȃ����A����A����ȃf�[�^�Z�b�g�ɑ΂��ă��A���^�C�����̍����V�X�e����݌v�E�������邱�Ƃ�����ΎQ�l�ɂȂ�̂�������Ȃ��B

�i��IT �������j

�������񂹂��������F

Coding Edge �t�H�[���� �V���L��
��IT���[���}�K�W���@�V������X�^�b�t�̃R���������[���œ͂��܂��i�����j

�L�����A�A�b�v

- PR -

���ڂ̃e�[�}

�\�����[�V����FLASH
"); adremove.push(adstrtmp[adstart]); } } for(var i = 0; i < adremove.length; i++){ adremove[i].parentNode.removeChild(adremove[i]); } adstr.sort().reverse(); adstr = adstr.join(""); return adstr; }

�uITmedia �}�[�P�e�B���O�v�V���L��

�e���rCM��SNS�L���A�ǂ��炪�L���H�@�A�v���̃C���X�g�[���ɂ‚Ȃ���{��́c�c
Repro�̓X�}�[�g�t�H�����[�U�[1236�l��ΏۂɁu���o�C���A�v���̃C���X�g�[�����Ԓ����v...

�u�o�����[�G�R�m�~�[�v����𐶂��c�邽�߂̐헪�Ƃ́H
���i��T�[�r�X���ڋq�ɂ����炷���l�Ǝ��v�����ڂɌ��т‚����u�o�����[�G�R�m�~�[�v��...

�}�[�P�^�[500�l�ɕ������uSEO�̍ŐV�g�����h�v�@�����{��ƊO���{�􂻂ꂼ��̒��̓|�C���g�́H
��Ƃ͓����{��ƊO���{����ǂ̂悤�ɑg�ݍ��킹�Č��ʓI��SEO�헪��W�J���Ă���̂��B