Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > СУБД, общие вопросы > Как хранить 3 миллиарда записей


Автор: SneG0K 20.11.2012, 22:30
И иметь быстрый доступ к ним?

Автор: Данкинг 20.11.2012, 22:58
А что именно за данные?

Автор: Akina 21.11.2012, 08:05
Вероятно, на быстрой дисковой подсистеме... более осмысленный на имеющейся информации дать трудновато.

Автор: Akella 21.11.2012, 13:54
SSD в RAID массиве?

Добавлено через 28 секунд
Читай до конца
http://www.sql.ru/forum/actualthread.aspx?tid=825919

Добавлено через 1 минуту и 13 секунд
А вообще с такими вопросами в битву экстрасенсов  smile 

Автор: LSD 21.11.2012, 15:37
3 миллиарда бит (и даже байт) можно хранить в оперативке.  smile 
А так все зависит от того что за данные и что подразумевается под "быстрый" доступ.

Автор: Akella 22.11.2012, 12:53
Одна запись, как правило, это далеко не 1 байт.

Автор: tzirechnoy 22.11.2012, 18:12
(Пожав плечами) Если считать, что у Вас будет 100 байт в среднем на запись, и для идэнтификацыи конкретной записи будет достаточно информацыи из одного поля, и по этому полю будет организован индэкс типа B-Tree с размером записи индэкса в 20 байт -- то Вам потребуется 3000000000*(100+20) = 360000000000 B = 360000000000/1000000000 GB = 360 GB места на жёстком диске. Если считать размер страницы в 8 KiB, то на страницэ индэкса будет около 400 записей, а в среднем для поиска записи потребуется прочитать log_400(3000000000) = 3.64... страницы. Ещё потребуется прочитать страницу с самой записью, плюс можно немного накинуть на накладный расходы файловой системы -- в общем, придётся читать около 5 страниц. Страницы будут распределены достаточно произвольно по диску (и читаться строго последовательно -- так как каждая следующая требует прочтённой предыдущей), но каждая из них скорее всего будет лежать в соседних секторах, так что, скорее всего, каждая страница будет читаться с HDD примерно время, соответствующее среднему времени позицыонирования головки диска (время на чтение нескольких последовательных секторов пренебрежымо мало по сравнению с временем позицыонирования) -- или, при среднем времени позицыонирования невыдающихся жёстких дисков в 3-4 мс -- это будет 15-20 мс на одну запись.
Это нижэ Раскинских 50мс как времени реакцыи, которая считается "мгновенной" и дажэ не вышэ моих личных 20мс, на которых я точно не могу различить два последовательных события. Таким образом, для человека такая скорость доступа можэт оцэниваться как очень быстрая.

Так что для хранения и быстрого доступа к записям поштучно при указанных предположэниях (размер записи, наличие используемого индэкса, выборка по одной, использование одним человеком в каждый момент времени) -- подойдёт дажэ довольно слабый современный офисный компьютэр.

Автор: Akella 25.11.2012, 02:05
Цитата(tzirechnoy @  22.11.2012,  18:12 Найти цитируемый пост)
 нижэ


Цитата(tzirechnoy @  22.11.2012,  18:12 Найти цитируемый пост)
дажэ


Цитата(tzirechnoy @  22.11.2012,  18:12 Найти цитируемый пост)
идэнтификацыи


Цитата(tzirechnoy @  22.11.2012,  18:12 Найти цитируемый пост)
оцэниваться


Цитата(tzirechnoy @  22.11.2012,  18:12 Найти цитируемый пост)
можэт


Цитата(tzirechnoy @  22.11.2012,  18:12 Найти цитируемый пост)
предположэниях


Цитата(tzirechnoy @  22.11.2012,  18:12 Найти цитируемый пост)
индэкса


Цитата(tzirechnoy @  22.11.2012,  18:12 Найти цитируемый пост)
дажэ


Цитата(tzirechnoy @  22.11.2012,  18:12 Найти цитируемый пост)
компьютэр



У тебя к букве "э" какая-то особая пристрасть или ты просто не грамотный?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)