Реклама на сайте Advertise with us

Open source models database

Расширенный поиск по форуму
 
Новая тема Новая тема   
Автор
Поиск в теме:



С нами с 28.04.08
Сообщения: 623
Рейтинг: 687

Ссылка на сообщениеДобавлено: 16/01/11 в 07:34       Ответить с цитатойцитата 

Хочу написать простой скрипт каталога моделей, скрипт будет свободным, куски кода буду выкладывать прям в этом топике as is , и т.к. я не проф.программер, а простой любитель скорее, будет здорово если более опытные коллеги будут немного направлять советом, или просто ссылкой хорошей, на явные ошибки укажут коли...

Ну а потенциальные пользователи сего могут тут писать о своих пожеланиях, постараюсь все учесть(в разумных пределах).

На данный момент проектирую базу данных, и немного запутался с primary , foreign keys, скажите плиз, правильно ли я создаю таблицы и их связь?
=========
Структура базы mysql
Код: [развернуть]

===============
Форма Add Model()
Код: [развернуть]



желающие могут предложить дополнительные поля, которые могут потребоваться данному скрипту, по вашему мнению.

Последний раз редактировалось: Ado.Blogs (16/01/11 в 12:20), всего редактировалось 4 раз(а)

0
 



С нами с 09.03.09
Сообщения: 6053
Рейтинг: 3538


Передовик Master-X (01.11.2009) Передовик Master-X (16.11.2009) Передовик Master-X (01.02.2011) Передовик Master-X (01.12.2011) Передовик Master-X (16.12.2011) Ветеран трепа Master-X (01.01.2014)
Ссылка на сообщениеДобавлено: 16/01/11 в 10:07       Ответить с цитатойцитата 

INNODB - это хорошо.
PRIMARY KEY (name) - это плохо, PRIMARY KEY (model_id) - лучше.
Вообще для первичных ключей не стоит выбирать поля, несущие смысловую нагрузку для пользователя. Это гарантирует что: ПК будет уникальным и не NULL. icon_smile.gif

5
 



С нами с 05.04.07
Сообщения: 1661
Рейтинг: 1090


Передовик Master-X (01.04.2011)
Ссылка на сообщениеДобавлено: 16/01/11 в 10:14       Ответить с цитатойцитата 

ты БД прямо из ПХП проектируешь чтоли icon_surprised.gif Посмотри в сторону mysql workbench, или профессиональных сред проектирования вроде errwin или чего-нибудь подобного


З.Ы. Зачем ты это делаешь я спрашивать не буду icon_cool.gif

True хостинг

5
 



С нами с 28.04.08
Сообщения: 623
Рейтинг: 687

Ссылка на сообщениеДобавлено: 16/01/11 в 10:31       Ответить с цитатойцитата 

Yacc:

то есть делаю первое поле в первой таблице models_id с авто инкрементом
это будет типа так называемый суррогатный ПК, правильно?

а уже в остальных таблицах modelname делаю INT, и правлю FOREIGN KEY (modelname) REFERENCES models (models_id) таким образом.

я все правильно понял? теперь ПК будут в порядке, и база поменьше объемом...

taj: пару-пяток таблиц уж как нибудь в голове спроектировать можно.

0
 



С нами с 24.10.04
Сообщения: 18881
Рейтинг: 9010


Передовик Master-X (16.03.2006) Передовик Master-X (01.04.2006) Передовик Master-X (16.04.2006) Передовик Master-X (01.05.2006) Передовик Master-X (01.11.2006) Ветеран трепа Master-X ()
Ссылка на сообщениеДобавлено: 16/01/11 в 11:31       Ответить с цитатойцитата 

Yacc писал:
INNODB - это хорошо.


ага, огромный проигрыш в производительности в данной базе smail101.gif

5
 



С нами с 09.03.09
Сообщения: 6053
Рейтинг: 3538


Передовик Master-X (01.11.2009) Передовик Master-X (16.11.2009) Передовик Master-X (01.02.2011) Передовик Master-X (01.12.2011) Передовик Master-X (16.12.2011) Ветеран трепа Master-X (01.01.2014)
Ссылка на сообщениеДобавлено: 16/01/11 в 11:41       Ответить с цитатойцитата 

Типа того. Про индексы не забудь. icon_smile.gif

5
 



С нами с 09.03.09
Сообщения: 6053
Рейтинг: 3538


Передовик Master-X (01.11.2009) Передовик Master-X (16.11.2009) Передовик Master-X (01.02.2011) Передовик Master-X (01.12.2011) Передовик Master-X (16.12.2011) Ветеран трепа Master-X (01.01.2014)
Ссылка на сообщениеДобавлено: 16/01/11 в 11:53       Ответить с цитатойцитата 

ibiz писал:
ага, огромный проигрыш в производительности в данной базе smail101.gif

Тут, как говорится, кто на что учился. Конечно за транзакционную целостность приходится платить, но выбирая между скоростью и надёжностью я выбираю надёжность.
А "тозрмоза" InnoDB это в 90% случаев ошибки проектирования базы и SQL-запросы, написанные уроженцами Индии. icon_smile.gif

5
 



С нами с 24.10.04
Сообщения: 18881
Рейтинг: 9010


Передовик Master-X (16.03.2006) Передовик Master-X (01.04.2006) Передовик Master-X (16.04.2006) Передовик Master-X (01.05.2006) Передовик Master-X (01.11.2006) Ветеран трепа Master-X ()
Ссылка на сообщениеДобавлено: 16/01/11 в 12:02       Ответить с цитатойцитата 

Yacc писал:
Тут, как говорится, кто на что учился. Конечно за транзакционную целостность приходится платить, но выбирая между скоростью и надёжностью я выбираю надёжность.
А "тозрмоза" InnoDB это в 90% случаев ошибки проектирования базы и SQL-запросы, написанные уроженцами Индии. icon_smile.gif


данный "простой скрипт каталога моделей" подразумевает основную нагрузку на SELECT

я вот сколько тестировал InnoDB, никак не смог даже приблизится к порядку быстродействия MyISAM smail101.gif

Yacc: можешь ли ты привести пример таблицы, индексов, и самих процедур по выборки данных из базы InnoDB с таймерами, чтоб можно было запустить тесты на своей машине?

5
 



С нами с 28.04.08
Сообщения: 623
Рейтинг: 687

Ссылка на сообщениеДобавлено: 16/01/11 в 12:10       Ответить с цитатойцитата 

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

0
 



С нами с 09.03.09
Сообщения: 6053
Рейтинг: 3538


Передовик Master-X (01.11.2009) Передовик Master-X (16.11.2009) Передовик Master-X (01.02.2011) Передовик Master-X (01.12.2011) Передовик Master-X (16.12.2011) Ветеран трепа Master-X (01.01.2014)
Ссылка на сообщениеДобавлено: 16/01/11 в 12:10       Ответить с цитатойцитата 

5
 



С нами с 09.03.09
Сообщения: 6053
Рейтинг: 3538


Передовик Master-X (01.11.2009) Передовик Master-X (16.11.2009) Передовик Master-X (01.02.2011) Передовик Master-X (01.12.2011) Передовик Master-X (16.12.2011) Ветеран трепа Master-X (01.01.2014)
Ссылка на сообщениеДобавлено: 16/01/11 в 12:12       Ответить с цитатойцитата 

Ado.Blogs писал:
что бы немного остудить ваш спор.

Да тут не о чем спорить: если данные важны - InnoDB (или другой транзакционный двиг) и точка.

5
 



С нами с 24.10.04
Сообщения: 18881
Рейтинг: 9010


Передовик Master-X (16.03.2006) Передовик Master-X (01.04.2006) Передовик Master-X (16.04.2006) Передовик Master-X (01.05.2006) Передовик Master-X (01.11.2006) Ветеран трепа Master-X ()
Ссылка на сообщениеДобавлено: 16/01/11 в 12:23       Ответить с цитатойцитата 

Ado.Blogs писал:
что бы немного остудить ваш спор в контексте данного топика, скрипт будет создавать статичные файлы html, то есть нагрузка будет только при recompile файлов, ну при поиске еще может... так что нагрузка на SELECT я не думаю что будет велика.


ну допустим надо будет пересоздать 1000 страниц, один транзакционный селект займет ну допустим 1сек, итого надо будет потратить 1000 секунд только на пересоздание страниц smail101.gif

Yacc писал:
http://www.mysqlperformanceblog.com/2007/01/08/innodb-vs-myisam-vs-…ks-part-1/


ниочем не говорит, я же не из пальца высасываю проблему производительности, а на практике столкнулся и не смог достичь хороших результатов, возможно делаю что-то не так, хочу понять и разобраться что

я не говорю, что innodb говно или около того, сам пользую mariadb на высоконагруженном проекте (~100к запросов минуту)

5
 



С нами с 09.03.09
Сообщения: 6053
Рейтинг: 3538


Передовик Master-X (01.11.2009) Передовик Master-X (16.11.2009) Передовик Master-X (01.02.2011) Передовик Master-X (01.12.2011) Передовик Master-X (16.12.2011) Ветеран трепа Master-X (01.01.2014)
Ссылка на сообщениеДобавлено: 16/01/11 в 13:00       Ответить с цитатойцитата 

ibiz писал:
я же не из пальца высасываю проблему производительности, а на практике столкнулся и не смог достичь хороших результатов...

Я отсюда не вижу откуда ты высасываешь проблему. icon_smile.gif
Показывай тогда конфиги, базу, индексы, запросы, логи...

5
 

www.phpdevs.com

С нами с 24.10.02
Сообщения: 16633
Рейтинг: 16105


Передовик Master-X (01.09.2005) Передовик Master-X (16.09.2005) Передовик Master-X (01.10.2005) Передовик Master-X (16.08.2006) Передовик Master-X (16.10.2006) Ветеран трепа Master-X ()
Ссылка на сообщениеДобавлено: 16/01/11 в 14:50       Ответить с цитатойцитата 

Цитата:
если данные важны - InnoDB (или другой транзакционный двиг) и точка.

Транзакции обычно при финансовых операциях используют, ну или в похожих системах учета. Использовать транзакции для базы моделей, это как ракету строить, что бы в магазин за пивком сгонять icon_smile.gif

К минусам innodb:
- если хостинг хренового качества, перегружен или дисковая система уныла, то потерять данные можно сразу и все кучей.
- на большом количестве данных, при постоянных выборках, гораздо медленнее myisam.

И вообще для open source код надо выкладывать не в топике, а где нибудь на гугл коде, где нормальный контроль версий и прочее icon_smile.gif

Пишу на php/mysql/django за вменяемые деньги.
Обращаться в личку.

5
 



С нами с 09.03.09
Сообщения: 6053
Рейтинг: 3538


Передовик Master-X (01.11.2009) Передовик Master-X (16.11.2009) Передовик Master-X (01.02.2011) Передовик Master-X (01.12.2011) Передовик Master-X (16.12.2011) Ветеран трепа Master-X (01.01.2014)
Ссылка на сообщениеДобавлено: 16/01/11 в 15:15       Ответить с цитатойцитата 

Stek писал:
Транзакции обычно при финансовых операциях используют, ну или в похожих системах учета.

То есть там, где данные важны? Если да, то не вижу повода для сарказма, кроме как желание затеять холивар. smail101.gif

0
 

Чингачгук, вождь красноглазых

С нами с 14.05.04
Сообщения: 4744
Рейтинг: 1824

Ссылка на сообщениеДобавлено: 16/01/11 в 16:01       Ответить с цитатойцитата 

Я вечно это слышу тут - "MyISAM быстрее, и все тут".

И потом меня просят глянуть в код какого сайта, посмотреть, что тормозит - это, естественно, оказывается кривейший запрос. Работающий поверх MyISAM.

Дело все-таки обычно не в MyISAM vs InnoDB, а в прокладке между креслом и клавиатурой. Просто MyISAM, как у меня сложилось впечатление, относится менее критично к оптимизации запросов и тьюнингу самого MySQL. То есть распиздяйски написанный select без индексов человеком, который не представляет себе как дизайнить базу, innodb убьет там, где MyISAM еще будет как-то тянуть и выплевывать что-то после 20 секунд работы. Я уж не говорю о том, что значительная часть программеров понятия не имеет, какие типы индексов бывают у MySQL, чем отличаются и когда их применять надо.

Прошу не думать, что я на кого конкретно намекаю - у каждого из нас, конечно, опыт свой. Я только своим делюсь.

А так - по теме хороший топег свежий на SOF

http://stackoverflow.com/questions/20148/myisam-versus-innodb

0
 

www.phpdevs.com

С нами с 24.10.02
Сообщения: 16633
Рейтинг: 16105


Передовик Master-X (01.09.2005) Передовик Master-X (16.09.2005) Передовик Master-X (01.10.2005) Передовик Master-X (16.08.2006) Передовик Master-X (16.10.2006) Ветеран трепа Master-X ()
Ссылка на сообщениеДобавлено: 16/01/11 в 17:55       Ответить с цитатойцитата 

Цитата:
То есть там, где данные важны? Если да, то не вижу повода для сарказма, кроме как желание затеять холивар.

Ты в курсе что такое транзакция и для чего она используется ?
Если да, то объясни, зачем нужна транзакция при обновлении/вставки данных модели, даже если при этом задействовано несколько таблиц.


Цитата:
Дело все-таки обычно не в MyISAM vs InnoDB, а в прокладке между креслом и клавиатурой. Просто MyISAM, как у меня сложилось впечатление, относится менее критично к оптимизации запросов и тьюнингу самого MySQL.

Простой пример, есть таблица с 80к+ записей, там и тексты и числа, но выборка идет по паре числовых полей и дате, индексы везде есть. 95% там селекты. При большом числе запросов, это все отвечало медленно, иногда до 1 секунды на запрос. После конвертации в myisam , нагрузка сильно спала, выборка 0,1-0,2 секунды.

Х.з. конечно, можно сервер дополнительно тюнить, может там версия какая с багом или старая, но иногда нужны быстрые решения, нежели решение глобальной проблемы.

Но у меня личное мнение, что на небольшом числе записей с преобладающим числом SELECT запросов, myisam выгоднее, да и экономичнее по памяти выходит.

Пишу на php/mysql/django за вменяемые деньги.
Обращаться в личку.

0
 



С нами с 24.06.10
Сообщения: 2686
Рейтинг: 543

Ссылка на сообщениеДобавлено: 16/01/11 в 18:12       Ответить с цитатойцитата 

Ado.Blogs писал:
куски кода буду выкладывать прям в этом топике

ты серьёзно ?) имхо более правильнее баг треккер поднять для этого

removed by moderator

0
 



С нами с 09.08.09
Сообщения: 72
Рейтинг: 16

Ссылка на сообщениеДобавлено: 16/01/11 в 18:23       Ответить с цитатойцитата 

Это что за категории такие во втором коде, они должны автоматически браться на основе имени модели

0
 

Чингачгук, вождь красноглазых

С нами с 14.05.04
Сообщения: 4744
Рейтинг: 1824

Ссылка на сообщениеДобавлено: 16/01/11 в 18:50       Ответить с цитатойцитата 

Stek писал:

Простой пример, есть таблица с 80к+ записей, там и тексты и числа, но выборка идет по паре числовых полей и дате, индексы везде есть. 95% там селекты. При большом числе запросов, это все отвечало медленно, иногда до 1 секунды на запрос. После конвертации в myisam , нагрузка сильно спала, выборка 0,1-0,2 секунды.
Х.з. конечно, можно сервер дополнительно тюнить, может там версия какая с багом или старая, но иногда нужны быстрые решения, нежели решение глобальной проблемы.


Или просто писать нормально сразу. Я о чем - о том, что если действительно наличествует существенная разница в производительности в сторону MyISAM - ты просто что-то делаешь не так. Это такой вот rule of thumb.

Вот смотри - в данном случае ТС выделил для категории поле типа TINYTEXT. Ну ладно в его случае там статика генерится, так что как будет это в результате - не совсем понятно, но в 90% случаев люди так всегда делают, или похоже. Вместо того, чтобы вынести это в отдельную таблицу и сослаться по первичному ключу. Ну и таких кривостей полно везде и всегда, куда ни ткнись, и innodb, заточенный, простите за выражение, под педантов-архитекторов, будет чувствовать себя хуже. Тут ведь найдутся и люди, которые будут утверждать, что "база тормозит", а на самом деле наиболее высокопроизводительный способ - держать все в текстовых файлах. А все потому, что базой пользуются, подразумевая, что она должна сама по себе как-то вот так быстро работать, а в детали вдаваться не нужно. Вы меня понимаете, мистер Андерсон? icon_smile.gif

Никого не надеюсь переубедить, просто вечернее ворчание ))

0
 



С нами с 09.03.09
Сообщения: 6053
Рейтинг: 3538


Передовик Master-X (01.11.2009) Передовик Master-X (16.11.2009) Передовик Master-X (01.02.2011) Передовик Master-X (01.12.2011) Передовик Master-X (16.12.2011) Ветеран трепа Master-X (01.01.2014)
Ссылка на сообщениеДобавлено: 16/01/11 в 20:17       Ответить с цитатойцитата 

Stek писал:
Ты в курсе что такое транзакция и для чего она используется ?

В курсе - давно использую SQL Server с поддержкой транзакций на уровне языка. И вообще нетранзакционных баз не бывает. Это сказка для бедных. icon_smile.gif

А то, что ты там говоришь тормозило у тебя, так это тормозило у тебя.

0
 

www.phpdevs.com

С нами с 24.10.02
Сообщения: 16633
Рейтинг: 16105


Передовик Master-X (01.09.2005) Передовик Master-X (16.09.2005) Передовик Master-X (01.10.2005) Передовик Master-X (16.08.2006) Передовик Master-X (16.10.2006) Ветеран трепа Master-X ()
Ссылка на сообщениеДобавлено: 16/01/11 в 20:48       Ответить с цитатойцитата 

Цитата:
В курсе - давно использую SQL Server с поддержкой транзакций на уровне языка. И вообще нетранзакционных баз не бывает. Это сказка для бедных

Тогда зачем ты несешь хуйню, что по сравнению с myisam, innodb хорошо тем, что тут есть транзакции ? Ты уж определись в своих мыслях.

Цитата:
А то, что ты там говоришь тормозило у тебя, так это тормозило у тебя.

Спасибо КЭП smail101.gif

Пишу на php/mysql/django за вменяемые деньги.
Обращаться в личку.

0
 



С нами с 24.10.04
Сообщения: 18881
Рейтинг: 9010


Передовик Master-X (16.03.2006) Передовик Master-X (01.04.2006) Передовик Master-X (16.04.2006) Передовик Master-X (01.05.2006) Передовик Master-X (01.11.2006) Ветеран трепа Master-X ()
Ссылка на сообщениеДобавлено: 17/01/11 в 15:40       Ответить с цитатойцитата 

Yacc писал:
Я отсюда не вижу откуда ты высасываешь проблему. icon_smile.gif
Показывай тогда конфиги, базу, индексы, запросы, логи...


ок
дано 3 таблицы
names - действующие имена с присвоенными id
user_rank - ранк пользователя
data - внешняя независимая таблица по которой идет сверка и поиск отсутствующих в таблице 'names' пользователей с рейтингом больше 100
во каждой таблице записей ~10m
MyISAM работает быстрее InnoDB

Код: [развернуть]

0
 



С нами с 09.03.09
Сообщения: 6053
Рейтинг: 3538


Передовик Master-X (01.11.2009) Передовик Master-X (16.11.2009) Передовик Master-X (01.02.2011) Передовик Master-X (01.12.2011) Передовик Master-X (16.12.2011) Ветеран трепа Master-X (01.01.2014)
Ссылка на сообщениеДобавлено: 17/01/11 в 16:19       Ответить с цитатойцитата 

ibiz писал:
MyISAM работает быстрее InnoDB

На сколько быстре?

innodb_flush_logs_at_trx_commit = 1 ?

Так это, а зачем тебе InnoDB? Ведь MyISAM быстрее. icon_smile.gif

0
 



С нами с 24.10.04
Сообщения: 18881
Рейтинг: 9010


Передовик Master-X (16.03.2006) Передовик Master-X (01.04.2006) Передовик Master-X (16.04.2006) Передовик Master-X (01.05.2006) Передовик Master-X (01.11.2006) Ветеран трепа Master-X ()
Ссылка на сообщениеДобавлено: 17/01/11 в 16:37       Ответить с цитатойцитата 

Yacc писал:
На сколько быстре?
innodb_flush_logs_at_trx_commit = 1 ?

быстрее на порядок, 30сек против 300сек...

Цитата:

innodb additional mem pool size 2,097,152
innodb autoextend increment 8
innodb buffer pool awe mem mb 0
innodb buffer pool size 16,777,216
innodb checksums ON
innodb commit concurrency 0
innodb concurrency tickets 500
innodb data file path ibdata1:10M:autoextend
innodb data home dir
innodb adaptive hash index ON
innodb doublewrite ON
innodb fast shutdown 1
innodb file io threads 4
innodb file per table OFF
innodb flush log at trx commit 1
innodb flush method
innodb force recovery 0
innodb lock wait timeout 50
innodb locks unsafe for binlog OFF
innodb log arch dir
innodb log archive OFF
innodb log buffer size 8,388,608
innodb log file size 5,242,880
innodb log files in group 2
innodb log group home dir ./
innodb max dirty pages pct 90
innodb max purge lag 0
innodb mirrored log groups 1
innodb open files 300
innodb rollback on timeout OFF
innodb support xa ON
innodb sync spin loops 20
innodb table locks ON
innodb thread concurrency 8
innodb thread sleep delay 10,000
innodb use legacy cardinality algorithm ON


Yacc писал:
Так это, а зачем тебе InnoDB? Ведь MyISAM быстрее. icon_smile.gif


мне InnoDB нужен для больших баз icon_smile.gif

0
 
Новая тема Новая тема   

Текстовая реклама в форме ответа
Заголовок и до четырех строчек текста
Длина текста до 350 символов
Купить рекламу в этом месте!


Перейти:  



Спонсор раздела Стань спонсором этого раздела!

Реклама на сайте Advertise with us

Опросы

Рецепт новогоднего блюда 2022



Обсудите на форуме обсудить (11)
все опросы »