| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > СУБД, общие вопросы > Как хранить 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 секунд А вообще с такими вопросами в битву экстрасенсов |
| Автор: LSD 21.11.2012, 15:37 |
| 3 миллиарда бит (и даже байт) можно хранить в оперативке. А так все зависит от того что за данные и что подразумевается под "быстрый" доступ. |
| Автор: 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 |
У тебя к букве "э" какая-то особая пристрасть или ты просто не грамотный? |