Профи, как бы вы спроектировали БД и сервер?

12
Петр Елагин
На сайте с 21.03.2007
Offline
197
#11

на VARCHAR(255) сразу можно остановиться!

с таким началом говорить о 20 000 000 пользователей даже не стоит, если вы поле ограничиваете 255 символами( у вас поле "обо мне " пользователя тоже будет 255 символов?)

Насчет поста вообще:

>> 1. 20 млн пользователей.

Что за пользователи ? это зарегистрированных пользователей или просто заходов?

>> 2. Информация о них - десяток полей, каждое из которых умещающается в VARCHAR(255)

о размере я уже отписал Выше, и я очень сомневаюсь, что вы уложитесь в 10 полей

>> 3. Одно фото каждого.

Аватар, или фотка ?

>> 4. Связи (кто у кого в друзьях)

ну а группы ? приватные например или группы друзей ? это будет ?

>> Всё.

хм ВСЕ?

>>Основные запросы - это поиск связей между двумя пользователями. (общие друзья).

1,2,3 уровня (рукопожатия)

Запросы кто будет делать? это будет на личной странице? или нужно показывать в реальном времени связи миллионов пользователей

О чем хотелось бы узнать Ваше мнение:

>> 1. Требования к серверу(ам)

какой трафик планируется на сервер ? все от трафика зависит и от того что вы хотите дать пользователям, какие услуги/сервисы - как часто они будут ими пользоваться

>> 2. Где лучше хранить картинки

на сервере =)

>> 3. Как организовать структуру БД

Если вы поклянетесь(естественно на крови =) ), что кроме таблицы пользователя таблицы связей ничего не будет, то вот вам структура:



/*==============================================================*/
/* Table: users */
/*==============================================================*/
create table users (
usr_id serial not null,
usr_descr varchar(1024) not null,
usr_email varchar(1024) not null,
usr_tel varchar(1024) null,
usr_is_enable boolean default false not null,
usr_pass varchar(1024) not null,
usr_image varchar(1024) null,
constraint pk_users primary key (usr_id)
);

comment on table users is
'users';

comment on column users.usr_id is
'Идентификатор пользователя';

comment on column users.usr_descr is
'Наименование';

comment on column users.usr_email is
'Емайл';

comment on column users.usr_tel is
'Телефон';

comment on column users.usr_is_enable is
'Зарегистрирован';

comment on column users.usr_pass is
'Пароль в мд5';

comment on column users.usr_image is
'одна картинка';



/*==============================================================*/
/* Table: users2users */
/*==============================================================*/
create table users2users (
u2u_id serial not null,
usr_parent_id bigint not null,
usr_child_id bigint not null,
constraint pk_users2users primary key (u2u_id)
);

comment on table users2users is
'users2users';

comment on column users2users.u2u_id is
'Идетификатор п к п';

comment on column users2users.usr_parent_id is
'главный';

comment on column users2users.usr_child_id is
'не главный';

/*==============================================================*/
/* Index: users2users_users_parent_fk */
/*==============================================================*/
create index users2users_users_parent_fk on users2users (
usr_parent_id
);

/*==============================================================*/
/* Index: users2users_users_child_fk */
/*==============================================================*/
create index users2users_users_child_fk on users2users (
usr_child_id
);

alter table users2users
add constraint fk_c_users2users_users_child foreign key (usr_child_id)
references users (usr_id)
on delete restrict on update restrict;

alter table users2users
add constraint fk_c_users2users_users_parent foreign key (usr_parent_id)
references users (usr_id)
on delete restrict on update restrict;


D
На сайте с 14.01.2007
Offline
153
#12

AlienZzzz, а с чего вы взяли, что ТС делает соц. сеть?

Петр Елагин
На сайте с 21.03.2007
Offline
197
#13
Dinozavr:
AlienZzzz, а с чего вы взяли, что ТС делает соц. сеть?

Рукопожатия меня на это натолкнули =)

ну если не соц сеть - то группы можно убрать ) - согласен

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий