2009-04-01 3 views
4

Я создаю базу данных Объекты в своем приложении Java и пытаюсь рационализировать между использованием Integer или Long, как тип класса поля «id». Я использую Hibernate как свой ORM, который, в свою очередь, будет отображать это поле в столбец базы данных HSQLDB.HSQLDB Internals: Hibernate и Integer vs Long Ids

Моя борьба такова: Длинный, очевидно, больше и будет обрабатывать большее количество записей, но на очень низком уровне я знаю, что в прошлом (32-битные системы) уровень читаемости на уровне ОС был бы 32 бита в ширину. IE: Долгое чтение займет два прохода ... это правильное мышление?

Если я использую Long сегодня, мои запросы HSQLDB будут работать медленнее, чем если бы я использовал Integer?

IE: HSQLDB должен каким-то образом использовать несколько проходов чтения ... или использовать большую внутреннюю структуру ... или слишком добавить два столбца размера целого ... или что-то еще явно неидеальное? Или это как-то спорный момент с сегодняшней 64-битной обработкой - которая должна обрабатывать Long в одном чтении (Long - 64 бита)?

+0

Ваш вопрос замечательный, но даже лучше, когда он был обработан. –

ответ

3

Использовать длинный. Даже при использовании базы данных с памятью влияние производительности, скорее всего, не будет значительным по сравнению с остальной частью вашего приложения. Тем не менее, будет невероятным хлопотом вернуться и изменить приложение позже, если вы начнете заканчивать идентификаторы.

+0

Каковы ваши доказательства эффективности? Кажется, вы не совсем уверены. А как насчет влияния на размер базы данных? Я не уверен в HSQLDB, но в MySQL Hibernate делает длинные идентификаторы в BIGINT вместо целого, а BIGINT поставляется со стоимостью с точки зрения размера и скорости, как описано здесь: http://planet.mysql.com/entry/?id = 13825 –