Я беру удар в темноте, но ... вам нужно случайное значение, которое будет уникальным, но менее 16 байтов. Ваша лучшая ставка по-прежнему - GUID, который составляет всего 16 байт .... Вы хотите использовать буквенно-цифровые символы, так что ... некоторые варианты.
Используйте GUID, но закодируйте его base64 выглядит как 7QDBkvCA1 + B9K / U0vrQx1A, который составляет 22 байта, который все еще длиннее, чем собственный Guid ... но короче, чем типичное строковое представление.
См. Текстовое кодирование здесь: http://en.wikipedia.org/wiki/Globally_Unique_Identifier
Другим вариантом будет хэширование Guid, но вы потеряете часть уникальности, так каков ваш уровень допуска для неуникальных предметов?
==========
Если у вас есть один процесс, вставляющий в таблицу, вы можете использовать алгоритм HiLo и быть уверенным, что вам не нужно каждый раз обращаться к БД. Вы просто сохраните в памяти последнее старшее значение ... когда вы запустите процесс, вы попадете в базу данных, чтобы узнать, где вы остановились: Что такое алгоритм Hi / Lo?
Я все еще говорю, что Guid - ваша лучшая ставка .... 16 байт - это неплохо, и они будут такими же маленькими, как большинство буквенно-цифровых решений, которые вы придумали.