HDD для звёздной навигации
Sep. 20th, 2011 07:29 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Во Вселенной сто миллиардов галактик, в каждой по сто миллиардов звёзд (±). Размеры Вселенной — 1.56×1011 световых лет, размеры галактики, кажем сто тысяч световых лет. Предположим, что нам достаточно точности в 0.00001 световой год (~0.5 ае).
Вариант 1. «Сквозная» навигация. Для хранения координат в каждом из трёх измерений потребуется 54 бита (log2 {размер Вселенной / точность}), всего 162 бита. Координаты для всех звёзд займут 14 733 814 Тб. Это примерно пять миллионов HDD по 3 Tb весом в 2500 тонн и стоимостью в миллиард долларов.
Вариант 2. Отдельно галактики, отдельно звёзды внутри галактик. Размер сетки для галактик можно положить в 100 000 св. л. Тогда для хранения координат галактик понадобятся 21-битные значения, всего 58 Гб. Для звёзд же понадобятся 32-битные значения, 9 Гб на галактику, всего 9 276 846 Тб на все звёзды во всех галактиках. Около трёх миллионов 3Tb HDD, полмиллиарда долларов, полторы тысячи тонн.
Второй вариант предпочтительнее. Можно подумать про дальнейшую оптимизацию:
- Не все галактики сферические (третья координата займёт меньше места). Вообще можно ввести несколько размерных групп.
- Звёзды в галактике разнесены неравномерно, как и галактики во Вселенной: можно ввести ещё несколько уровней типа «скопление», «сверхскопление» и т. п.
- Размер ячейки сетки для звёзд тоже можно увелчить, шансы что две звезды окажутся в пределах нескольких ае не так уж велики, и их можно выделить в особые случаи.
UPD. Пересчитал для полярных координат и с учётом того, что 70% галактик не сферические. Выигрыш минимальный: процентов пять.
no subject
Date: 2011-09-20 04:35 pm (UTC)no subject
Date: 2011-09-20 05:42 pm (UTC)Хрен нули на винт складировать?..
)))
no subject
Date: 2011-09-21 09:09 am (UTC)no subject
Date: 2011-09-21 04:53 pm (UTC)Вот есть у нас векторный рисунок, тот же набор точек. Так же не учитываются пустоты.
Архивируем раром - упс, легче в десяток раз.
То есть, имхо, и для вселенной можно найти алгоритм сжатия.
no subject
Date: 2011-09-21 04:57 pm (UTC)А с точками видимо я что-то не понял.
Каждая трёхкоординатная ячейка = звезде. Вероятно в потоке битов можно найти повторяющиеся последовательности и сжать их, но наверное только так?
no subject
Date: 2011-09-21 05:57 pm (UTC)Есть массив данных, мы его вполне можем сжать раром.
И винтов потребуется меньше.
Можно подобрать лучший алгоритм сжатия (не факт, что это рар будет) из имеющихся. Ещё меньше объём. Можно найти свой алгоритм,а-ля джепег для картинок, и ещё ужать.
Вот в идеале, при правильном алгоритме, нам понадобится 2-5% от расчётного кол-ва винтов.
no subject
Date: 2011-09-20 05:48 pm (UTC)Да уж, оптимизация. А потмо пидет специалист по СУБД и тонко намекнет, что неплохо бы все нафиг переделать, плюс добавиь индексные таблички и т. п. :)
no subject
Date: 2011-09-21 09:10 am (UTC)no subject
Date: 2011-09-20 06:04 pm (UTC)