Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Метод хранения информации 
V
    Опции темы
SoWa
Дата 22.2.2011, 08:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Харекришна
****


Профиль
Группа: Комодератор
Сообщений: 2422
Регистрация: 18.10.2004

Репутация: 6
Всего: 74



Привет, друзья!
Обращаюсь за советом, так как самостоятельно ничего не придумывается, а готовые решения в виде файлов не очень устраивают.

Задача: придумать, как хранить в БД типа MSSQL трехмерный массив размером минимум 1кк*1кк*2000 по ячеечкам - чтобы к каждой был доступ легкий  smile 

Есть какие-нибудь мысли?


--------------------
Всем добра smile
PM MAIL ICQ   Вверх
panter
Дата 22.2.2011, 10:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 10.1.2011
Где: Санкт-Петербург

Репутация: нет
Всего: нет



Код
CREATE TABLE some_table (cell_x INTEGER, cell_y INTEGER, cell_z INTEGER, cell_value INTEGER);

И навешиваешь индексы на cell_x, cell_y, cell_z.
PM MAIL ICQ Skype Jabber   Вверх
Silent
Дата 22.2.2011, 10:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 252
Регистрация: 3.10.2006

Репутация: 1
Всего: 9



Согласен с panter, если работать с MSSQL, то создаем таблицу
Код

CREATE TABLE `Table` (
`ID1` INT NOT NULL ,
`ID2` INT NOT NULL ,
`ID3` INT NOT NULL ,
`Value` INT NOT NULL ,
INDEX ( `ID1` , `ID2` , `ID3` ) 
);


и юзаем на здоровье конкретную ячейку, например, a[0][0][0]
Код

SELECT Value FROM `Table`
WHERE ID1=0 AND ID2=0 AND ID3=0


Но доступ таким образом будет достаточно долгим, по сравнению с памятью. Где эти данные используются? Возможно, стоит применить распределенную обработку, или те же самые файлы для хранения массива поблочно. Может быть, уважаемая SoWa, скажете, какую задачу решаете - наверняка есть способ обрабатывать ваши данные быстрее, чем с хранением в SQL?
PM MAIL   Вверх
Akina
Дата 22.2.2011, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 454



Цитата(SoWa @  22.2.2011,  09:51 Найти цитируемый пост)
массив размером минимум 1кк*1кк*2000 

Т.е. 2*10^15 элементов? ты хорошо подумал? даже если предположить, что размер элемента 1 байт, это получится таблица на 2 петабайта... я уже даже не спрашиваю, где ты её хранить собираешься - как ты её получишь? даже тупо передача такого объёма с винта на винт (существуй такие винты) займёт несколько лет...
Или речь идёт о [censored] как разреженных данных? ну тогда хранить в структуре, описанной выше, а обрабатывать, наверное, в зависимости от целей либо напрямую, либо через OLAP.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
SoWa
Дата 25.2.2011, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Харекришна
****


Профиль
Группа: Комодератор
Сообщений: 2422
Регистрация: 18.10.2004

Репутация: 6
Всего: 74



О да, спасибо за советы!
Кстати, оказалось, высоты массива достаточно 100, а не 2000. Поэтому размер уменьшается до 100 терабайт  smile 
Хотя если там будет int, то 400 терабайт. Думаю, что 1кк это тоже многовато, и там можно будет в 10 или 100 раз порезать.


--------------------
Всем добра smile
PM MAIL ICQ   Вверх
миг
Дата 26.2.2011, 11:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 158
Регистрация: 15.9.2008

Репутация: нет
Всего: 1



 в С++  
int(16 разрядный)- принимает значения в диапазоне (-32768 до +32767). Занимает 2 байта памяти 
int(32 разрядный)- принимает значения в диапазоне (-2 147 483 648 до +2 147 483 647). Занимает 4 байта памяти.
вы действительно собираетесь пользоваться всем этим диапазоном чисел? Рекомендую вам определиться с максимальным и минимальным числом, который будет записываться в базу данных. Исходя из этого можно будет выбрать наименьший размер данных для  хранения информации. Возможно придется работать с битовыми полями.
--------------------
Oaks may fall when reeds stand the storm.
PM MAIL   Вверх
SoWa
Дата 26.2.2011, 12:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Харекришна
****


Профиль
Группа: Комодератор
Сообщений: 2422
Регистрация: 18.10.2004

Репутация: 6
Всего: 74



Хранимое значение от нуля до нескольких миллионов(ориентировочный максимум 40кк).
Но это планы на лето smile

Добавлено через 3 минуты и 29 секунд
Если на каждого пользователя выделять по 5Мб памяти, то это кубик стороной 173. Неплохо.


--------------------
Всем добра smile
PM MAIL ICQ   Вверх
Akina
Дата 26.2.2011, 19:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 454



Цитата(SoWa @  26.2.2011,  13:46 Найти цитируемый пост)
Если на каждого пользователя выделять по 5Мб памяти, то это кубик стороной 173

При 
Цитата(SoWa @  26.2.2011,  13:46 Найти цитируемый пост)
Хранимое значение от нуля до нескольких миллионов(ориентировочный максимум 40кк).

не 173, а 107. Как-то далековато от заявленных изначально миллионов...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
SoWa
Дата 26.2.2011, 20:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Харекришна
****


Профиль
Группа: Комодератор
Сообщений: 2422
Регистрация: 18.10.2004

Репутация: 6
Всего: 74



107, вероятно я ошибся.
Цитата(Akina @  26.2.2011,  19:52 Найти цитируемый пост)
Как-то далековато от заявленных изначально миллионов...

Пользователь не один ведь будет... Мильен - это на 10000 пользователей программа-максимум.


--------------------
Всем добра smile
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0552 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.