![]() |
Модераторы: LSD |
![]() ![]() ![]() |
|
Vasay |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2097 Регистрация: 8.3.2006 Репутация: нет Всего: 73 |
Есть у меня такая информация:
имя человека дата доп информация. Записей 150 миллионов. Нужно делать селекты: Вывести все записи по имени, или по дате. Думаю имя стоит хешировать в инт и искать по инту. Вопрос - какое железо мне надо для решения этой задачи? И как оптимально спроектировать базу и запросы, чтоб получить максимальную производительность? И какую БД вообще выбрать для этой задачи? Может какая-то конкретная лучше адаптирована для решения подобных задач? -------------------- Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны. |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 3 Всего: 329 |
все - это в смысле все 150 миллионов записей показать на клиенте?? Добавлено через 4 минуты и 28 секунд Я бы выбрал oracle или mssql. Хотя не знаю, может и firebird подойдёт. Тебе нужно однозначно выбирать серверную системную плату с hardware`ным raid контроллером. Выбрать винчестер. |
|||
|
||||
Vasay |
|
||||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2097 Регистрация: 8.3.2006 Репутация: нет Всего: 73 |
Akella,
Не не сразу 150 миллионов, а с условием зависящим от имени и даты.
Спасибо - пошел изучать вопрос.
А можно немного аргументов? -------------------- Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны. |
||||||
|
|||||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 3 Всего: 329 |
Ну oracle или mssql достаточно мощные и серъёзные СУБД. А firebird ещё и кроссплатформенная.
|
|||
|
||||
DimW |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1330 Регистрация: 24.2.2005 Где: Орёл Репутация: 2 Всего: 44 |
точно так же как и Оракл. а ты уверен что тебе вообще СУБД нужна? Если да то ИМХО это должно быть безплатно и просто, mySQL возможно подойдет. Хранение одной таблицы из трех полей задача ну ни как не MsSQL и Oracle. |
|||
|
||||
Vasay |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2097 Регистрация: 8.3.2006 Репутация: нет Всего: 73 |
Я с этим тоже согласен ![]() Просто я думал, что, возможно, из-за каких-нибудь (неизвестных мне) архитектурных особенностей одна база данных будет иметь преимущества над другой в моей задаче... Если нет, то я, пожалуй, остановлю свой выбор на любимой мной PostgreSQL. Остался вопрос с железом. Сейчас решил потестить на своем ноутбуке (AMD x2 tl60, 2Gb озу) - посмотрю что будет (в данный момент вгоняю дамп базы) -------------------- Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны. |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 3 Всего: 329 |
Постгрес умеет работать с многоядерными процессорами ли с несколькими процессорами?
|
|||
|
||||
Vasay |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2097 Регистрация: 8.3.2006 Репутация: нет Всего: 73 |
Akella,
Умеет. -------------------- Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны. |
|||
|
||||
Vasay |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2097 Регистрация: 8.3.2006 Репутация: нет Всего: 73 |
Вот думаю, стоит ли объединять винчи в RAID-0 если ОЗУ будет больше чем размер базы?
Может от греха подальше в RAID 1. Много ли я потеряю в скорости? -------------------- Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны. |
|||
|
||||
Vasay |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2097 Регистрация: 8.3.2006 Репутация: нет Всего: 73 |
Вообщем, поигрался на своей машине (на MySQL - т.к. она у меня уже была установлена).
К сожалению вставка дампа при установленном индексе (char(16) на строку char(32), полученную, как md5 от строки в нижнем регистре) шла очень медленно. Вставил 15 миллионов записей за сутки (без индекса вставил 70 миллионов за час, индекс делает уже восьмой час...). Поиск по char(32) в базе с 15 миллионами записей занимал сотые доли секунды (при наличие индекса). Сервер решил взять самый мощный, из тех что были: Core 2 Quad, 2x500 GB, 8 GB. Надеюсь, поиск будет достаточно быстрый. Такой конфиг сразу отбрасывает следующие ДБ (всвязи с тем, что платить за БД я, пока, не хочу): 1. Oracle Database 10g Express Edition т.к. XE will store up to 4GB of user data, use up to 1GB of memory, and use one CPU on the host machine. 2. IBM DB2 Express-C т.к. Processor: 2 cores, Memory: 2 GB 3 MsSQL 2005 (по 2008 инфы по ограничениям не нашел :-( ) т.к. SQL Server Express ориентирован на простые приложения и поддерживает только один процессор и 1 Гб оперативной памяти, размер базы данных ограничен 4 Гб. + За win на сервере надо платить (25$ или 35$ в месяц в зависимости от версии) И так, выбор сейчас такой - 1. PostgreSQL 2. MaxDB 3. MySQL Вопрос такой - что будет быстрее для моей простой задачи - селекта из простенькой таблички, но с большим количеством записей? Кстати, у этих бд нет никаких ограничений? -------------------- Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны. |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 3 Всего: 329 |
А разве мускул абсолютно бесплатный?
|
|||
|
||||
DimW |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1330 Регистрация: 24.2.2005 Где: Орёл Репутация: 2 Всего: 44 |
в сложившейся ситуации о мускуле как о "перспективе" теперь говорить сложно: тынц на самом деле думал что безплатно. |
|||
|
||||
Vasay |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2097 Регистрация: 8.3.2006 Репутация: нет Всего: 73 |
DimW,
Абсолютно. Он не бесплатен только в случае, если вы хотите включить его код в свое приложение и хотите закрыть его код, т.е. не согласны с лицензией GPL.
Мда, интересная новость. Хотя мускул продукт открытый, убить его не так просто. -------------------- Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны. |
||||
|
|||||
DimW |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1330 Регистрация: 24.2.2005 Где: Орёл Репутация: 2 Всего: 44 |
||||
|
||||
Poseidon |
|
|||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: нет Всего: 133 |
Vasay, Оракл используй. 150 миллионов - это уже промышленные размеры (кстати, где ты столько набрал?). Тут не имеет значения что табличка простенькая. SELECT в любой БД будет быстрым, а вот вставка и переиндексация... Я бы Oracle выбрал.
-------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
|||
|
||||
Vasay |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2097 Регистрация: 8.3.2006 Репутация: нет Всего: 73 |
Блин 24 часа прошло, а индекс еще не сделан :-( (это на моем буке и MySQL)
Добавлено @ 11:26 Poseidon, Мне не нужна ни вставка ни переиндексация. База будет просто периодически заменятся на новую. Мне просто нужен очень быстрый селект.
Чуть попозже скажу ![]()
Я так подумал - мне дешевле будет иметь кластер с каким-нибудь PostgreSQL чем купить лицензию на оракл. Для того что бы задействовать на полную тот сервер который я сейчас взял, мне надо купить лицензию за 17,500$ Я к этому немного не готов. Это сообщение отредактировал(а) Vasay - 22.4.2009, 11:28 -------------------- Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны. |
||||
|
|||||
Poseidon |
|
|||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: нет Всего: 133 |
-------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
|||
|
||||
Vasay |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2097 Регистрация: 8.3.2006 Репутация: нет Всего: 73 |
Poseidon,
Эта база - справочник, сохраняющий свою актуальность в течении года. Предоставляется она в виде текстового файла. У меня есть программа которая читает этот файл, дополняет информацией из другой базы и делает SQL дамп. Раз в год могу и на профилактику закрыться для обновления базы. 17,500$ за лицензию на Oracle - для меня не реально! -------------------- Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны. |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 3 Всего: 329 |
||||
|
||||
Vasay |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2097 Регистрация: 8.3.2006 Репутация: нет Всего: 73 |
Akella,
Я писал выше: Core 2 Quad, 2x500 GB, 8 GB. А в отличие от IBM у которой с 2006 года лицензии считаются "per unit" а не "per core". У Oracle немного сложнее Правда я ошибся у Oracle для интеловских многоядерных процессоров множетель 0,5 т.е. Core 2 Quad приравнивается к двухпроцессорной системе, а не 4х. И мне бы хватило Oracle Database 10g Standard Edition One http://www.oracle.com/global/ru/ip/10g/database/index.html Цена 5,800$ Добавлено через 6 минут и 9 секунд Хотя, нет... все немного хуже http://www.oracle.com/global/ru/pdfs/tech/10gseone.pdf
т.е. 4995*2 = 9990$ -------------------- Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны. |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 3 Всего: 329 |
Так у тебя же один процессор, просто он многоядерный. Или считается каждое ядро?
|
|||
|
||||
Vasay |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2097 Регистрация: 8.3.2006 Репутация: нет Всего: 73 |
Akella,
Если я не ошибаюсь: У IBM считается каждый процессор. У oracle считается за ядро, но для прцессоров intel и amd количество ядер умножается на 0.5 т.е. если у меня 4 ядра, то я плачу как за 2 процессора. -------------------- Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны. |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 3 Всего: 329 |
Не знаю, ставил бы ты что-то бесплатное и не морочил то, что на Пасху красят.
|
|||
|
||||
Rififi |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1254 Регистрация: 9.3.2008 Репутация: нет Всего: 36 |
Vasay,
приоритетом является дисковая подсистема - от скорости её работы зависит всё остальное - если винты тормозят, тебя никакой оракл не спасёт для этого нужен аппаратный raid-контроллер и 4 sas hdd в рейде 0+1 цена вменяемого контроллера на 4 порта начинается от 400$, смотреть на Adaptec, Intel, 3Ware. |
|||
|
||||
Vasay |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2097 Регистрация: 8.3.2006 Репутация: нет Всего: 73 |
Akella,
Так на предыдущей странице я и сказал, что выбираю из бесплатных решений. Rififi, пока такой возможности нет. есть 2 диска. В raid 0 их объединить можно, но я пока не стал. Посмотрю насколько быстро будет работать без этого. Пока внес в базу 20мл записей - селект по md5 с индексом char(16) идет тысячные доли секунды. п.с. тестирую пока на MySQL 5.0.67-community (она уже была на сервере, когда мне его отдали) Это сообщение отредактировал(а) Vasay - 24.4.2009, 22:34 -------------------- Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны. |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 3 Всего: 329 |
а ОС какая?
|
|||
|
||||
Vasay |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2097 Регистрация: 8.3.2006 Репутация: нет Всего: 73 |
Akella,
CentOS с ядром 2.6.28 Самое интересное, что он 32х битный (i686) с поддержкой ОЗУ больше 4ГБ. Мне сказали что это будет лучше, чем x64. Честно - не знаю чем. Но настаивать на x64 не стал - админу виднее. 8 гигов система видит, top в данный момент (идет заполнение базы), говорит Mem: 8006868k total, 7756660k used, 250208k free, 56020k buffers -------------------- Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны. |
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 24 Всего: 538 |
Админ и DBA это два разных человека ![]() Не знаю как MySQL (я так понял ты его тестируешь?), но Oracle при наличии более 2-х Гб памяти, лучше использовать 64-х битный. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
Bikutoru |
|
|||
Увлекающийся ![]() ![]() Профиль Группа: Участник Сообщений: 522 Регистрация: 24.5.2005 Где: Москва Репутация: нет Всего: 22 |
А как ты вставляешь данные? Практика показывает, что самый быстрый способ вставки данных в MySQL - это LOAD DATA INFILE в пустую таблицу. Добавлено @ 08:51 Плюс можно с буферами поиграться: http://venublog.com/2007/11/07/load-data-infile-performance/ Это сообщение отредактировал(а) Bikutoru - 29.4.2009, 08:52 -------------------- Человек, словно в зеркале мир — многолик, Он ничтожен — и он же безмерно велик! Омар Хайям |
|||
|
||||
Vasay |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2097 Регистрация: 8.3.2006 Репутация: нет Всего: 73 |
Bikutoru,
Да данные я вставил быстро, после чего решил сделать индекс по одному столбцу - так и не сделал на ноуте. На сервере вставил уже всю базу, стал делать индекс - за 48 часов он его не сделал... Операцию отменил сейчас думаю что делать. -------------------- Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны. |
|||
|
||||
Bikutoru |
|
|||
Увлекающийся ![]() ![]() Профиль Группа: Участник Сообщений: 522 Регистрация: 24.5.2005 Где: Москва Репутация: нет Всего: 22 |
Я в таких случаях сливаю базу в текстовый файл через
После этого создаю новую таблицу с новыми индексами и вставляю туда данные через LOAD DATA INFILE. На сервере таким образом модифицировал таблицу c ~ 100 миллионами записей за 3-4 часа. -------------------- Человек, словно в зеркале мир — многолик, Он ничтожен — и он же безмерно велик! Омар Хайям |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Общие вопросы по базам данных" | |
|
Данный форум предназначен для обсуждения вопросов о базах данных не попадающих под тематику других форумов:
Данный форум не предназначен для:
Если вы не соблюдаете эти правила, не удивляйтесь потом не найдя свою тему/сообщение.
Полезные советы: Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, LSD, Zloxa. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | СУБД, общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |