2015-08-19 4 views
0

Там будет до 100k сущности в БД SQLite с следующей структурой:вставки уникальные объекты к БД SQLite

  • ID (числовой, ПК)
  • КЛЮЧ (Varchar, уникально/PK)
  • Другие поля, в основном varchars

У меня есть список около 100-1k объектов. Я хочу добавить в БД только те объекты, KEY которых нет в БД и показать список добавленных.

Пример

В качестве соответствующего примера можно рассмотреть что-то вроде этого: библиотека с книгами, как юридические лица. Каждая книга имеет глобальный уникальный номер ISBN (KEY) и уникальный идентификатор (ID) в каталоге библиотеки.
Некоторые люди приносят в библиотеку множество книг. Библиотека проверяет книги ISBN в каталоге, берет «новые» книги и шоу в список избранных книг.

Некоторые мысли, как это может быть достигнуто:

1) выбрать все ключи из БД, положить их в [хэш] набор в цикле проверить, что ключ от новых сущностей не существует в наборе.
2), как # 1, но вместо выбора всех клавиш, выбрать только ключи, которые присутствуют как в БД и список
3), в контрольной цикл существования объекта с дополнительным запросом на выборку
4) позволяют ограничения в БД, проверки существование за счет исключения отлова

Все они имеют свои собственные недостатки, я полагаю. Можете ли вы предложить что-то лучше?

На данный момент я прошу в основном о «лучших практиках», я считаю, что любой из подходов будет работать для моего случая без огромных проблем с производительностью (никаких реальных тестов на данный момент, я просто на этапе анализа), но как лучше ли это сделать?

Код будет на Java, я планирую использовать простые DAO с JDBC, но если кто-то предложит Hibernate в качестве альтернативного подхода, я передумаю свои мысли.

ответ

0

Ваши предлагаемые решения - все допустимые и возможные ситуации, хотя номера №1 и №4 редко бывают хорошими идеями. Число № 2 и № 3 - это решения, которые часто используются. Чтобы выбрать один из них, вам необходимо ответить на следующие вопросы:

  • Каков будет типичный вариант использования вашего приложения? (иногда вы просто получаете 1 новую книгу, вы всегда будете получать сотни книг одновременно, смешанные)
  • На основании каких показателей будет оцениваться этот код, для чего вы пытаетесь оптимизировать? (читаемость/ремонтопригодность, производительность и т. д.)

Основываясь на ответах на эти вопросы выше, вы можете выбрать # 2 или # 3.