2013-03-20 3 views
2

Мне нужно создать приложение, которое «любит» в нем. Это означает, что человек с ID ID может понравиться товар с уникальный ID, но только раз. Предмет не может не понравиться. Я только придумал небольшой стол, в котором есть столбцы user_id и item_id, перед вставкой я должен проверить, понравился ли этот пользователь этому элементу. Мне кажется, что это не лучший способ выполнить задачу, потому что будет много (~ 1 миллион) пользователей и множество предметов, поэтому таблица должна быть довольно большой и это повлияет на поиск и скорость вставки. Есть ли другой подход к этому? Или, если мой метод подходит здесь, каков наилучший способ хранения этой информации в базе данных? В настоящее время я использую базу данных MySQL, лучше ли здесь использовать NoSql?Реализация функции «Мне нравится»

+2

Определите уникальный индекс на (user_id, item_id), чтобы наложить свое ограничение. Это более основано на наборе, поэтому n является иерархическим, поэтому SQL отлично подходит для реализации. –

ответ

2

Ну, первое, что нужно сделать, это установить «уникальное» ограничение на два столбца (в сочетании), чтобы их комбинация была уникальной. Не уверен, поддерживает ли MySQL это, но MSSQL уверенно делает, и вы можете иметь до 8 ГБ данных, поэтому миллион пользователей не приближается к своему пределу - хорошо масштабируется, если у вас более миллиона. Вы должны создать индекс покрытия на liker и понравиться и сделать его уникальным. С помощью 80 дополнений вставки будут мгновенными, а также поисковые запросы. Это реляционная проблема, поэтому реляционная база данных будет крепить любую нереляционную (NO SQL) базу данных для скорости и эффективности. вы не упомянули, понравился ли кто-то и понравился ли он кометущий - я думаю, не

Смежные вопросы