|
|
|
Как лучше хранить номер телефона?
|
|||
|---|---|---|---|
|
#18+
Мля. Ну что значит "стандартное - нестандартное"? Какие проблемы будут, если я по нему буду искать? Грубо говоря, select some_shit from some_table where compressed_phone_number = to_compressed_phone('phone_number'), где to_compressed_phone - функция, возвращающая упакованную строку/число из полного телефонного номера. Не вижу сложности в таком поиске. P.S. Из сторонников FK есть хотя бы один практик с опытом реализации? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2005, 07:17 |
|
||
|
Как лучше хранить номер телефона?
|
|||
|---|---|---|---|
|
#18+
А никто нам и не мешает заюзать compressed_phone_number как FK!!! И при необходимости сделать справочник номеров, у которого ПК и есть compressed_phone_number. Я думаю здесь у некоторых людей проблемы с воображением, которые не могут себе представить номер телефона в виде целого числа. А одно из другого конвертируется в раз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2005, 11:05 |
|
||
|
Как лучше хранить номер телефона?
|
|||
|---|---|---|---|
|
#18+
> Из сторонников FK есть хотя бы один практик с опытом реализации? Да нет, конечно; где нам, тупым, базы данных проектировать. Так, погулять выходим и языком потрепать. Посмотреть, опять же, на нереальных гуру с нереальными объемами данных. Правда, остается неясным, кто и когда читал таким гуру курс проектирования, но - они ж уже по факту наличия объема данных гуру, так что чего ж их в нехорошем подозревать. > И при необходимости сделать справочник номеров, у которого ПК и есть > compressed_phone_number. Конечно. Стоя и в гамаке - оно куда как прикольнее. > Я думаю здесь у некоторых людей проблемы с воображением, которые не могут > себе представить номер телефона в виде целого числа. А одно из другого > конвертируется в раз. Ага. Проблемы и с числами, и с арифметикой, и со здравым смыслом. Вы можете внятно объяснить, _для какой цели_ придумывать извращения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2005, 13:12 |
|
||
|
Как лучше хранить номер телефона?
|
|||
|---|---|---|---|
|
#18+
guest_20040621, открой личико. Хамишь прилично, а что за этим хамством стоит, не понятно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2005, 14:04 |
|
||
|
Как лучше хранить номер телефона?
|
|||
|---|---|---|---|
|
#18+
2 Тигренок Петрик На шпагах, господа, на шпагах, но не на булавках Тартарен из Тараскона (с). Обсуждение техницких проблем перерастаеть в драку, однако... Хотя, я смысла в упаковывании такой мелочи, как телефонные номера - не вижу, не убедили 2 Гость из тьмы ... открой личико! Петруха (с) Присоединяюсь к Тигренку с сей просьбой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2005, 18:32 |
|
||
|
Как лучше хранить номер телефона?
|
|||
|---|---|---|---|
|
#18+
все предложения не читал но могу предложить :) упаковывать как ip в виде xxxx.xxxx.xxxx.xxxx ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2005, 19:01 |
|
||
|
Как лучше хранить номер телефона?
|
|||
|---|---|---|---|
|
#18+
Scott Tiger >Мля. Ну что значит "стандартное - нестандартное"? Стандартное это то что написано у Кодда, Дейта и пр. Упаковки я там не встречал. >Какие проблемы будут, если я по нему буду искать? Грубо говоря, select some_shit from some_table where compressed_phone_number = to_compressed_phone('phone_number'), где to_compressed_phone - функция, возвращающая упакованную строку/число из полного телефонного номера. Не вижу сложности в таком поиске. Найти все номера like '%324%' звонившие в последний месяц. Выкрутится можно, но зачем крутиться, если можно не крутиться. >P.S. Из сторонников FK есть хотя бы один практик с опытом реализации? Мне как-то приходилось связывать таблицы по FK. Вроде работает. Ну а если серьезно, то можно ответить хотя бы в общих чертах, какие отчеты предполагаются в системе? Может сразу все станет ясно. Например есть ли в базе информация о владельце номера и нужно ее хотя бы изредка светить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2005, 01:28 |
|
||
|
Как лучше хранить номер телефона?
|
|||
|---|---|---|---|
|
#18+
А зачем искать? Нет таких задач - искать номера like '%234%', звонившие в последний месяц. Ну нет в природе, и всё. Информация о владельце есть, разумеется. А что? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2005, 09:50 |
|
||
|
Как лучше хранить номер телефона?
|
|||
|---|---|---|---|
|
#18+
Короче говоря, есть задача писать таблицу-журнал. Тогда конечно не нужно никаких FK. Если нет FK: все сводится к одной операции записи номера телефона в таблицу. Если номер телефона еще и паковать при этом, то на выполнение операции упаковки придется затратить дополнительно несколько тактов процессора. И все. Если есть FK: Ищем значение PK в справочнике телефонов по номеру. Сначала читаем индекс - это в зависимости от длины таблицы и глубины индексного дерева 3, 4, 5 и более операций чтения. Потом читаем значение PK. Еще одна операция чтения. И только потом пишем в таблицу-журнал. Задача не используется для анализа! Это чистой воды OLTP. В свете этого решение Scott Tiger - правильное. Кстати, параллельным процессом таблица-лог может разбираться, данные могут перекладываться в сколь угодно сложную структуру данных, но эта структура к рассматриваемой нами сейчас задаче никакого отношения не имеет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2005, 10:04 |
|
||
|
Как лучше хранить номер телефона?
|
|||
|---|---|---|---|
|
#18+
номеров с ведущими нулями мало (по сравнению с остальными). можно хранить так: 00700 -> (700*10+2(количество нулей)) * (-1) = -7002 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2005, 10:05 |
|
||
|
Как лучше хранить номер телефона?
|
|||
|---|---|---|---|
|
#18+
2 Scott Tiger >А зачем искать? Нет таких задач - искать номера like '%234%', звонившие в последний месяц. Ну нет в природе, и всё. Так расскажите какие есть. А вообще задачи имеют свойство рождаться в голове у начальства во время разработки системы. :) >Информация о владельце есть, разумеется. А что? А как Вы ее будете привязывать к журналу? Раз есть информация о владельце, то ее рано или поздно (скорее рано) нужно будет показывать в отчетах. Т.е. от связывания таблиц не уйти и в случае сколь угодно хитрой упаковки телефона. Но тогда роль ФК будет играть этот упакованный номер. Так зачем мучиться, возьмите integer в качестве ID, привяжите к нему номер телефона, владельца т.д., а в журнал пишите этот integer. И места меньше и работать будет не хуже, раз связываение все равно есть в любом случае. Вообще непонятно о чем разговор, стандартная задача, тем более что сервер у Вас взрослый. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2005, 11:05 |
|
||
|
Как лучше хранить номер телефона?
|
|||
|---|---|---|---|
|
#18+
О том и речь - зачем мне оверхед от наличия справочника, когда номер я в явном виде храню во всех таблицах. Но в таблице связки, условно, номера и абонента также будет хранится упакованный номер телефона и id абонента. Для соблюдения консистентности можно, как я и писал выше, создать справочник, в котором PK будет упакованный номер телефона, и навешивать констрейнты по необходимости. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2005, 11:27 |
|
||
|
Как лучше хранить номер телефона?
|
|||
|---|---|---|---|
|
#18+
Приведу два, как я считаю, весомых аргумента в пользу хранения телефонов как есть, т.е. без справочника: 1. справочник должен существовать заранее, что сами понимаете или невозможно или приводит к неадекватным наладным расходам 2. полный номер телефона для тарификации нуждается в разборе, как то код страны, код региона, собственно телефон ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2005, 11:50 |
|
||
|
Как лучше хранить номер телефона?
|
|||
|---|---|---|---|
|
#18+
> guest_20040621, открой личико. Ник - вполне достаточный персональный идентификатор. Рекомендации, рецензии и вакансии мне без надобности, так что давайте обходиться тем, что есть. По существу возражения будут? > а что за этим хамством стоит, не понятно... Ну, хамства-то как раз и в помине не было. Количество моих знаний Вам показалось недостаточным для контактов? ОК, нет проблем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2005, 12:11 |
|
||
|
Как лучше хранить номер телефона?
|
|||
|---|---|---|---|
|
#18+
UrriЕсли есть FK: Ищем значение PK в справочнике телефонов по номеру. Сначала читаем индекс - это в зависимости от длины таблицы и глубины индексного дерева 3, 4, 5 и более операций чтения. Потом читаем значение PK. Еще одна операция чтения. И только потом пишем в таблицу-журнал. Можно еще упростить. Сначала запаковать (запаковать проще, чем искать в индексе по справочнику) в инт, а потом писать в таблицу-журнал. Сделать ПК запакованный номер, т.е. инт. А распакованый вообще не держать. Запаковать в unsigned int: 32 бита делим на два куска. Первый два бита - код первой цифры (здесь делаем ущемление прав и кодируем только 4 возможных варианта, закладывается заранее). Второй кусок - 30 бит, им кодируем 9 цифр номера. Да использовать инт тоже нехорошо, а вдруг так получится, что все возможные номера будут в системе, что тогда делать-то? Никакой справочник не спасет. Если не нравится ущемление, то можно вынести первую цифру в отдельное поле и сделать ключ составным, но это уже изврат. Можно использовать в качестве хранилища binary(5) - здесь никаких ущемлений диапазонов не будет, и ПК будет простым. Но поскольку, вероятно определять код страны и т.д. То для улучшения выборок можно сделать это поле составным. binary(3) - для хранения только номера (7 цифр), smallint(2) - для хранения префикса(3 цифр). Более того, в этот smallint можно еще засунуть кол-во впередиидущих нулей: 10 бит - префикс, 2 бит - кол-во нулей, 4 бит - резерв.... А можно забить на это делать и сделать стринг(10)+ПК инт(4). К этому вырастет нагрузка на справочник, т.к. постоянно будет дергаться для того, чтобы выяснить, а какой же ID у такого-то номера... А дергать справочник(чтение памяти, индекса, диска) - это гораздо хуже, чем произвести чистый бинарный расчет(проц и всё). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2005, 12:33 |
|
||
|
Как лучше хранить номер телефона?
|
|||
|---|---|---|---|
|
#18+
а нельзя просто в начало цифирь добавить? ну девятку, к примеру? Т.о.: 00100 ->900100 100->9100 получим не 10 цифр, а 11. Невелика разница. А когда надо узнать номер, девятку отбросим. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2005, 15:43 |
|
||
|
Как лучше хранить номер телефона?
|
|||
|---|---|---|---|
|
#18+
Тоже мысль, кстати. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2005, 15:50 |
|
||
|
Как лучше хранить номер телефона?
|
|||
|---|---|---|---|
|
#18+
2 Scott Tiger >О том и речь - зачем мне оверхед от наличия справочника, когда номер я в явном виде храню во всех таблицах. Но в таблице связки, условно, номера и абонента также будет хранится упакованный номер телефона и id абонента. Это я понял. Но номер сам по себе ничего не дает, все равно прийдется связывать журнал с чем-то еще. Приведите пример отчета, в котором используется только номер и ничего больше. Врядли такой есть. А если есть, то это какя-то аналитика и этот же отчет можно построить по ID. Справочник будет все равно, в этом справочнике будет лежать информация о клиенте. Так зачем в таком случае сражиться с упаковкой номера телефона, не лучше ли сделать по-человечески без всей этой возни. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2005, 02:03 |
|
||
|
Как лучше хранить номер телефона?
|
|||
|---|---|---|---|
|
#18+
Именно для OLTP работы хранить распакованный номер в справочнике и его ИД накладно. Для того чтобы вставить запись в журнал о чем-либо связанном с номером, в одном случае необходимо дернуть справочник(ИД фактически вычисляется по таблице), а в другом ИД можно вычислить алгебраически. Для отчета, да, подключаете справочник и дергаете доп. инфу о номере, а для банального поиска номера в журнале или его вставки в журнал - не надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2005, 14:55 |
|
||
|
Как лучше хранить номер телефона?
|
|||
|---|---|---|---|
|
#18+
andrushok2 Тигренок Петрик На шпагах, господа, на шпагах, но не на булавках Тартарен из Тараскона (с). Обсуждение техницких проблем перерастаеть в драку, однако... Хотя, я смысла в упаковывании такой мелочи, как телефонные номера - не вижу, не убедили 2 Гость из тьмы ... открой личико! Петруха (с) Присоединяюсь к Тигренку с сей просьбой. 1. Он не Тигренок, он гольфист. 2. Это, что-ли, называется - "открытое личико" ? Информация об авторе: Scott Tiger E-Mail: скрыт URL: ICQ: Откуда: Интересы: Работа: Информация: Я тебя люблю Сообщений: 4023 Зарегистрирован: 24 декабря 2002, 00:44 Последнее сообщение: сегодня, 11:07 (0 дней 8 часов 20 минут назад) Сообщений в день: 5,1643 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2005, 19:30 |
|
||
|
Как лучше хранить номер телефона?
|
|||
|---|---|---|---|
|
#18+
Хранить 5 байт: 1 - число нулей в начале (до 255 нулей). 2,3,4,5 - число, следующее за нулями. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2011, 20:14 |
|
||
|
Как лучше хранить номер телефона?
|
|||
|---|---|---|---|
|
#18+
analiza, ну ты и некромант! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2011, 22:25 |
|
||
|
Как лучше хранить номер телефона?
|
|||
|---|---|---|---|
|
#18+
автор, как там биллинг? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2011, 16:20 |
|
||
|
Как лучше хранить номер телефона?
|
|||
|---|---|---|---|
|
#18+
egorychanaliza, ну ты и некромант! Мы СУБД небольшую делали на С++, она хранила сотни МЛН простых записей в 10 гигах ОЗУвия: один байт в записи сэкономил - несколько сот метров освободилось. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2011, 17:15 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=37348890&tid=1541333]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
34ms |
get topic data: |
12ms |
get forum data: |
4ms |
get page messages: |
93ms |
get tp. blocked users: |
2ms |
| others: | 254ms |
| total: | 433ms |

| 0 / 0 |
