Как хранить и синхронизировать большой список строк - PullRequest
3 голосов
/ 08 апреля 2010

У меня есть большая таблица базы данных в SQLExpress для Windows с определенной областью интереса 'code'.

У меня есть веб-сервер Apache с MySQL в Linux.Веб-приложение на коробке Linux нуждается в доступе к списку всех кодов.Единственное, для чего он будет использовать этот список, - это проверка на наличие заданного кода.

Использование сервера Linux для обращения к серверу Windows нецелесообразно, поскольку сервер Windows находится за офисным интернет-соединением NAT'ed.и это не всегда может быть доступно.Я установил его так, чтобы сервер Windows передавал список кодов на веб-сервер с помощью простого запроса HTTP POST.Однако на данный момент я не реализовал хранение кодов на коробке Linux.

Должен ли я хранить их в таблице MySQL с одним полем «код»? Тогда я получаюбыстрый поиск по индексу O (1), однако, я думаю, что проблема синхронизации - учитывая обновленный список кодов, выдвинутый из окна Windows, как мне оптимально синхронизировать список с базой данных?TRUNCATE, затем INSERT?

Стоит ли хранить их в плоском файле? Тогда у меня есть O (n) время поиска, а не O (1).Кроме того, дополнительные издержки при постоянном времени тоже будут, поскольку я буду обрабатывать файл в Ruby.Однако синхронизация проста - просто замените файл.

ОБНОВЛЕНИЕ

Другой подход: Злоупотребление файловой системой : Дан код, скажем "ABCDEF", сгенерируйте путь типа" A / AB / ABC / ABCDEF "и" коснитесь "файла там.Я думаю, что мне нравится этот подход больше всего. Это плохая идея?

1 Ответ

1 голос
/ 09 апреля 2010

Во-первых, если у вашего веб-приложения есть постоянство, просто добавьте коды в текущее хранилище постоянных данных.(проще)

Но это зависит от размера вашего списка кодов.Так как вы можете HTTP POST-коды, при сохранении в виде плоского файла он не кажется большим гигабайтом.

Таким образом, если ваш плоский файл занимает несколько МБ (или несколько тысяч кодов), перейдитедля MySQL.Все, что меньше, чем 1 МБ, на мой взгляд, было бы излишним для использования сервера базы данных.

Итак, если у вас небольшой файл: сделайте его плоским.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...