使用guids作为标识字段而不是自动递增整数时,是否更容易实现域驱动设计?使用guids,您无需跳转到数据库即可获得实际值.
在我正在研究的项目中,如果我可以对guid的内存列表进行排序并与这些相同guid命令的SQL服务器表进行比较,那将是很好的.不幸的是,当SQL Server返回有序列表时,订单不会立即显现.
在内存列表中对此进行排序的最佳方法是什么,以便顺序与SQL Server返回的顺序相同?
例如,查询" SELECT ID FROM TABLE1 ORDER BY ID"返回:
A46030EC-BF3A-4F7C-88CC-00117DBC1A52
159A0A9D-18B7-4D6C-ABB3-005FAB666D91
3C58CFC5-1829-481C-9686-007CE71132B8
15A96D5F-DAFB-4EF1-9202-00B201CE5151
BCFDE733-0AB0-483F-B912-00BF93F6FA7E
6CC06558-7670-4879-9D3F-00CB3D3649BD
Run Code Online (Sandbox Code Playgroud)
为了这个问题,我假设我有一个包含上面guid值的字符串数组,但是按照以下顺序:
159A0A9D-18B7-4D6C-ABB3-005FAB666D91
15A96D5F-DAFB-4EF1-9202-00B201CE5151
6CC06558-7670-4879-9D3F-00CB3D3649BD
8A9325AF-A84E-4BDB-AFA8-C9D09D7FC064
A46030EC-BF3A-4F7C-88CC-00117DBC1A52
BCFDE733-0AB0-483F-B912-00BF93F6FA7E
Run Code Online (Sandbox Code Playgroud)
我想看到我在SQL查询中缺少一个,并且有一个SQL查询没有的查询.最快的方法显然是将两个列表以相同的方式排序,但我不想执行诸如" SELECT ID FROM TABLE1 ORDER BY cast(ID as varchar(100))"之类的查询,而是希望在Delphi端修复排序.
我必须在多台机器上存储许多 GB 的数据。文件由 Guid 唯一标识,一个文件只能托管在一台机器上。我想知道是否可以使用 Guid 作为分区键来确定我应该使用哪台机器来存储数据。如果是这样,我的分区函数是什么?
否则,我怎么能以这样的方式对我的数据进行分区,以使所有机器都获得非常相似的负载?
谢谢!
PS 我没有使用 Sql Server、Oracle 或任何其他数据库。这都是内部代码。PSS Guid 是使用 .NET 函数 Guid.NewGuid() 生成的。
我正在构建一个应用程序(CMS),用户可以上传文件,如图像.
我的问题是如何重命名这些文件以保存.
我认为生成GUID(System.GUID.NewGuid())来保存文件是最好的方法.在这种情况下我是对的还是存在更好的方法?
注意:生成的GUID示例:7c9e6679-944b-7425-40from-e07fc1f90ae7.在这种情况下,图像文件将是:7c9e6679-944b-7425-40from-e07fc1f90ae7.jpg
更新:
用户不会直接与文件名进行交互.
我正在尝试创建一些测试数据,并且我想向用户返回错误消息,传入的guid不是有效的格式 - 如何应用它的一个示例将是很好的
我正在使用的适当guid格式:
Guid user = new Guid("FF2214F8-5393-4B5A-B1CA-3620F85D9131");
Run Code Online (Sandbox Code Playgroud)
我传入测试的无效guid,并希望向用户返回一条消息,通知而不是破坏:
Guid user2 = new Guid("UserName");
Run Code Online (Sandbox Code Playgroud)
我用来传入的方法:
public void UserName(user2)
{
....
}
Run Code Online (Sandbox Code Playgroud) 我正在构建一个应用程序,通过ftp和XML文件将数据从SQL服务器传输到非现场位置.
我正在通过查询为每个文件构建XML数据FOR XML PATH('path'), TYPE.
我将使用a GUID生成文件名以及用作文件中的标识符,目前我的SQL获取表如下(简化):
SELECT LVL1.inv_account_no
, LVL1.cus_postcode
, CONVERT(varchar(255),NEWID()) + '.xml' as FileName
, (SELECT (SELECT CONVERT(varchar(255),NEWID()) FOR XML PATH('ident'), TYPE), (
SELECT.... [rest of very long nested select code for generating XML]
Run Code Online (Sandbox Code Playgroud)
这给了我:
Account Postcode FileName xCol
AD0001 B30 3HX 2DF21466-2DA3-4D62-8B9B-FC3DF7BD1A00 <ident>656700EA-8FD5-4936-8172-0135DC49D200</ident>
AS0010 NN12 8TN 58339997-8271-4D8C-9C55-403DE98F06BE <ident>78F8078B-629E-4906-9C6B-2AE21782DC1D</ident>
Run Code Online (Sandbox Code Playgroud)
每行/使用的基本不同的GUID NEWID().
有没有办法可以在不增加游标或进行两次更新的情况下将相同的GUID插入到两列中?
为什么这个VBA函数会在字符串末尾打印出随机垃圾?
Public Function GenGuid() As String
Dim TypeLib As Object
Dim Guid As String
Set TypeLib = CreateObject("Scriptlet.TypeLib")
Guid = TypeLib.Guid
' format is {24DD18D4-C902-497F-A64B-28B2FA741661}
Guid = Replace(Guid, "{", "")
Guid = Replace(Guid, "}", "")
'Guid = Replace(Guid, "-", "")
GenGuid = Guid
End Function
print genguid()
816BF7CB-68B9-4D6B-855B-1273F22063DB 6
print genguid()
53664789-B0CD-422C-87B4-8928D93E5078
print genguid()
FDD8ABDE-41F1-45E0-8330-9BA6161873BE i
Run Code Online (Sandbox Code Playgroud)
Excel 2007
TL; DR: DocumentDB自动生成的ID应该是GUID还是UUID,实际上有区别吗?如果它们是UUID,那么UUID的哪个变体/版本?
背景:如果您没有提供ID,某些DocumentDB客户端库将自动为您生成ID.我已经看到它在Azure博客中提到并且在几个 相关 问题中生成的ID是GUID.我知道有一些关于GUID是否是UUID的讨论,有很多人说它们是.
问题:但是,我注意到DocumentDB自动生成的一些ID不遵循UUID RFC,它只允许"version"半字节(Vin xxxxxxxx-xxxx-Vxxx-xxxx-xxxxxxxxxxxx)中的数字1-5 .DocumentDB与该半字节的任何十六进制数字,例如生成的ID d981befd-d19b-ee48-35bd-c1b507d3ec4f,其版本半字节是第一e的ee48.
这可能取决于使用哪个客户端来创建文档.在我们的数据库DocumentDB,我们与第三组文件dde5,627a,fe95,等等.通过Collection.createDocument()使用选项调用,这些文档存储在存储过程中{'disableAutomaticIdGeneration': false}.我通过第三方DocumentDB Studio应用程序创建的其他文档始终具有4xxx第三个分组,这是一个有效的UUID版本.但是,我通过Azure门户创建的文档具有非标准的第三组b359.
问题:自动生成的DocumentDB ID应该是GUID还是UUID,实际上是否存在差异?如果是UUID,那么哪个变种?
我刚刚接管了大约2200张表的数据库。其中有2000多个没有聚集索引(有些根本没有索引)。
所有表都已配置为使用GUID作为唯一标识符。
仅查看查询计划,就可以看到发生了许多表扫描。大多数搜索使用uniqueidentifier进行搜索。
我想知道在GUID上具有聚集索引比根本不具有聚集索引是否更好。我想象在16字节列上的聚集索引将不可避免地导致碎片化。
我可以说可以聚集在其他列上,但是大多数搜索都倾向于通过GUIDS进行搜索或通过GUIDS进行联接。
任何建议都将受到欢迎。我从未见过那么多GUID !!
在一个接收java.util.UUID对象的Java方法中,我想将此对象显示为.NET / C#格式(CSUUID)的字符串。
目前,我只能以Java格式(JUUID)显示它:
static String GetStringFromUuid (java.util.UUID myUuid){
return myUuid.toString();
}
Run Code Online (Sandbox Code Playgroud)
电流输出:“ 46c7220b-1f25-0118-f013-03bd2c22d6b8”
所需的输出:“ 1f250118-220b-46c7-b8d6-222cbd0313f0”
内容:
UUID存储在MongoDB中,并通过Java ETL程序Talend(tMongoDBInput组件)进行检索。
在Java程序中,该方法已将UUID接收为java.util.UUID对象(我没有直接访问程序中的BinData的权限)。