SlideShare ist ein Scribd-Unternehmen logo
1 von 15
Спасение 6 миллионов файлов
в условиях полного Хецнера
Или почему складывать файлы в
базу данных – не такая смешная
идея, как кажется на первый взгляд
Банальное окружение
• 300,000 пользователей
– 6 миллионов файлов
– Статический контент
– Несколько идентичных серверов отдачи,
обеспечивают отказоустойчивость и
горизонтальное масштабирование
– Файлы распределены по директориям для
ускорения поиска при открытии
Очевидные, но неожиданные
проблемы
• 6 млн файлов распределены по 6 млн
директорий – видимо, ошибка в проекте или
даже в коде
– Открытие каждой директории – одна операция
ввода-вывода
– Получение stat-информации о файле – еще одна
– Обход дерева – 12 млн операций IO
• Враг известен: иерархическая файловая
система
Неуправляемые данные
• Дисковый кэш малоэффективен – слишком
велик объем
• Обход дерева – 6 часов (кеширование все-
таки помогает)
• Синхронизация с помощью rsync – 20 часов
• Невозможно поддерживать актуальность
реплик традиционными средствами
Возможные решения
• Индексированные директории
– За
• просто и традиционненько
– Против
• Необходимость менять логику приложения
• Индексируются только имена
Возможные решения
• Распределенные файловые системы
– За
• Репликация происходит сама и сама поддерживает
свою актуальность
– Против
• Недостаточная производительность
• Сложность настройки
• Сложность добавления нод
Возможные решения
• СУБД
– За:
• Проверенные временем технологии
• Простота идеи
• Гибкое индексирование
– Против:
• Нетрадиционный подход
• Поведение на по настоящему больших объемах не
изучено
• То, что надо!
Два полюса в мире СУБД
• Key-value
– Созданы как раз под нашу задачу
– Должны быть быстрыми
• Реляционные
– Проверены временем
– Просты в настройке, управлении и отладке
Новое – значит падучее
– HyperTable как представитель KV-баз
– Быстр
– Гибок
– Но – падает на большом количестве мелких
вставок, из-за проблем с фрагментацией
памяти
Старый конь борозды не портит
• PostgreSQL как достойный представитель
реляционных СУБД
– Важно: stream-интерфейс к large objects
• Реализация прототипа
– PostgreSQL
– Apache+mod_perl
– Сотня строк кода
• А ведь оно работает!
Что это нам дает?
• Вся мета-информация, включая индексы –
2GB. Нет проблем с кэшем.
• «обход дерева» - 2 минуты
• Поиск новых – от миллисекунд до секунд
• Синхронизация – 100 в секунду. Чудес не
бывает.
• И кое-что задаром
– Дедупликация
– Версионность
И о производительности
• При 1000 одновременных соединений
• 1Gbps – загружен полностью
• 1200 запросов в секунду
• Потребление памяти – стабильное,
предсказуемое и управляемое.
• Загрузка CPU – 30%
• Загрузка дисков – до 10%
• Наработка на отказ – надоело тестировать
раньше, чем сломалось
Никому не интересно (siege results)
Сервер: 16GB RAM, 3.4GHz CPU 8 cores, 2 SATA HDDs in software mirror, 1GB NIC.
** SIEGE 2.70
** Preparing 1000 concurrent users for battle.
The server is now under siege...
Lifting the server siege... done.
Transactions: 143683 hits
Availability: 100.00 %
Elapsed time: 300.02 secs
Data transferred: 31969.32 MB
Response time: 1.58 secs
Transaction rate: 478.91 trans/sec
Throughput: 106.56 MB/sec
Concurrency: 755.62
Successful transactions: 143683
Failed transactions: 0
Longest transaction: 14.00
Shortest transaction: 0.00
Никому не интересно (siege results)
На совсем мелких файликах
** SIEGE 2.70
** Preparing 1000 concurrent users for battle.
The server is now under siege...
Lifting the server siege... done.
Transactions: 590178 hits
Availability: 100.00 %
Elapsed time: 299.45 secs
Data transferred: 5392.50 MB
Response time: 0.01 secs
Transaction rate: 1970.87 trans/sec
Throughput: 18.01 MB/sec
Concurrency: 12.07
Successful transactions: 590178
Failed transactions: 0
Longest transaction: 1.01
Shortest transaction: 0.00
Выводы
(которые мы сделали для себя)
• Планирование управления данными – это
важно
• Технологии каменного века – все еще
актуальны

Weitere ähnliche Inhalte

Was ist angesagt?

За счет чего Tarantool такой оптимальный / Денис Аникин (Mail.Ru)
За счет чего Tarantool такой оптимальный / Денис Аникин (Mail.Ru)За счет чего Tarantool такой оптимальный / Денис Аникин (Mail.Ru)
За счет чего Tarantool такой оптимальный / Денис Аникин (Mail.Ru)
Ontico
 
RTB DSP на языке Go: укрощение buzzwords
RTB DSP на языке Go: укрощение buzzwordsRTB DSP на языке Go: укрощение buzzwords
RTB DSP на языке Go: укрощение buzzwords
Daniel Podolsky
 
My talk on Docker, Youcon 2015
My talk on Docker, Youcon 2015My talk on Docker, Youcon 2015
My talk on Docker, Youcon 2015
Alex Chistyakov
 
Как устроен NoSQL, Андрей Аксенов (Sphinx)
Как устроен NoSQL, Андрей Аксенов (Sphinx)Как устроен NoSQL, Андрей Аксенов (Sphinx)
Как устроен NoSQL, Андрей Аксенов (Sphinx)
Ontico
 
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo). С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
Badoo Development
 

Was ist angesagt? (18)

On Docker
On DockerOn Docker
On Docker
 
My talk on Hadoop stack operations engineering at OSPCon
My talk on Hadoop stack operations engineering at OSPConMy talk on Hadoop stack operations engineering at OSPCon
My talk on Hadoop stack operations engineering at OSPCon
 
Кэширование данных в web приложениях. Использование memcached / Юрий Красноще...
Кэширование данных в web приложениях. Использование memcached / Юрий Красноще...Кэширование данных в web приложениях. Использование memcached / Юрий Красноще...
Кэширование данных в web приложениях. Использование memcached / Юрий Красноще...
 
За счет чего Tarantool такой оптимальный / Денис Аникин (Mail.Ru)
За счет чего Tarantool такой оптимальный / Денис Аникин (Mail.Ru)За счет чего Tarantool такой оптимальный / Денис Аникин (Mail.Ru)
За счет чего Tarantool такой оптимальный / Денис Аникин (Mail.Ru)
 
My talk at Highload++ 2015
My talk at Highload++ 2015My talk at Highload++ 2015
My talk at Highload++ 2015
 
HDD, SSD, RAM, RAID, и кого на ком кэшировать / Михаил Конюхов (Perfect Solut...
HDD, SSD, RAM, RAID, и кого на ком кэшировать / Михаил Конюхов (Perfect Solut...HDD, SSD, RAM, RAID, и кого на ком кэшировать / Михаил Конюхов (Perfect Solut...
HDD, SSD, RAM, RAID, и кого на ком кэшировать / Михаил Конюхов (Perfect Solut...
 
RTB DSP на языке Go: укрощение buzzwords
RTB DSP на языке Go: укрощение buzzwordsRTB DSP на языке Go: укрощение buzzwords
RTB DSP на языке Go: укрощение buzzwords
 
My talk on Docker, Youcon 2015
My talk on Docker, Youcon 2015My talk on Docker, Youcon 2015
My talk on Docker, Youcon 2015
 
Мониторинг и отладка MySQL: максимум информации при минимальных потерях
Мониторинг и отладка MySQL: максимум информации при минимальных потеряхМониторинг и отладка MySQL: максимум информации при минимальных потерях
Мониторинг и отладка MySQL: максимум информации при минимальных потерях
 
Как устроен NoSQL, Андрей Аксенов (Sphinx)
Как устроен NoSQL, Андрей Аксенов (Sphinx)Как устроен NoSQL, Андрей Аксенов (Sphinx)
Как устроен NoSQL, Андрей Аксенов (Sphinx)
 
Организация надежного резервного копирования веб-проекта. Практика и подводны...
Организация надежного резервного копирования веб-проекта. Практика и подводны...Организация надежного резервного копирования веб-проекта. Практика и подводны...
Организация надежного резервного копирования веб-проекта. Практика и подводны...
 
Погружение в виртуальную память и большие страницы / Константин Новаковский (...
Погружение в виртуальную память и большие страницы / Константин Новаковский (...Погружение в виртуальную память и большие страницы / Константин Новаковский (...
Погружение в виртуальную память и большие страницы / Константин Новаковский (...
 
My talk on HBase ops engineering at TBD Jun 2016
My talk on HBase ops engineering at TBD Jun 2016My talk on HBase ops engineering at TBD Jun 2016
My talk on HBase ops engineering at TBD Jun 2016
 
опыт построения и эксплуатации большого файлового хранилища
опыт построения и эксплуатации большого файлового хранилищаопыт построения и эксплуатации большого файлового хранилища
опыт построения и эксплуатации большого файлового хранилища
 
RTB DSP на языке Go укрощение buzzwords / Даниил Подольский (Qmobi.Com)
RTB DSP на языке Go укрощение buzzwords /  Даниил Подольский (Qmobi.Com)RTB DSP на языке Go укрощение buzzwords /  Даниил Подольский (Qmobi.Com)
RTB DSP на языке Go укрощение buzzwords / Даниил Подольский (Qmobi.Com)
 
Горизонтальное масштабирование: что, зачем, когда и как /Александр Макаров (Y...
Горизонтальное масштабирование: что, зачем, когда и как /Александр Макаров (Y...Горизонтальное масштабирование: что, зачем, когда и как /Александр Макаров (Y...
Горизонтальное масштабирование: что, зачем, когда и как /Александр Макаров (Y...
 
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo). С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
 
"Мы два месяца долбались, а потом построили индекс" (c) Аксенов
"Мы два месяца долбались, а потом построили индекс" (c) Аксенов"Мы два месяца долбались, а потом построили индекс" (c) Аксенов
"Мы два месяца долбались, а потом построили индекс" (c) Аксенов
 

Andere mochten auch

Golang в действии: Как нам удается писать highload приложение на (не?)подходя...
Golang в действии: Как нам удается писать highload приложение на (не?)подходя...Golang в действии: Как нам удается писать highload приложение на (не?)подходя...
Golang в действии: Как нам удается писать highload приложение на (не?)подходя...
Daniel Podolsky
 
NoSQL — неспроста ли это "ЖЖЖ"?
NoSQL — неспроста ли это "ЖЖЖ"?NoSQL — неспроста ли это "ЖЖЖ"?
NoSQL — неспроста ли это "ЖЖЖ"?
Daniel Podolsky
 
ночью через лес Stress-test пяти almost-the-same-functionality shared-nothin...
ночью через лес  Stress-test пяти almost-the-same-functionality shared-nothin...ночью через лес  Stress-test пяти almost-the-same-functionality shared-nothin...
ночью через лес Stress-test пяти almost-the-same-functionality shared-nothin...
Daniel Podolsky
 

Andere mochten auch (14)

Ryazan
RyazanRyazan
Ryazan
 
Golang в действии: Как нам удается писать highload приложение на (не?)подходя...
Golang в действии: Как нам удается писать highload приложение на (не?)подходя...Golang в действии: Как нам удается писать highload приложение на (не?)подходя...
Golang в действии: Как нам удается писать highload приложение на (не?)подходя...
 
Mysql vs postgresql
Mysql vs postgresqlMysql vs postgresql
Mysql vs postgresql
 
NoSQL — неспроста ли это "ЖЖЖ"?
NoSQL — неспроста ли это "ЖЖЖ"?NoSQL — неспроста ли это "ЖЖЖ"?
NoSQL — неспроста ли это "ЖЖЖ"?
 
Tk conf daniel-podolsky-sqlvsnosql
Tk conf daniel-podolsky-sqlvsnosqlTk conf daniel-podolsky-sqlvsnosql
Tk conf daniel-podolsky-sqlvsnosql
 
Go и fuse
Go и fuseGo и fuse
Go и fuse
 
ночью через лес Stress-test пяти almost-the-same-functionality shared-nothin...
ночью через лес  Stress-test пяти almost-the-same-functionality shared-nothin...ночью через лес  Stress-test пяти almost-the-same-functionality shared-nothin...
ночью через лес Stress-test пяти almost-the-same-functionality shared-nothin...
 
My talk at CEE-SECR 2016
My talk at CEE-SECR 2016My talk at CEE-SECR 2016
My talk at CEE-SECR 2016
 
Harry Potter and the Daemons of Berkeley
Harry Potter and the Daemons of BerkeleyHarry Potter and the Daemons of Berkeley
Harry Potter and the Daemons of Berkeley
 
My talk at LVEE 2016
My talk at LVEE 2016My talk at LVEE 2016
My talk at LVEE 2016
 
My talk at YouCon Saratov 2016
My talk at YouCon Saratov 2016My talk at YouCon Saratov 2016
My talk at YouCon Saratov 2016
 
My talk at Linux Piter 2015
My talk at Linux Piter 2015My talk at Linux Piter 2015
My talk at Linux Piter 2015
 
My talk at Linux Piter 2016
My talk at Linux Piter 2016My talk at Linux Piter 2016
My talk at Linux Piter 2016
 
Blazing Performance with Flame Graphs
Blazing Performance with Flame GraphsBlazing Performance with Flame Graphs
Blazing Performance with Flame Graphs
 

Ähnlich wie Спасение 6 миллионов файлов в условиях полного Хецнера

Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
Ontico
 
Hosting for forbes.ru_
Hosting for forbes.ru_Hosting for forbes.ru_
Hosting for forbes.ru_
drupalconf
 
Александр Соловьёв, Griddynamics.com
Александр Соловьёв, Griddynamics.comАлександр Соловьёв, Griddynamics.com
Александр Соловьёв, Griddynamics.com
Ontico
 
Frontera: распределенный робот для обхода интернета в больших объемах - Алекс...
Frontera: распределенный робот для обхода интернета в больших объемах - Алекс...Frontera: распределенный робот для обхода интернета в больших объемах - Алекс...
Frontera: распределенный робот для обхода интернета в больших объемах - Алекс...
it-people
 
ekbpy'2012 - Данила Штань - Распределенное хранилище
ekbpy'2012 - Данила Штань - Распределенное хранилищеekbpy'2012 - Данила Штань - Распределенное хранилище
ekbpy'2012 - Данила Штань - Распределенное хранилище
it-people
 
Aлександр Зайцев, LifeStreet
Aлександр Зайцев, LifeStreetAлександр Зайцев, LifeStreet
Aлександр Зайцев, LifeStreet
Ontico
 
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
Ontico
 
Mysql replication DevConf 2012
Mysql replication DevConf 2012Mysql replication DevConf 2012
Mysql replication DevConf 2012
Alex Chistyakov
 
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
IT-Portfolio
 
Практический опыт использования некоторых современных решений репликации MySQL
Практический опыт использования некоторых современных решений репликации MySQLПрактический опыт использования некоторых современных решений репликации MySQL
Практический опыт использования некоторых современных решений репликации MySQL
Alex Chistyakov
 
Как превратить Openstack Swift в хранилище для высоких нагрузок разных типов,...
Как превратить Openstack Swift в хранилище для высоких нагрузок разных типов,...Как превратить Openstack Swift в хранилище для высоких нагрузок разных типов,...
Как превратить Openstack Swift в хранилище для высоких нагрузок разных типов,...
Ontico
 
Олег Царев, Кирилл Коринский Сравнительный анализ хранилищ данных
Олег Царев, Кирилл Коринский   Сравнительный анализ хранилищ данныхОлег Царев, Кирилл Коринский   Сравнительный анализ хранилищ данных
Олег Царев, Кирилл Коринский Сравнительный анализ хранилищ данных
Siel01
 

Ähnlich wie Спасение 6 миллионов файлов в условиях полного Хецнера (20)

Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
 
Hosting for forbes.ru_
Hosting for forbes.ru_Hosting for forbes.ru_
Hosting for forbes.ru_
 
High load2007 scaling-web-applications-rus
High load2007 scaling-web-applications-rusHigh load2007 scaling-web-applications-rus
High load2007 scaling-web-applications-rus
 
Пётр Зайцев, Percona
Пётр Зайцев, PerconaПётр Зайцев, Percona
Пётр Зайцев, Percona
 
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
 
Александр Соловьёв, Griddynamics.com
Александр Соловьёв, Griddynamics.comАлександр Соловьёв, Griddynamics.com
Александр Соловьёв, Griddynamics.com
 
Frontera обход испанского интернета
Frontera обход испанского интернетаFrontera обход испанского интернета
Frontera обход испанского интернета
 
Frontera: распределенный робот для обхода интернета в больших объемах - Алекс...
Frontera: распределенный робот для обхода интернета в больших объемах - Алекс...Frontera: распределенный робот для обхода интернета в больших объемах - Алекс...
Frontera: распределенный робот для обхода интернета в больших объемах - Алекс...
 
ekbpy'2012 - Данила Штань - Распределенное хранилище
ekbpy'2012 - Данила Штань - Распределенное хранилищеekbpy'2012 - Данила Штань - Распределенное хранилище
ekbpy'2012 - Данила Штань - Распределенное хранилище
 
Aлександр Зайцев, LifeStreet
Aлександр Зайцев, LifeStreetAлександр Зайцев, LifeStreet
Aлександр Зайцев, LifeStreet
 
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
 
Где сегодня использовать ElasticSearch
Где сегодня использовать ElasticSearchГде сегодня использовать ElasticSearch
Где сегодня использовать ElasticSearch
 
Франкенштейнизация Voldemort или key-value данные в Одноклассниках. Роман Ан...
Франкенштейнизация Voldemort или key-value данные в Одноклассниках. Роман Ан...Франкенштейнизация Voldemort или key-value данные в Одноклассниках. Роман Ан...
Франкенштейнизация Voldemort или key-value данные в Одноклассниках. Роман Ан...
 
Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...
Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...
Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...
 
Mysql replication DevConf 2012
Mysql replication DevConf 2012Mysql replication DevConf 2012
Mysql replication DevConf 2012
 
Dennis Anikin - Tarantool Case Studies in Mail.Ru Group
Dennis Anikin - Tarantool Case Studies in Mail.Ru GroupDennis Anikin - Tarantool Case Studies in Mail.Ru Group
Dennis Anikin - Tarantool Case Studies in Mail.Ru Group
 
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
 
Практический опыт использования некоторых современных решений репликации MySQL
Практический опыт использования некоторых современных решений репликации MySQLПрактический опыт использования некоторых современных решений репликации MySQL
Практический опыт использования некоторых современных решений репликации MySQL
 
Как превратить Openstack Swift в хранилище для высоких нагрузок разных типов,...
Как превратить Openstack Swift в хранилище для высоких нагрузок разных типов,...Как превратить Openstack Swift в хранилище для высоких нагрузок разных типов,...
Как превратить Openstack Swift в хранилище для высоких нагрузок разных типов,...
 
Олег Царев, Кирилл Коринский Сравнительный анализ хранилищ данных
Олег Царев, Кирилл Коринский   Сравнительный анализ хранилищ данныхОлег Царев, Кирилл Коринский   Сравнительный анализ хранилищ данных
Олег Царев, Кирилл Коринский Сравнительный анализ хранилищ данных
 

Спасение 6 миллионов файлов в условиях полного Хецнера

  • 1. Спасение 6 миллионов файлов в условиях полного Хецнера Или почему складывать файлы в базу данных – не такая смешная идея, как кажется на первый взгляд
  • 2. Банальное окружение • 300,000 пользователей – 6 миллионов файлов – Статический контент – Несколько идентичных серверов отдачи, обеспечивают отказоустойчивость и горизонтальное масштабирование – Файлы распределены по директориям для ускорения поиска при открытии
  • 3. Очевидные, но неожиданные проблемы • 6 млн файлов распределены по 6 млн директорий – видимо, ошибка в проекте или даже в коде – Открытие каждой директории – одна операция ввода-вывода – Получение stat-информации о файле – еще одна – Обход дерева – 12 млн операций IO • Враг известен: иерархическая файловая система
  • 4. Неуправляемые данные • Дисковый кэш малоэффективен – слишком велик объем • Обход дерева – 6 часов (кеширование все- таки помогает) • Синхронизация с помощью rsync – 20 часов • Невозможно поддерживать актуальность реплик традиционными средствами
  • 5. Возможные решения • Индексированные директории – За • просто и традиционненько – Против • Необходимость менять логику приложения • Индексируются только имена
  • 6. Возможные решения • Распределенные файловые системы – За • Репликация происходит сама и сама поддерживает свою актуальность – Против • Недостаточная производительность • Сложность настройки • Сложность добавления нод
  • 7. Возможные решения • СУБД – За: • Проверенные временем технологии • Простота идеи • Гибкое индексирование – Против: • Нетрадиционный подход • Поведение на по настоящему больших объемах не изучено • То, что надо!
  • 8. Два полюса в мире СУБД • Key-value – Созданы как раз под нашу задачу – Должны быть быстрыми • Реляционные – Проверены временем – Просты в настройке, управлении и отладке
  • 9. Новое – значит падучее – HyperTable как представитель KV-баз – Быстр – Гибок – Но – падает на большом количестве мелких вставок, из-за проблем с фрагментацией памяти
  • 10. Старый конь борозды не портит • PostgreSQL как достойный представитель реляционных СУБД – Важно: stream-интерфейс к large objects • Реализация прототипа – PostgreSQL – Apache+mod_perl – Сотня строк кода • А ведь оно работает!
  • 11. Что это нам дает? • Вся мета-информация, включая индексы – 2GB. Нет проблем с кэшем. • «обход дерева» - 2 минуты • Поиск новых – от миллисекунд до секунд • Синхронизация – 100 в секунду. Чудес не бывает. • И кое-что задаром – Дедупликация – Версионность
  • 12. И о производительности • При 1000 одновременных соединений • 1Gbps – загружен полностью • 1200 запросов в секунду • Потребление памяти – стабильное, предсказуемое и управляемое. • Загрузка CPU – 30% • Загрузка дисков – до 10% • Наработка на отказ – надоело тестировать раньше, чем сломалось
  • 13. Никому не интересно (siege results) Сервер: 16GB RAM, 3.4GHz CPU 8 cores, 2 SATA HDDs in software mirror, 1GB NIC. ** SIEGE 2.70 ** Preparing 1000 concurrent users for battle. The server is now under siege... Lifting the server siege... done. Transactions: 143683 hits Availability: 100.00 % Elapsed time: 300.02 secs Data transferred: 31969.32 MB Response time: 1.58 secs Transaction rate: 478.91 trans/sec Throughput: 106.56 MB/sec Concurrency: 755.62 Successful transactions: 143683 Failed transactions: 0 Longest transaction: 14.00 Shortest transaction: 0.00
  • 14. Никому не интересно (siege results) На совсем мелких файликах ** SIEGE 2.70 ** Preparing 1000 concurrent users for battle. The server is now under siege... Lifting the server siege... done. Transactions: 590178 hits Availability: 100.00 % Elapsed time: 299.45 secs Data transferred: 5392.50 MB Response time: 0.01 secs Transaction rate: 1970.87 trans/sec Throughput: 18.01 MB/sec Concurrency: 12.07 Successful transactions: 590178 Failed transactions: 0 Longest transaction: 1.01 Shortest transaction: 0.00
  • 15. Выводы (которые мы сделали для себя) • Планирование управления данными – это важно • Технологии каменного века – все еще актуальны