Doktrini ORM: birincil kimlikleri oluşturmak için bir bilet sunucu kullanmanın en iyi yöntem?

0 Cevap php

Ben benzersiz 32bit INT kimlikleri dağıttığı için merkezi bir bilet sunucusu oluşturma sürecinde yaşıyorum. Ben varlık / tablo için bir parametre kabul benim uygulama içinde denebilecek bir işlev, örneğin var getPrimaryKey ('kullanıcı'). Ben bu blog yazısı aracılığı ile Flickr fikrim var:

http://code.flickr.com/blog/2010/02/08/ticket-servers-distributed-unique-primary-keys-on-the-cheap/

Biz sonunda birden fazla MySQL veritabanlarının aralarında bizim verileri Sharding olacak ve ben yukarı ve kavramının bir kanıtı olarak çalışan bu kodu almak istiyorum.

Benim soru Doktrin içinde bu işlevi kullanmak için en iyi yöntem olan ne? Açıkçası, yukarıdaki bilet sunucusunu kullanarak, benim Doktrin modellerin hiçbiri otomatik artan birincil anahtar içeren belirtmek gerekir.

Ben önce o veritabanına yeni bir kayıt ekleme benim getPrimaryKey yöntemi kullanarak birincil anahtarı almak olacak uzatabilirsiniz bir Doctrine_Model yöntem var mı? Eğer değilse, ben benim uygulama içinde başka bir yerden bu sorunu yaklaşıyor olmalı?

İdeal olarak, Doktrin ilişkileri gibi kullanırken yukarıdaki yöntemi kullanarak elde edilecek kimlikleri istiyorum:

$user = new User():  
$user->name = 'Bob';  
$user->Phonenumbers[]->number = '555-5555';  
$user->save();  

Ayrıca, bu senaryonun diğer tarafında belirli bir kırıkta veri seçiminde olduğunu. Benim şu anki düşünce gibi, her kırıkta (Shard başına satır az sayıda görmezden) yer alan anahtar aralıkları ana listesini korumak için:

Shard A user_id 1-1000
Shard B user_id 1001-2000
Shard C user_id 2001-3000

Sonra parçası almak ve muhtemelen o kırığa benim Doktrin bağlantı geçmek getShard gibi bir şey ($ Tablo_ismi, $ primary_key) çağırabilirsiniz. Belirli bir kullanıcı / varlık için ilgili veriler büyük olasılıkla bu yüzden birden fazla kırıkları kapsayan çok endişeli ilişkiler değilim aynı kırıkta ikamet edecek. Rağmen, bu bir olasılık olabilir, bu yüzden bu konuda herhangi bir yönlendirme büyük ölçüde de mutluluk duyacağız.

0 Cevap