相关疑难解决方法(0)

我应该在公共API中使用UUID作为资源吗?

我正在构建一个SaaS应用程序,并希望公开与我当前数据存储实现无关的资源ID(Postgres自动增量ID).这些Stack Overflow帖子( 两个)表明创建本地唯一ID非常困难,我也可以使用UUID,这些UUID当然可以用几乎任何语言轻松安全地生成.

我对这种方法感到满意,但我想知道为什么我找不到大型SaaS /托管播放器的相同API?例如:

所以基本上没有人似乎使用UUID.有没有理由 - 这里没有发明,更聪明的内部ID算法或其他什么?在我的情况下,在没有任何内部算法的情况下,使用UUID最合适吗?

api rest

71
推荐指数
2
解决办法
1万
查看次数

在SQLite表中使用文本作为主键不好?

将文本作为SQLite数据库中的主键是不是很糟糕?我听说性能原因不好,这是真的吗?在这种情况下,rowid是否会被用作实际的主键?

database sqlite android primary-key rowid

23
推荐指数
3
解决办法
2万
查看次数

数据库设计和非数字主键的使用

我目前正在为客户和网站管理应用程序设计数据库表.我的问题是关于使用主键作为表的功能部分(并没有为每个表分配"ID"号).

例如,以下是目前为止数据库中的四个相关表,其中一个表使用传统的主键号,其他表使用唯一的名称作为主键:

--
-- website
--
CREATE TABLE IF NOT EXISTS `website` (
  `name` varchar(126) NOT NULL,
  `client_id` int(11) NOT NULL,
  `date_created` timestamp NOT NULL default CURRENT_TIMESTAMP,
  `notes` text NOT NULL,
  `website_status` varchar(26) NOT NULL,
  PRIMARY KEY  (`name`),
  KEY `client_id` (`client_id`),
  KEY `website_status` (`website_status`),
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- website_status
--
CREATE TABLE IF NOT EXISTS `website_status` (
  `name` varchar(26) NOT NULL,
  PRIMARY KEY  (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
INSERT INTO `website_status` (`name`) VALUES
('demo'),
('disabled'),
('live'),
('purchased'),
('transfered'); …
Run Code Online (Sandbox Code Playgroud)

sql database database-design primary-key primary-key-design

14
推荐指数
3
解决办法
1万
查看次数

字符串作为主键的性能损失?

使用字符串作为主键而不是bigints等会有什么性能损失?字符串比较比整数比较昂贵得多,但另一方面,我可以想象在内部DBMS将计算散列键以减少惩罚.

我工作的应用程序使用字符串作为几个表(MySQL)中的主键.改变这一点并非易事,我想知道可以通过哪些方式获得合理的工作.

mysql database primary-key

13
推荐指数
1
解决办法
3141
查看次数

从数据库中检索的实体与查询中的情况相同

我的数据库包含下表:

表:

country {
    code varchar(255) not null
        primary key
};
Run Code Online (Sandbox Code Playgroud)

类:

@Entity
public class Country {
    @Id
    @Column(name = "code")
    private String mCode;

    public String getCode() {
        return mCode;
    }

    public void setCode(String code) {
        mCode = code;
    }
}
Run Code Online (Sandbox Code Playgroud)

样本表行:

| code |
|------|
| USA  |
| UK   |
Run Code Online (Sandbox Code Playgroud)

当我使用以下CrudRepository检索国家/地区时:

public interface CountryRepository extends CrudRepository<Country, String> {
}
Run Code Online (Sandbox Code Playgroud)

第一种情况:

mRepository.findOne("USA")
Run Code Online (Sandbox Code Playgroud)

它将在我的休息api中给出以下结果:

{
  "code": "USA"
}
Run Code Online (Sandbox Code Playgroud)

第二种情况:

mRepository.findOne("UsA")
Run Code Online (Sandbox Code Playgroud)

它将在我的休息api中给出以下结果:

{
  "code": "UsA"
}
Run Code Online (Sandbox Code Playgroud)

第三种情况:

mRepository.findOne("Usa")
Run Code Online (Sandbox Code Playgroud)

它将在我的休息api中给出以下结果:

{
  "code": …
Run Code Online (Sandbox Code Playgroud)

java spring hibernate spring-data-jpa

6
推荐指数
1
解决办法
534
查看次数

Django 生成自定义 ID

我看到了这个答案,但还没有具体的答案。我想创建id以字母开头的自定义。当新记录进入数据库时​​,我想将其更改id为 A00001, .... A00002, .... A00010, ...A10000 等。id将始终在范围内,99999- 00001所以我该怎么做?

我的模型很简单:

class Custom(models.Model):
    id = models.AutoField(primary_key=True, editable=False)
Run Code Online (Sandbox Code Playgroud)

python django django-models

4
推荐指数
2
解决办法
8391
查看次数

一个带varchar(255)PRIMARY KEY的表会伤害到什么吗?

我知道这不是一个好主意,但我想仔细检查一下这不会像崩溃服务器那样疯狂.

CREATE TABLE [dbo].[Items](
    [Id] [nvarchar](255) NOT NULL PRIMARY KEY,
    [Value] [nvarchar](max) NOT NULL,
)
Run Code Online (Sandbox Code Playgroud)

知道关于这样的键如何与[int]键相比的细节会很有趣,但只是确认这不会伤害任何东西就足够了.

sql-server database-design sql-server-2008-r2 sqldatatypes

2
推荐指数
1
解决办法
3160
查看次数

数据库 - 字符串作为主键?

我用 Laravel 5 开发了一个应用程序,并在开发过程中使用了 sqlite。我想稍后切换到更快的东西。我想要一个字符串作为用户表的唯一标识符。这有什么问题吗?例如外键?或者自动递增整数没有区别?

php sqlite primary-key laravel

2
推荐指数
1
解决办法
5768
查看次数

MySQL - 主键的字符串比较速度

我有一个 MySQL 表,我希望我的主键是一个字符串。这个字符串可能会更长一些(数百个字符)。

一个非常常见的查询是INSERT ... ON DUPLICATE KEY UPDATE,这意味着 MySQL 必须经常检查主键是否已经存在于表中。如果这是使用天真的 strcmp 完成的,我想这可能需要很长时间,字符串越长。因此,手动散列字符串(或较短的字符串或某些其他数据类型)并将其用作我的主键会更好还是我可以直接使用长字符串?MySQL 是否在内部散列主键字符串?

mysql

1
推荐指数
1
解决办法
2458
查看次数

我应该使用字符串作为SEO的主要网站的主键吗?

你好.
我正在建立一个展示大量产品的网站.我希望URL对人类友好并针对搜索引擎进行优化,因此我希望将过滤产品反映在URL中.例如,用于过滤产品的可能URL路径将是

website.com/Type/Car/Country/Usa/Manufacturer/Ford/Year/2007

所以这是我的问题,因为我总是想弄清楚如何根据这些字符串过滤数据库,这是一个使用字符串作为主键绝对有意义的情况吗?
就性能而言.

我已经阅读了这个stackoverflow问题的答案
字符串作为SQL数据库中的主键
人们说它取决于字符串的大小和其他因素但在我看来,在这种情况下,因为我总是会'寻找'在不同表中的字符串中,该字符串是主要字符串是有意义的.另一种方法是将整数设置为主键,但我仍然会搜索非主字符串并从中找出主键.从我对数据库的理解来看,这是一个坏主意,因为它们以一种搜索主键的速度比搜索任何其他字段的方式存储数据.
我正在使用MS SQL Server 2005.谢谢.

database sql-server seo

0
推荐指数
2
解决办法
364
查看次数