Когда БОЛЬШОЙ, достаточно большой для базы данных? - PullRequest
2 голосов
/ 11 января 2011

Я занимаюсь разработкой Java-приложения, в основе которого лежит производительность. У меня есть список из примерно 40 000 «окончательных» объектов, у меня есть входные данные инициализации 40000 векторов. Эти данные остаются неизменными на протяжении всего прогона программы.

Я всегда выполняю поиск по одному свойству ID для получения правильных векторов. В настоящее время я использую HashMap над подвыборкой из 1000 векторов, но Я не уверен, что это будет масштабироваться до производства.

Когда БОЛЬШОЙ, на самом деле достаточно большой для использования БД? Еще одна вещь, БД SQLite - это жизнеспособный вариант, так как нет параллелизма, поэтому я предполагаю, что «порог» для использования БД, возможно, ниже.

Ответы [ 6 ]

4 голосов
/ 11 января 2011

Я думаю вы спрашиваете, будет ли HashMap с 40000 записей в порядке.Ответ - да, если у вас действительно недостаточно памяти, это должно быть абсолютно нормально.Если вы пишете приложение, чувствительное к производительности, то в любом случае размещение большого объема быстрой памяти на компьютере, на котором выполняется приложение, вероятно, будет эффективным способом повышения производительности.

Не будет многонакладные расходы для каждой записи HashMap, поэтому, если у вас достаточно места для хранения самих объектов в памяти, маловероятно, что накладные расходы карты вызовут проблему.

Есть ли причина, по которой вы можетепросто проверить это с разумным количеством данных?

Если у вас действительно нет требований больше, чем:

  • Считать данные при запуске
  • Поместить данныев карте с помощью одного идентификатора (нет необходимости в объединениях, запросах к различным полям, совпадениях подстрок и т. д.)
  • Извлечение данных из карты

... с использованием полноценныхбаза данных будет огромным количеством избыточного, IMO.

3 голосов
/ 11 января 2011

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

2 голосов
/ 11 января 2011

Вы можете начать БД всего с 100 (или меньше).Не существует общего правила, когда объем данных достаточно велик для хранения в базе данных.Лучше, если вы считаете, что лучше хранить эти данные в базе данных, если это принесет вам какую-либо прибыль (повышение производительности, более простое программирование, более гибкие возможности для ваших пользователей).

Когда выгоды превышают затраты на внедрение, поместите их в базу данных.

0 голосов
/ 15 января 2011

Один из вариантов, который вы можете рассмотреть, - это библиотека Oracle Berkeley DB Java Edition.Это простой файл JAR, который может читать / записывать данные в постоянное хранилище.Из-за небольшого размера и простоты использования он используется для приложений, работающих с небольшими или очень большими наборами данных.Он предназначен для связи с приложением, поэтому он встроен и не требует сложной установки клиент / сервер или стеков протоколов.

Что еще лучше, так это то, что он чрезвычайно масштабируем (что хорошо работает, если вы получаете большие наборы данных, чем вы ожидаете), очень быстр и поддерживает как API коллекций Java, так и API Direct Persistence Layer (POJO-лайк).Таким образом, вы можете легко использовать его с коллекциями Java.

Berkeley DB Java Edition был разработан специально для разработчиков Java-приложений.Он разработан, чтобы быть простым в использовании, легким с точки зрения требуемых ресурсов, но очень быстрым, масштабируемым и надежным.

Вы можете найти больше информации о Oracle Berkeley DB Java Edition здесь

С уважением,

Дейв

0 голосов
/ 12 января 2011

Нет такой вещи, как «достаточно большой для базы данных». Вопрос в том, достаточно ли преимуществ в использовании базы данных для преодоления затрат.

Сказав, что 40000 не является «большим» ;-) Если объекты не огромные или у вас нет сложных требований к запросам, я бы начал с реализации в памяти. Но если вы рассчитываете увеличить это число с течением времени, лучше использовать базу данных с самого начала.

0 голосов
/ 11 января 2011

Нет установленного размера для Коллекции против Базы данных.Это зависит от того, что вы хотите сделать с данными.Размер менее важен.

Вы можете иметь карту с миллиардом записей.

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