FUDforum
Fast Uncompromising Discussions. FUDforum will get your users talking.

Home » Imported messages » comp.lang.php » Is spl_object_hash unique in the SQL sense? Can it be used as a unique SQL db column?
Show: Today's Messages :: Polls :: Message Navigator
Switch to threaded view of this topic Create a new topic Submit Reply
Is spl_object_hash unique in the SQL sense? Can it be used as a unique SQL db column? [message #178373] Tue, 12 June 2012 00:16 Go to next message
kurtk(at)pobox(dot)com is currently offline  kurtk(at)pobox(dot)com
Messages: 10
Registered: May 2012
Karma: 0
Junior Member
Does anyone know definitely whether the results of spl_object_hash be safely used as a unique database column?
Re: Is spl_object_hash unique in the SQL sense? Can it be used as a unique SQL db column? [message #178374 is a reply to message #178373] Tue, 12 June 2012 00:24 Go to previous messageGo to next message
Jerry Stuckle is currently offline  Jerry Stuckle
Messages: 2598
Registered: September 2010
Karma: 0
Senior Member
On 6/11/2012 8:16 PM, kurtk(at)pobox(dot)com wrote:
> Does anyone know definitely whether the results of spl_object_hash be safely used as a unique database column?

No, hashes can never guaranteed to be unique.

--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstucklex(at)attglobal(dot)net
==================
Re: Is spl_object_hash unique in the SQL sense? Can it be used as a unique SQL db column? [message #178386 is a reply to message #178374] Tue, 12 June 2012 18:47 Go to previous messageGo to next message
kurtk(at)pobox(dot)com is currently offline  kurtk(at)pobox(dot)com
Messages: 10
Registered: May 2012
Karma: 0
Junior Member
> No, hashes can never guaranteed to be unique.

I opted to use

md5(uniqid());

to create a unique key.
Re: Is spl_object_hash unique in the SQL sense? Can it be used as a unique SQL db column? [message #178388 is a reply to message #178386] Tue, 12 June 2012 19:06 Go to previous messageGo to next message
Jerry Stuckle is currently offline  Jerry Stuckle
Messages: 2598
Registered: September 2010
Karma: 0
Senior Member
On 6/12/2012 2:47 PM, kurtk(at)pobox(dot)com wrote:
>> No, hashes can never guaranteed to be unique.
>
> I opted to use
>
> md5(uniqid());
>
> to create a unique key.
>

Still not guaranteed to be unique. Hashes never are. But if you've
only got a few thousand items, the chances of a collision are slim.

This is why databases have sequence or auto-increment values.

--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstucklex(at)attglobal(dot)net
==================
Re: Is spl_object_hash unique in the SQL sense? Can it be used as a unique SQL db column? [message #178389 is a reply to message #178386] Tue, 12 June 2012 19:26 Go to previous messageGo to next message
Peter H. Coffin is currently offline  Peter H. Coffin
Messages: 245
Registered: September 2010
Karma: 0
Senior Member
On Tue, 12 Jun 2012 11:47:04 -0700 (PDT), kurtk(at)pobox(dot)com wrote:
>> No, hashes can never guaranteed to be unique.
>
> I opted to use
>
> md5(uniqid());
>
> to create a unique key.

Still not guaranteed to be unique. You've even got a defined 13-hexdigit
space thing what you're hashing. Which means as soon as you've got more
than 4,503,599,627,370,495 entries, you are GUARANTEED a collision. That
seems like a lot, but you're down to a one in a billion shot at a
collision when you've got a few million entries. And everybody knows,
that one in a billion changes turn up nine times in ten.

--
48. I will treat any beast which I control through magic or technology
with respect and kindness. Thus if the control is ever broken, it
will not immediately come after me for revenge.
--Peter Anspach's list of things to do as an Evil Overlord
Re: Is spl_object_hash unique in the SQL sense? Can it be used as a unique SQL db column? [message #178394 is a reply to message #178389] Tue, 12 June 2012 23:34 Go to previous messageGo to next message
Jerry Stuckle is currently offline  Jerry Stuckle
Messages: 2598
Registered: September 2010
Karma: 0
Senior Member
On 6/12/2012 3:26 PM, Peter H. Coffin wrote:
> On Tue, 12 Jun 2012 11:47:04 -0700 (PDT), kurtk(at)pobox(dot)com wrote:
>>> No, hashes can never guaranteed to be unique.
>>
>> I opted to use
>>
>> md5(uniqid());
>>
>> to create a unique key.
>
> Still not guaranteed to be unique. You've even got a defined 13-hexdigit
> space thing what you're hashing. Which means as soon as you've got more
> than 4,503,599,627,370,495 entries, you are GUARANTEED a collision. That
> seems like a lot, but you're down to a one in a billion shot at a
> collision when you've got a few million entries. And everybody knows,
> that one in a billion changes turn up nine times in ten.
>

Peter,

I haven't figured out the exact numbers, but I suspect it's much less
than one in a billion to have a 50-50 chance.

After all - it only takes 24 people to have a 50-50 chance two of them
have the same birthday.

Odds go down quite a bit more quickly than you think!

--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstucklex(at)attglobal(dot)net
==================
Re: Is spl_object_hash unique in the SQL sense? Can it be used as a unique SQL db column? [message #178396 is a reply to message #178386] Wed, 13 June 2012 11:09 Go to previous messageGo to next message
Captain Paralytic is currently offline  Captain Paralytic
Messages: 204
Registered: September 2010
Karma: 0
Senior Member
On Jun 12, 7:47 pm, "ku...@pobox.com" <ku...@pobox.com> wrote:
>> No, hashes can never guaranteed to be unique.
>
> I opted to use
>
>   md5(uniqid());
>
> to create a unique key.

Why bother hashing it, why not just use the uniqid() value directly?
Re: Is spl_object_hash unique in the SQL sense? Can it be used as a unique SQL db column? [message #178397 is a reply to message #178396] Wed, 13 June 2012 11:40 Go to previous messageGo to next message
Goran is currently offline  Goran
Messages: 38
Registered: January 2011
Karma: 0
Member
On 13.6.2012 13:09, Captain Paralytic wrote:
> On Jun 12, 7:47 pm, "ku...@pobox.com" <ku...@pobox.com> wrote:
>>> No, hashes can never guaranteed to be unique.
>>
>> I opted to use
>>
>> md5(uniqid());
>>
>> to create a unique key.
>
> Why bother hashing it, why not just use the uniqid() value directly?

uniqid() is not truly unique either:D Only truly unique value is the one
generated by DB (if we are talking about DB data).
Re: Is spl_object_hash unique in the SQL sense? Can it be used as a unique SQL db column? [message #178457 is a reply to message #178397] Tue, 19 June 2012 10:32 Go to previous message
Captain Paralytic is currently offline  Captain Paralytic
Messages: 204
Registered: September 2010
Karma: 0
Senior Member
On Jun 13, 12:40 pm, Goran <go...@nospam.com> wrote:
> On 13.6.2012 13:09, Captain Paralytic wrote:
>
>> On Jun 12, 7:47 pm, "ku...@pobox.com" <ku...@pobox.com> wrote:
>>>> No, hashes can never guaranteed to be unique.
>
>>> I opted to use
>
>>>   md5(uniqid());
>
>>> to create a unique key.
>
>> Why bother hashing it, why not just use the uniqid() value directly?
>
> uniqid() is not truly unique either:D Only truly unique value is the one
> generated by DB (if we are talking about DB data).

Err I know that! but hashing it actually REDUCES it's uniqueness.
  Switch to threaded view of this topic Create a new topic Submit Reply
Previous Topic: Best practice, (secure), to save session data?
Next Topic: runkit
Goto Forum:
  

-=] Back to Top [=-
[ Syndicate this forum (XML) ] [ RSS ]

Current Time: Sun Nov 24 11:19:04 GMT 2024

Total time taken to generate the page: 0.03089 seconds